/*
 * mars-nwe-dosutils - NetWare/DOS utility tools.
 *
 * Copyright (C) 2026 Mario Fetka
 * Copyright (C) 1993,1996 Martin Stover, Marburg, Germany
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, see <http://www.gnu.org/licenses/>.
 */

/*
 * Purpose: NWDEBUG command implementation for changing/querying MARS-NWE debug settings.
 * Depends on: net.h, netcall.c requester helpers, ncpcall.c NCP debug helper, tools.c shared utility routines.
 */

#include "net.h"

static int usage(void)
{
  fprintf(stderr, "usage:\t%s NCPSERV|NWCONN|NWBIND level\n", funcname);
  fprintf(stderr, "\tlevel=0 .. 99\n" );
  return(-1);
}

int func_debug(int argc, char *argv[], int mode)
{
  uint8 s[200];
  int   module;
  int   level;
  int   result;
  if (argc < 3) return(usage());
  strmaxcpy(s, argv[1], sizeof(s) -1);
  upstr(s);
  if (!strcmp(s,      "NCPSERV")) module=NCPSERV;
  else if (!strcmp(s, "NWCONN" )) module=NWCONN;
  else if (!strcmp(s, "NWBIND" )) module=NWBIND;
  else return(usage());
  level = atoi(argv[2]);
  if (level < 0 || level > 99) return(usage());
  result = ncp17_02_set_debug_level(module, level);
  if (result < 0) {
    fprintf(stderr, "set debug failed\n");
    fprintf(stderr, "perhaps you did not enable FUNC_17_02_IS_DEBUG\n");
    fprintf(stderr, "in mars_nwe/config.h ?!");
  } else fprintf(stdout, "Debug level for %s changed from %d to %d\n",
             s, result, level);
  return(result < 0 ? result : 0);
}
