diff options
-rw-r--r-- | source3/lib/popt_common.c | 58 |
1 files changed, 53 insertions, 5 deletions
diff --git a/source3/lib/popt_common.c b/source3/lib/popt_common.c index bbc17cb704..21ee94d2e6 100644 --- a/source3/lib/popt_common.c +++ b/source3/lib/popt_common.c @@ -3,6 +3,7 @@ Common popt routines Copyright (C) Tim Potter 2001,2002 + Copyright (C) Jelmer Vernooij 2002 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 @@ -21,29 +22,76 @@ #include "includes.h" -/* Handle -d,--debuglevel command line option */ +/* Handle command line options: + * -d,--debuglevel + * -s,--configfile + * -O,--socket-options + */ -static void debug_callback(poptContext con, +extern pstring user_socket_options; +extern BOOL AllowDebugChange; +extern pstring global_myname; + +static void popt_common_callback(poptContext con, enum poptCallbackReason reason, const struct poptOption *opt, const char *arg, const void *data) { - extern BOOL AllowDebugChange; - switch(opt->val) { case 'd': if (arg) { debug_parse_levels(arg); AllowDebugChange = False; } + break; + case 'V': + printf( "Version %s\n", VERSION ); + exit(0); + break; + + case 'O': + pstrcpy(user_socket_options,arg); + break; + + case 's': + pstrcpy(dyn_CONFIGFILE, arg); + break; + + case 'n': + pstrcpy(global_myname,arg); + strupper(global_myname); break; } } struct poptOption popt_common_debug[] = { - { NULL, 0, POPT_ARG_CALLBACK, debug_callback }, + { NULL, 0, POPT_ARG_CALLBACK, popt_common_callback }, { "debuglevel", 'd', POPT_ARG_STRING, NULL, 'd', "Set debug level", "DEBUGLEVEL" }, { 0 } }; + +struct poptOption popt_common_configfile[] = { + { NULL, 0, POPT_ARG_CALLBACK, popt_common_callback }, + { "configfile", 's', POPT_ARG_STRING, NULL, 's', "Use alternative configuration file" }, + { 0 } +}; + +struct poptOption popt_common_socket_options[] = { + { NULL, 0, POPT_ARG_CALLBACK, popt_common_callback }, + {"socket-options", 'O', POPT_ARG_STRING, NULL, 'O', "socket options to use" }, + { 0 } +}; + +struct poptOption popt_common_version[] = { + { NULL, 0, POPT_ARG_CALLBACK, popt_common_callback }, + {"version", 'V', POPT_ARG_NONE, NULL, 'V', "Print version" }, + { 0 } +}; + +struct poptOption popt_common_netbios_name[] = { + { NULL, 0, POPT_ARG_CALLBACK, popt_common_callback }, + {"netbiosname", 'n', POPT_ARG_STRING, NULL, 'n', "Primary netbios name"}, + { 0 } +}; |