- creat the LIBCMDLINE subsystem
authorStefan Metzmacher <metze@samba.org>
Sun, 22 Feb 2004 13:09:51 +0000 (13:09 +0000)
committerStefan Metzmacher <metze@samba.org>
Sun, 22 Feb 2004 13:09:51 +0000 (13:09 +0000)
  including readline and popt

- creat the CONFIG subsystem
  including param/* dynconfig.* and passdb/secrets.*

metze
(This used to be commit bfd7fd21c8e38c0065fc41dde10e863a169878c2)

source4/Makefile.in
source4/build/m4/rewrite.m4
source4/configure.in
source4/lib/cmdline/config.m4 [new file with mode: 0644]
source4/lib/popt_common.c [deleted file]
source4/lib/readline.c [deleted file]
source4/param/config.m4 [new file with mode: 0644]

index 8d67e2a44fca8f4caaef4183e867f8a8b2bfcf74..407dedcfbd997c2cffb3521f82dc55b63f1b7ea4 100644 (file)
@@ -22,9 +22,6 @@ LDSHFLAGS=@LDSHFLAGS@ @LDFLAGS@ @CFLAGS@
 PERL=@PERL@
 DYNEXP=@DYNEXP@
 
-TERMLDFLAGS=@TERMLDFLAGS@
-TERMLIBS=@TERMLIBS@
-
 VPATH=@srcdir@
 srcdir=@srcdir@
 builddir=@builddir@
@@ -112,6 +109,12 @@ LIBRPC_OBJS = @LIBRPC_OBJS@
 LIBSMB_OBJS = @LIBSMB_OBJS@
 
 LIBPOPT_OBJS = @LIBPOPT_OBJS@
+LIBPOPT_LIBS = @LIBPOPT_LIBS@
+
+LIBCMDLINE_OBJS = @LIBCMDLINE_OBJS@
+LIBCMDLINE_LIBS = @LIBCMDLINE_LIBS@
+
+CONFIG_OBJS = @CONFIG_OBJS@
 
 PROCESS_MODEL_OBJS = @PROCESS_MODEL_OBJS@
 PROCESS_MODEL_LIBS = @PROCESS_MODEL_LIBS@
@@ -137,15 +140,6 @@ TORTURE_RPC_OBJS = @TORTURE_RPC_OBJS@
 
 TORTURE_OBJS = @TORTURE_OBJS@
 
-
-READLINE_OBJ = lib/readline.o
-
-POPT_LIB_OBJ = lib/popt_common.o 
-
-PARAM_OBJ = param/loadparm.o param/params.o dynconfig.o
-
-SECRETS_OBJ = passdb/secrets.o
-
 SMBD_OBJ_MAIN = smbd/server.o
 
 SMBD_OBJ_SRV = smbd/process.o \
@@ -157,40 +151,40 @@ SMBD_OBJ_SRV =    smbd/process.o \
 
 
 SMBD_OBJ_BASE = $(PROCESS_MODEL_OBJS) $(SMBD_OBJ_SRV) \
-               $(PARAM_OBJ) $(SECRETS_OBJ)  \
-               $(LIBBASIC_OBJS) $(POPT_LIB_OBJ) $(LIBSMB_OBJS)
+               $(CONFIG_OBJS)  \
+               $(LIBBASIC_OBJS) $(LIBCMDLINE_OBJS) $(LIBSMB_OBJS)
 
 SMBD_OBJS = $(SMBD_OBJ_MAIN) $(SMBD_OBJ_BASE) $(LIBPOPT_OBJS)
-SMBD_LIBS = $(LIBS) $(SMB_LIBS) $(PROCESS_MODEL_LIBS) $(DCERPC_LIBS) $(AUTH_LIBS) $(PASSDB_LIBS) $(NTVFS_LIBS) $(LIBPOPT_LIBS)
+SMBD_LIBS = $(LIBS) $(LIBCMDLINE_LIBS) $(SMB_LIBS) $(PROCESS_MODEL_LIBS) $(DCERPC_LIBS) $(AUTH_LIBS) $(PASSDB_LIBS) $(NTVFS_LIBS) $(LIBPOPT_LIBS)
 
 CLIENT_OBJ1 = client/client.o client/clitar.o libcli/raw/clirewrite.o
 
-CLIENT_OBJ = $(CLIENT_OBJ1) $(PARAM_OBJ) $(LIBSMB_OBJS) $(SECRETS_OBJ) \
+CLIENT_OBJ = $(CLIENT_OBJ1) $(CONFIG_OBJS) $(LIBSMB_OBJS) \
             $(LIBBASIC_OBJS) \
-             $(READLINE_OBJ) $(POPT_LIB_OBJ) $(LIBPOPT_OBJS)
+             $(LIBCMDLINE_OBJS) $(LIBPOPT_OBJS)
 
-SMBTORTURE_OBJS = $(TORTURE_OBJS) $(SECRETS_OBJ) $(LIBSMB_OBJS) $(PARAM_OBJ) $(LIBBASIC_OBJS)
+SMBTORTURE_OBJS = $(TORTURE_OBJS) $(CONFIG_OBJS) $(LIBSMB_OBJS) $(LIBBASIC_OBJS)
 SMBTORTURE_LIBS = $(LIBS)
 
-GENTEST_OBJ = torture/gentest.o torture/torture_util.o $(LIBSMB_OBJS) $(PARAM_OBJ) \
-               $(LIBBASIC_OBJS) $(SECRETS_OBJ) libcli/raw/clirewrite.o
+GENTEST_OBJ = torture/gentest.o torture/torture_util.o $(LIBSMB_OBJS) $(CONFIG_OBJS) \
+               $(LIBBASIC_OBJS) libcli/raw/clirewrite.o
 
-MASKTEST_OBJ = torture/masktest.o $(LIBSMB_OBJS) $(PARAM_OBJ) \
-               $(LIBBASIC_OBJS) $(SECRETS_OBJ) libcli/raw/clirewrite.o
+MASKTEST_OBJ = torture/masktest.o $(LIBSMB_OBJS) $(CONFIG_OBJS) \
+               $(LIBBASIC_OBJS) libcli/raw/clirewrite.o
 
-LOCKTEST_OBJ = torture/locktest.o $(LIBSMB_OBJS) $(PARAM_OBJ) \
-               $(LIBBASIC_OBJS) $(SECRETS_OBJ) libcli/raw/clirewrite.o
+LOCKTEST_OBJ = torture/locktest.o $(LIBSMB_OBJS) $(CONFIG_OBJS) \
+               $(LIBBASIC_OBJS) libcli/raw/clirewrite.o
 
 NDRDUMP_OBJ = utils/ndrdump.o utils/rewrite.o \
-               $(LIBSMB_OBJS) $(PARAM_OBJ) $(LIBBASIC_OBJS) $(SECRETS_OBJ)
+               $(LIBSMB_OBJS) $(CONFIG_OBJS) $(LIBBASIC_OBJS)
 
 PROTO_OBJ = $(SMBD_OBJ_SRV) \
            $(SMBD_OBJ_MAIN) $(PROCESS_MODEL_OBJS) \
            $(LIBSMB_OBJS) \
            $(TORTURE_OBJS) \
-           $(PARAM_OBJ) $(SECRETS_OBJ) \
-           $(READLINE_OBJ) $(CLIENT_OBJ1) \
-           $(LIBBASIC_OBJS) $(POPT_LIB_OBJ)
+           $(CONFIG_OBJS) \
+           $(LIBCMDLINE_OBJS) $(CLIENT_OBJ1) \
+           $(LIBBASIC_OBJS)
 
 ######################################################################
 # now the rules...
@@ -311,7 +305,7 @@ bin/smbd@EXEEXT@: $(SMBD_OBJS) bin/.dummy
 
 bin/smbclient@EXEEXT@: $(CLIENT_OBJ) bin/.dummy
        @echo Linking $@
-       @$(CC) $(FLAGS) -o $@ $(CLIENT_OBJ) $(LDFLAGS) $(TERMLDFLAGS) $(TERMLIBS) $(LIBS)
+       @$(CC) $(FLAGS) -o $@ $(CLIENT_OBJ) $(LDFLAGS) $(LIBS) $(LIBCMDLINE_LIBS)
 
 bin/smbtorture@EXEEXT@: $(SMBTORTURE_OBJS) bin/.dummy
        @echo Linking $@
index e97c5037fb1f2323f11c71fcf88a5fecbb1f3702..6f18d171e3df04f0596b4e0889a5a598e9d98b75 100644 (file)
@@ -447,77 +447,6 @@ fi
 
 AC_FUNC_MEMCMP
 
-###############################################
-# Readline included by default unless explicitly asked not to
-test "${with_readline+set}" != "set" && with_readline=yes
-
-# test for where we get readline() from
-AC_MSG_CHECKING(whether to use readline)
-AC_ARG_WITH(readline,
-[  --with-readline[=DIR]   Look for readline include/libs in DIR (default=auto) ],
-[  case "$with_readline" in
-  yes)
-    AC_MSG_RESULT(yes)
-
-    AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
-    AC_CHECK_HEADERS(readline/history.h)
-
-    AC_CHECK_HEADERS(readline.h readline/readline.h,[
-      for termlib in ncurses curses termcap terminfo termlib tinfo; do
-       AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
-      done
-      AC_CHECK_LIB(readline, rl_callback_handler_install,
-       [TERMLIBS="-lreadline $TERMLIBS"
-       AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
-       break], [TERMLIBS=], $TERMLIBS)])
-    ;;
-  no)
-    AC_MSG_RESULT(no)
-    ;;
-  *)
-    AC_MSG_RESULT(yes)
-
-    # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
-    # alternate readline path
-    _ldflags=${LDFLAGS}
-    _cppflags=${CPPFLAGS}
-
-    # Add additional search path
-    LDFLAGS="-L$with_readline/lib $LDFLAGS"
-    CPPFLAGS="-I$with_readline/include $CPPFLAGS"
-
-    AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
-    AC_CHECK_HEADERS(readline/history.h)
-
-    AC_CHECK_HEADERS(readline.h readline/readline.h,[
-      for termlib in ncurses curses termcap terminfo termlib; do
-       AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
-      done
-      AC_CHECK_LIB(readline, rl_callback_handler_install,
-       [TERMLDFLAGS="-L$with_readline/lib"
-       TERMCPPFLAGS="-I$with_readline/include"
-       CPPFLAGS="-I$with_readline/include $CPPFLAGS"
-       TERMLIBS="-lreadline $TERMLIBS"
-       AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
-       break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
-
-    LDFLAGS=$_ldflags
-    ;;
-  esac],
-  AC_MSG_RESULT(no)
-)
-AC_SUBST(TERMLIBS)
-AC_SUBST(TERMLDFLAGS)
-
-# The readline API changed slightly from readline3 to readline4, so
-# code will generate warnings on one of them unless we have a few
-# special cases.
-AC_CHECK_LIB(readline, rl_completion_matches,
-            [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, 
-                       [Do we have rl_completion_matches?])],
-            [],
-            [$TERMLIBS])
-
 # The following test taken from the cvs sources
 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
index 1e88601d43cc7de69cff8bfe52f69a0b2fec86c7..a7fe7d9cdaa72d78fc4b80882833cf27c1c42796 100644 (file)
@@ -198,6 +198,8 @@ sinclude(nsswitch/config.m4)
 sinclude(lib/popt/config.m4)
 sinclude(lib/iconv.m4)
 sinclude(lib/basic.m4)
+sinclude(lib/cmdline/config.m4)
+sinclude(param/config.m4)
 sinclude(libcli/config.m4)
 sinclude(librpc/config.m4)
 sinclude(libcli/libsmb.m4)
diff --git a/source4/lib/cmdline/config.m4 b/source4/lib/cmdline/config.m4
new file mode 100644 (file)
index 0000000..6e9a8f4
--- /dev/null
@@ -0,0 +1,79 @@
+#################################################
+
+###############################################
+# Readline included by default unless explicitly asked not to
+test "${with_readline+set}" != "set" && with_readline=yes
+
+# test for where we get readline() from
+AC_MSG_CHECKING(whether to use readline)
+AC_ARG_WITH(readline,
+[  --with-readline[=DIR]   Look for readline include/libs in DIR (default=auto) ],
+[  case "$with_readline" in
+  yes)
+    AC_MSG_RESULT(yes)
+
+    AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
+    AC_CHECK_HEADERS(readline/history.h)
+
+    AC_CHECK_HEADERS(readline.h readline/readline.h,[
+      for termlib in ncurses curses termcap terminfo termlib tinfo; do
+       AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
+      done
+      AC_CHECK_LIB(readline, rl_callback_handler_install,
+       [TERMLIBS="-lreadline $TERMLIBS"
+       AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
+       break], [TERMLIBS=], $TERMLIBS)])
+    ;;
+  no)
+    AC_MSG_RESULT(no)
+    ;;
+  *)
+    AC_MSG_RESULT(yes)
+
+    # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
+    # alternate readline path
+    _ldflags=${LDFLAGS}
+    _cppflags=${CPPFLAGS}
+
+    # Add additional search path
+    LDFLAGS="-L$with_readline/lib $LDFLAGS"
+    CPPFLAGS="-I$with_readline/include $CPPFLAGS"
+
+    AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
+    AC_CHECK_HEADERS(readline/history.h)
+
+    AC_CHECK_HEADERS(readline.h readline/readline.h,[
+      for termlib in ncurses curses termcap terminfo termlib; do
+       AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
+      done
+      AC_CHECK_LIB(readline, rl_callback_handler_install,
+       [TERMLDFLAGS="-L$with_readline/lib"
+       TERMCPPFLAGS="-I$with_readline/include"
+       LDFLAGS="-L$with_readline/lib $LDFLAGS"
+       CPPFLAGS="-I$with_readline/include $CPPFLAGS"
+       TERMLIBS="-lreadline $TERMLIBS"
+       AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
+       break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
+
+    ;;
+  esac],
+  AC_MSG_RESULT(no)
+)
+
+# The readline API changed slightly from readline3 to readline4, so
+# code will generate warnings on one of them unless we have a few
+# special cases.
+AC_CHECK_LIB(readline, rl_completion_matches,
+            [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, 
+                       [Do we have rl_completion_matches?])],
+            [],
+            [$TERMLIBS])
+
+TMP_LIBCMDLINE_OBJS="lib/cmdline/readline.o lib/cmdline/popt_common.o"
+TMP_LIBCMDLINE_LIBS="$TERMLIBS"
+
+SMB_SUBSYSTEM(LIBCMDLINE,[],
+               [${TMP_LIBCMDLINE_OBJS}],
+               [],
+               [],
+               [${TMP_LIBCMDLINE_LIBS}])
diff --git a/source4/lib/popt_common.c b/source4/lib/popt_common.c
deleted file mode 100644 (file)
index 1b8e3bd..0000000
+++ /dev/null
@@ -1,334 +0,0 @@
-/* 
-   Unix SMB/CIFS implementation.
-   Common popt routines
-
-   Copyright (C) Tim Potter 2001,2002
-   Copyright (C) Jelmer Vernooij 2002,2003
-
-   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, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-/* Handle command line options:
- *             -d,--debuglevel 
- *             -s,--configfile 
- *             -O,--socket-options 
- *             -V,--version
- *             -l,--log-base
- *             -n,--netbios-name
- *             -W,--workgroup
- *             -i,--scope
- */
-
-extern pstring user_socket_options;
-extern BOOL AllowDebugChange;
-
-struct user_auth_info cmdline_auth_info;
-
-static void popt_common_callback(poptContext con, 
-                          enum poptCallbackReason reason,
-                          const struct poptOption *opt,
-                          const char *arg, const void *data)
-{
-       pstring logfile;
-       const char *pname;
-       
-       /* Find out basename of current program */
-       pname = strrchr_m(poptGetInvocationName(con),'/');
-
-       if (!pname)
-               pname = poptGetInvocationName(con);
-       else 
-               pname++;
-
-       if (reason == POPT_CALLBACK_REASON_PRE) {
-               pstr_sprintf(logfile, "%s/log.%s", dyn_LOGFILEBASE, pname);
-               lp_set_cmdline("log file", logfile);
-               return;
-       }
-
-       switch(opt->val) {
-       case 'd':
-               lp_set_cmdline("log level", arg);
-               break;
-
-       case 'V':
-               printf( "Version %s\n", SAMBA_VERSION_STRING );
-               exit(0);
-               break;
-
-       case 's':
-               if (arg) {
-                       pstrcpy(dyn_CONFIGFILE, arg);
-               }
-               break;
-
-       case 'l':
-               if (arg) {
-                       pstr_sprintf(logfile, "%s/log.%s", arg, pname);
-                       lp_set_cmdline("log file", logfile);
-               }
-               break;
-               
-       case 'W':
-               lp_set_cmdline("workgroup", arg);
-               break;
-               
-       case 'n':
-               lp_set_cmdline("netbios name", arg);
-               break;
-               
-       case 'i':
-               lp_set_cmdline("netbios scope", arg);
-               break;
-
-       case 'm':
-               lp_set_cmdline("max protocol", arg);
-               break;
-       }
-}
-
-struct poptOption popt_common_connection[] = {
-       { NULL, 0, POPT_ARG_CALLBACK, popt_common_callback },
-       { "socket-options", 'O', POPT_ARG_STRING, NULL, 'O', "socket options to use",
-         "SOCKETOPTIONS" },
-       { "netbiosname", 'n', POPT_ARG_STRING, NULL, 'n', "Primary netbios name", "NETBIOSNAME" },
-       { "workgroup", 'W', POPT_ARG_STRING, NULL, 'W', "Set the workgroup name", "WORKGROUP" },
-       { "scope", 'i', POPT_ARG_STRING, NULL, 'i', "Use this Netbios scope", "SCOPE" },
-       { "maxprotocol", 'm', POPT_ARG_STRING, NULL, 'm', "Set max protocol level", "MAXPROTOCOL" },
-       POPT_TABLEEND
-};
-
-struct poptOption popt_common_samba[] = {
-       { NULL, 0, POPT_ARG_CALLBACK|POPT_CBFLAG_PRE, popt_common_callback },
-       { "debuglevel", 'd', POPT_ARG_STRING, NULL, 'd', "Set debug level", "DEBUGLEVEL" },
-       { "configfile", 's', POPT_ARG_STRING, NULL, 's', "Use alternative configuration file", "CONFIGFILE" },
-       { "log-basename", 'l', POPT_ARG_STRING, NULL, 'l', "Basename for log/debug files", "LOGFILEBASE" },
-       { "version", 'V', POPT_ARG_NONE, NULL, 'V', "Print version" },
-       POPT_TABLEEND
-};
-
-struct poptOption popt_common_version[] = {
-       { NULL, 0, POPT_ARG_CALLBACK, popt_common_callback },
-       { "version", 'V', POPT_ARG_NONE, NULL, 'V', "Print version" },
-       POPT_TABLEEND
-};
-
-
-
-/****************************************************************************
- * get a password from a a file or file descriptor
- * exit on failure
- * ****************************************************************************/
-static void get_password_file(struct user_auth_info *a)
-{
-       int fd = -1;
-       char *p;
-       BOOL close_it = False;
-       pstring spec;
-       char pass[128];
-
-       if ((p = getenv("PASSWD_FD")) != NULL) {
-               pstrcpy(spec, "descriptor ");
-               pstrcat(spec, p);
-               sscanf(p, "%d", &fd);
-               close_it = False;
-       } else if ((p = getenv("PASSWD_FILE")) != NULL) {
-               fd = sys_open(p, O_RDONLY, 0);
-               pstrcpy(spec, p);
-               if (fd < 0) {
-                       fprintf(stderr, "Error opening PASSWD_FILE %s: %s\n",
-                                       spec, strerror(errno));
-                       exit(1);
-               }
-               close_it = True;
-       }
-
-       for(p = pass, *p = '\0'; /* ensure that pass is null-terminated */
-               p && p - pass < sizeof(pass);) {
-               switch (read(fd, p, 1)) {
-               case 1:
-                       if (*p != '\n' && *p != '\0') {
-                               *++p = '\0'; /* advance p, and null-terminate pass */
-                               break;
-                       }
-               case 0:
-                       if (p - pass) {
-                               *p = '\0'; /* null-terminate it, just in case... */
-                               p = NULL; /* then force the loop condition to become false */
-                               break;
-                       } else {
-                               fprintf(stderr, "Error reading password from file %s: %s\n",
-                                               spec, "empty password\n");
-                               exit(1);
-                       }
-
-               default:
-                       fprintf(stderr, "Error reading password from file %s: %s\n",
-                                       spec, strerror(errno));
-                       exit(1);
-               }
-       }
-       pstrcpy(a->password, pass);
-       if (close_it)
-               close(fd);
-}
-
-static void get_credentials_file(const char *file, struct user_auth_info *info) 
-{
-       XFILE *auth;
-       fstring buf;
-       uint16 len = 0;
-       char *ptr, *val, *param;
-
-       if ((auth=x_fopen(file, O_RDONLY, 0)) == NULL)
-       {
-               /* fail if we can't open the credentials file */
-               d_printf("ERROR: Unable to open credentials file!\n");
-               exit(-1);
-       }
-
-       while (!x_feof(auth))
-       {
-               /* get a line from the file */
-               if (!x_fgets(buf, sizeof(buf), auth))
-                       continue;
-               len = strlen(buf);
-
-               if ((len) && (buf[len-1]=='\n'))
-               {
-                       buf[len-1] = '\0';
-                       len--;
-               }
-               if (len == 0)
-                       continue;
-
-               /* break up the line into parameter & value.
-                * will need to eat a little whitespace possibly */
-               param = buf;
-               if (!(ptr = strchr_m (buf, '=')))
-                       continue;
-
-               val = ptr+1;
-               *ptr = '\0';
-
-               /* eat leading white space */
-               while ((*val!='\0') && ((*val==' ') || (*val=='\t')))
-                       val++;
-
-               if (strwicmp("password", param) == 0)
-               {
-                       pstrcpy(info->password, val);
-                       info->got_pass = True;
-               }
-               else if (strwicmp("username", param) == 0)
-                       pstrcpy(info->username, val);
-#if 0
-               else if (strwicmp("domain", param) == 0)
-                       set_global_myworkgroup(val);
-#endif
-               memset(buf, 0, sizeof(buf));
-       }
-       x_fclose(auth);
-}
-
-/* Handle command line options:
- *             -U,--user
- *             -A,--authentication-file
- *             -k,--use-kerberos
- *             -N,--no-pass
- */
-
-
-static void popt_common_credentials_callback(poptContext con, 
-                                                                                        enum poptCallbackReason reason,
-                                                                                        const struct poptOption *opt,
-                                                                                        const char *arg, const void *data)
-{
-       char *p;
-
-       if (reason == POPT_CALLBACK_REASON_PRE) {
-               cmdline_auth_info.use_kerberos = False;
-               cmdline_auth_info.got_pass = False;
-               pstrcpy(cmdline_auth_info.username, "GUEST");   
-
-               if (getenv("LOGNAME"))pstrcpy(cmdline_auth_info.username,getenv("LOGNAME"));
-
-               if (getenv("USER")) {
-                       pstrcpy(cmdline_auth_info.username,getenv("USER"));
-
-                       if ((p = strchr_m(cmdline_auth_info.username,'%'))) {
-                               *p = 0;
-                               pstrcpy(cmdline_auth_info.password,p+1);
-                               cmdline_auth_info.got_pass = True;
-                               memset(strchr_m(getenv("USER"),'%')+1,'X',strlen(cmdline_auth_info.password));
-                       }
-               }
-
-               if (getenv("PASSWD")) {
-                       pstrcpy(cmdline_auth_info.password,getenv("PASSWD"));
-                       cmdline_auth_info.got_pass = True;
-               }
-
-               if (getenv("PASSWD_FD") || getenv("PASSWD_FILE")) {
-                       get_password_file(&cmdline_auth_info);
-                       cmdline_auth_info.got_pass = True;
-               }
-
-               return;
-       }
-
-       switch(opt->val) {
-       case 'U':
-               {
-                       char *lp;
-
-                       pstrcpy(cmdline_auth_info.username,arg);
-                       if ((lp=strchr_m(cmdline_auth_info.username,'%'))) {
-                               *lp = 0;
-                               pstrcpy(cmdline_auth_info.password,lp+1);
-                               cmdline_auth_info.got_pass = True;
-                               memset(strchr_m(arg,'%')+1,'X',strlen(cmdline_auth_info.password));
-                       }
-               }
-               break;
-
-       case 'A':
-               get_credentials_file(arg, &cmdline_auth_info);
-               break;
-
-       case 'k':
-#ifndef HAVE_KRB5
-               d_printf("No kerberos support compiled in\n");
-               exit(1);
-#else
-               cmdline_auth_info.use_kerberos = True;
-               cmdline_auth_info.got_pass = True;
-#endif
-               break;
-       }
-}
-
-
-
-struct poptOption popt_common_credentials[] = {
-       { NULL, 0, POPT_ARG_CALLBACK|POPT_CBFLAG_PRE, popt_common_credentials_callback },
-       { "user", 'U', POPT_ARG_STRING, NULL, 'U', "Set the network username", "USERNAME" },
-       { "no-pass", 'N', POPT_ARG_NONE, &cmdline_auth_info.got_pass, True, "Don't ask for a password" },
-       { "kerberos", 'k', POPT_ARG_NONE, &cmdline_auth_info.use_kerberos, True, "Use kerberos (active directory) authentication" },
-       { "authentication-file", 'A', POPT_ARG_STRING, NULL, 'A', "Get the credentials from a file", "FILE" },
-       POPT_TABLEEND
-};
diff --git a/source4/lib/readline.c b/source4/lib/readline.c
deleted file mode 100644 (file)
index c5da88b..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-/* 
-   Unix SMB/CIFS implementation.
-   Samba readline wrapper implementation
-   Copyright (C) Simo Sorce 2001
-   Copyright (C) Andrew Tridgell 2001
-   
-   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, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-#ifdef HAVE_LIBREADLINE
-#  ifdef HAVE_READLINE_READLINE_H
-#    include <readline/readline.h>
-#    ifdef HAVE_READLINE_HISTORY_H
-#      include <readline/history.h>
-#    endif
-#  else
-#    ifdef HAVE_READLINE_H
-#      include <readline.h>
-#      ifdef HAVE_HISTORY_H
-#        include <history.h>
-#      endif
-#    else
-#      undef HAVE_LIBREADLINE
-#    endif
-#  endif
-#endif
-
-#ifdef HAVE_NEW_LIBREADLINE
-#  define RL_COMPLETION_CAST (rl_completion_func_t *)
-#else
-/* This type is missing from libreadline<4.0  (approximately) */
-#  define RL_COMPLETION_CAST
-#endif /* HAVE_NEW_LIBREADLINE */
-
-/****************************************************************************
- Display the prompt and wait for input. Call callback() regularly
-****************************************************************************/
-
-static char *smb_readline_replacement(const char *prompt, void (*callback)(void), 
-                               char **(completion_fn)(const char *text, int start, int end))
-{
-       fd_set fds;
-       static pstring line;
-       struct timeval timeout;
-       int fd = x_fileno(x_stdin);
-       char *ret;
-
-       do_debug("%s", prompt);
-
-       while (1) {
-               timeout.tv_sec = 5;
-               timeout.tv_usec = 0;
-
-               FD_ZERO(&fds);
-               FD_SET(fd,&fds);
-       
-               if (sys_select_intr(fd+1,&fds,NULL,NULL,&timeout) == 1) {
-                       ret = x_fgets(line, sizeof(line), x_stdin);
-                       return ret;
-               }
-               if (callback)
-                       callback();
-       }
-}
-
-/****************************************************************************
- Display the prompt and wait for input. Call callback() regularly.
-****************************************************************************/
-
-char *smb_readline(const char *prompt, void (*callback)(void), 
-                  char **(completion_fn)(const char *text, int start, int end))
-{
-#if HAVE_LIBREADLINE
-       if (isatty(x_fileno(x_stdin))) {
-               char *ret;
-
-               /* Aargh!  Readline does bizzare things with the terminal width
-               that mucks up expect(1).  Set CLI_NO_READLINE in the environment
-               to force readline not to be used. */
-
-               if (getenv("CLI_NO_READLINE"))
-                       return smb_readline_replacement(prompt, callback, completion_fn);
-
-               if (completion_fn) {
-                       /* The callback prototype has changed slightly between
-                       different versions of Readline, so the same function
-                       works in all of them to date, but we get compiler
-                       warnings in some.  */
-                       rl_attempted_completion_function = RL_COMPLETION_CAST completion_fn;
-               }
-
-               if (callback)
-                       rl_event_hook = (Function *)callback;
-               ret = readline(prompt);
-               if (ret && *ret)
-                       add_history(ret);
-               return ret;
-       } else
-#endif
-       return smb_readline_replacement(prompt, callback, completion_fn);
-}
-
-/****************************************************************************
- * return line buffer text
- ****************************************************************************/
-const char *smb_readline_get_line_buffer(void)
-{
-#if defined(HAVE_LIBREADLINE)
-       return rl_line_buffer;
-#else
-       return NULL;
-#endif
-}
-
-/****************************************************************************
- * set completion append character
- ***************************************************************************/
-void smb_readline_ca_char(char c)
-{
-#if defined(HAVE_LIBREADLINE)
-       rl_completion_append_character = c;
-#endif
-}
-
-
-/****************************************************************************
-history
-****************************************************************************/
-int cmd_history(void)
-{
-#if defined(HAVE_LIBREADLINE)
-       HIST_ENTRY **hlist;
-       int i;
-
-       hlist = history_list();
-       
-       for (i = 0; hlist && hlist[i]; i++) {
-               DEBUG(0, ("%d: %s\n", i, hlist[i]->line));
-       }
-#else
-       DEBUG(0,("no history without readline support\n"));
-#endif
-
-       return 0;
-}
diff --git a/source4/param/config.m4 b/source4/param/config.m4
new file mode 100644 (file)
index 0000000..b93886e
--- /dev/null
@@ -0,0 +1,4 @@
+#################################################
+
+SMB_SUBSYSTEM(CONFIG,[dynconfig.o],
+               [param/loadparm.o param/params.o passdb/secrets.o])
\ No newline at end of file