Convert to popt
authorJelmer Vernooij <jelmer@samba.org>
Sat, 2 Nov 2002 00:44:19 +0000 (00:44 +0000)
committerJelmer Vernooij <jelmer@samba.org>
Sat, 2 Nov 2002 00:44:19 +0000 (00:44 +0000)
(This used to be commit 9ea7440ac4a3dbb98e34ccb8ee78e0bd782fa704)

source3/nmbd/nmbd.c

index 05ea4997d5fdb0dfdbd1ee25a1d45c426d012ecb..7aa4479c0f8e5863150ad2d7a58c8ab447d4cd22 100644 (file)
@@ -3,6 +3,7 @@
    NBT netbios routines and daemon - version 2
    Copyright (C) Andrew Tridgell 1994-1998
    Copyright (C) Jeremy Allison 1997-2002
+   Copyright (C) Jelmer Vernooij 2002 (Conversion to popt)
    
    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
@@ -655,40 +656,35 @@ static BOOL init_structs(void)
   return( True );
 }
 
-/**************************************************************************** **
- Usage on the program.
- **************************************************************************** */
-
-static void usage(char *pname)
-{
-
-  printf( "Usage: %s [-DaiohV] [-H lmhosts file] [-d debuglevel] [-l log basename]\n", pname );
-  printf( "       [-n name] [-p port] [-s configuration file]\n" );
-  printf( "\t-D                    Become a daemon (default)\n" );
-  printf( "\t-a                    Append to log file (default)\n" );
-  printf( "\t-i                    Run interactive (not a daemon)\n" );
-  printf( "\t-o                    Overwrite log file, don't append\n" );
-  printf( "\t-h                    Print usage\n" );
-  printf( "\t-V                    Print version\n" );
-  printf( "\t-H hosts file         Load a netbios hosts file\n" );
-  printf( "\t-d debuglevel         Set the debuglevel\n" );
-  printf( "\t-l log basename.      Basename for log/debug files\n" );
-  printf( "\t-n netbiosname.       Primary netbios name\n" );
-  printf( "\t-p port               Listen on the specified port\n" );
-  printf( "\t-s configuration file Configuration file name\n" );
-  printf( "\n");
-}
-
-
 /**************************************************************************** **
  main program
  **************************************************************************** */
- int main(int argc,char *argv[])
+ int main(int argc, const char *argv[])
 {
-  int opt;
-  extern char *optarg;
-  extern BOOL  append_log;
+
+  extern BOOL append_log;
   BOOL opt_interactive = False;
+  poptContext pc;
+   struct poptOption long_options[] = {
+         POPT_AUTOHELP
+       {"daemon", 'D', POPT_ARG_VAL, &is_daemon, True, "Become a daemon(default)" },
+       {"log-append", 'a', POPT_ARG_VAL, &append_log, True, "Append to log file" },
+       {"interactive", 'i', POPT_ARG_VAL, &opt_interactive, True, "Run interactive (not a daemon)" },
+       {"log-overwrite", 'o', POPT_ARG_VAL, &append_log, False, "Overwrite log file, don't append" },
+       {"hosts", 'H', POPT_ARG_STRING, dyn_LMHOSTSFILE, 'H', "Load a netbios hosts file"},
+       {"port", 'p', POPT_ARG_INT, &global_nmb_port, NMB_PORT, "Listen on the specified port" },
+       {NULL, 0, POPT_ARG_INCLUDE_TABLE, popt_common_debug },
+       {NULL, 0, POPT_ARG_INCLUDE_TABLE, popt_common_configfile },
+       /* Various obsolete options */
+       {NULL, 'N', POPT_ARG_NONE | POPT_ARGFLAG_DOC_HIDDEN },
+       {NULL, 'B', POPT_ARG_NONE | POPT_ARGFLAG_DOC_HIDDEN },
+       {NULL, 'I', POPT_ARG_NONE | POPT_ARGFLAG_DOC_HIDDEN },
+       {NULL, 'C', POPT_ARG_NONE | POPT_ARGFLAG_DOC_HIDDEN },
+       {NULL, 'G', POPT_ARG_NONE | POPT_ARGFLAG_DOC_HIDDEN },
+       { NULL }
+  };
+  extern BOOL  append_log;
+  int opt;
   pstring logfile;
 
   append_log = True;  /* Default, override with '-o' option. */
@@ -703,13 +699,6 @@ static void usage(char *pname)
   slprintf(logfile, sizeof(logfile)-1, "%s/log.nmbd", dyn_LOGFILEBASE);
   lp_set_logfile(logfile);
 
-  /* this is for people who can't start the program correctly */
-  while (argc > 1 && (*argv[1] != '-'))
-  {
-    argv++;
-    argc--;
-  }
-
   fault_setup((void (*)(void *))fault_continue );
 
   /* POSIX demands that signals are inherited. If the invoking process has
@@ -730,15 +719,12 @@ static void usage(char *pname)
 #if defined(SIGUSR2)
   BlockSignals(True, SIGUSR2);
 #endif
-
-  while( EOF != 
-         (opt = getopt( argc, argv, "Vaos:T:I:C:bAB:N:Rn:l:d:Dp:hSH:G:f:i" )) )
+  pc = poptGetContext(argv[0], argc, argv, long_options, 0);
+  
+  while((opt = poptGetNextOpt(pc)) != -1)
     {
       switch (opt)
         {
-        case 's':
-          pstrcpy(dyn_CONFIGFILE, optarg);
-          break;          
         case 'N':
         case 'B':
         case 'I':
@@ -746,54 +732,11 @@ static void usage(char *pname)
         case 'G':
           DEBUG(0,("Obsolete option '%c' used\n",opt));
           break;
-        case 'i':
-          opt_interactive = True;
-          break;
-        case 'H':
-          pstrcpy(dyn_LMHOSTSFILE, optarg);
-          break;
-        case 'n':
-          pstrcpy(global_myname,optarg);
-          strupper(global_myname);
-          break;
-        case 'l':
-          slprintf(logfile, sizeof(logfile)-1, "%s/log.nmbd", optarg);
-          lp_set_logfile(logfile);
-          break;
-        case 'a':
-          append_log = True;
-          break;
-        case 'o':
-          append_log = False;
-          break;
-        case 'D':
-          is_daemon = True;
-          break;
-        case 'd':
-          DEBUGLEVEL = atoi(optarg);
-          break;
-        case 'p':
-          global_nmb_port = atoi(optarg);
-          break;
-        case 'h':
-          usage(argv[0]);
-          exit(0);
-          break;
-        case 'V':
-         printf( "Version %s\n", VERSION );
-          exit(0);
-          break;
-        default:
-          if( !is_a_socket(0) )
-          {
-           DEBUG(0,("Incorrect program usage - is the command line correct?\n"));
-            usage(argv[0]);
-            exit(0);
-          }
-          break;
         }
     }
 
+  poptFreeContext(pc);
+
   setup_logging( argv[0], opt_interactive );
 
   reopen_logs();