s3:lib: Move popt_common_credentials to separate file
authorChristof Schmitt <cs@samba.org>
Mon, 13 Aug 2018 22:39:08 +0000 (15:39 -0700)
committerAndreas Schneider <asn@cryptomilk.org>
Fri, 7 Sep 2018 15:26:14 +0000 (17:26 +0200)
This is only used by command line utilities and has additional
dependencies. Move to a separate file to contain the dependencies to the
command line tools.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=13465

Signed-off-by: Christof Schmitt <cs@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
16 files changed:
source3/client/client.c
source3/include/popt_common.h
source3/include/popt_common_cmdline.h [new file with mode: 0644]
source3/lib/popt_common.c
source3/lib/popt_common_cmdline.c [new file with mode: 0644]
source3/rpcclient/cmd_spoolss.c
source3/rpcclient/rpcclient.c
source3/rpcclient/wscript_build
source3/utils/net.c
source3/utils/regedit.c
source3/utils/smbcacls.c
source3/utils/smbcquotas.c
source3/utils/smbget.c
source3/utils/smbtree.c
source3/utils/wscript_build
source3/wscript_build

index fc6d9a31c5ba8be334fcfbfafd90925be7b880ed..e8faed55dc4af828ee55478f18bc949be2a7bb84 100644 (file)
@@ -23,7 +23,7 @@
 
 #include "includes.h"
 #include "system/filesys.h"
-#include "popt_common.h"
+#include "popt_common_cmdline.h"
 #include "rpc_client/cli_pipe.h"
 #include "client/client_proto.h"
 #include "client/clitar_proto.h"
index a8c778473e944eb74d92e002974b2c3d3161574c..e001a5369b7bc65102161314dae69751c2a1f162 100644 (file)
@@ -21,7 +21,6 @@
 #define _POPT_COMMON_H
 
 #include <popt.h>
-#include "auth_info.h"
 
 /* Common popt structures */
 extern struct poptOption popt_common_samba[];
@@ -41,19 +40,10 @@ extern const struct poptOption popt_common_dynconfig[];
 #define POPT_COMMON_CONNECTION { NULL, 0, POPT_ARG_INCLUDE_TABLE, popt_common_connection, 0, "Connection options:", NULL },
 #define POPT_COMMON_VERSION { NULL, 0, POPT_ARG_INCLUDE_TABLE, popt_common_version, 0, "Common samba options:", NULL },
 #define POPT_COMMON_CONFIGFILE { NULL, 0, POPT_ARG_INCLUDE_TABLE, popt_common_configfile, 0, "Common samba config:", NULL },
-#define POPT_COMMON_CREDENTIALS { NULL, 0, POPT_ARG_INCLUDE_TABLE, popt_common_credentials, 0, "Authentication options:", NULL },
 #define POPT_COMMON_DYNCONFIG { NULL, 0, POPT_ARG_INCLUDE_TABLE, \
     discard_const_p(poptOption, popt_common_dynconfig), 0, \
     "Build-time configuration overrides:", NULL },
 #define POPT_COMMON_DEBUGLEVEL { NULL, 0, POPT_ARG_INCLUDE_TABLE, popt_common_debuglevel, 0, "Common samba debugging:", NULL },
 #define POPT_COMMON_OPTION { NULL, 0, POPT_ARG_INCLUDE_TABLE, popt_common_option, 0, "Common samba commandline config:", NULL },
 
-struct user_auth_info *popt_get_cmdline_auth_info(void);
-void popt_free_cmdline_auth_info(void);
-
-void popt_common_credentials_set_ignore_missing_conf(void);
-void popt_common_credentials_set_delay_post(void);
-void popt_common_credentials_post(void);
-void popt_burn_cmdline_password(int argc, char *argv[]);
-
 #endif /* _POPT_COMMON_H */
diff --git a/source3/include/popt_common_cmdline.h b/source3/include/popt_common_cmdline.h
new file mode 100644 (file)
index 0000000..21130cf
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+   Unix SMB/CIFS implementation.
+   Common popt arguments
+   Copyright (C) Jelmer Vernooij       2003
+   Copyright (C) Christof Schmitt      2018
+
+   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 3 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/>.
+*/
+
+
+#ifndef _POPT_COMMON_CREDENTIALS_H
+#define _POPT_COMMON_CREDENTIALS_H
+
+#include "popt_common.h"
+
+extern struct poptOption popt_common_credentials[];
+#define POPT_COMMON_CREDENTIALS \
+       { \
+               NULL,                                           \
+               0,                                              \
+               POPT_ARG_INCLUDE_TABLE,                 \
+               popt_common_credentials,                        \
+               0,                                              \
+               "Authentication options:",                      \
+               NULL                                            \
+       },
+
+struct user_auth_info *popt_get_cmdline_auth_info(void);
+void popt_free_cmdline_auth_info(void);
+
+void popt_common_credentials_set_ignore_missing_conf(void);
+void popt_common_credentials_set_delay_post(void);
+void popt_common_credentials_post(void);
+void popt_burn_cmdline_password(int argc, char *argv[]);
+
+#endif
index 454884fbb5c5934ab5549d57adbfe9caa31293a7..11db080c82d7453b4d0cd1c4d9dbefd875a44000 100644 (file)
@@ -213,211 +213,3 @@ struct poptOption popt_common_option[] = {
        { "option",         0, POPT_ARG_STRING, NULL, OPT_OPTION, "Set smb.conf option from command line", "name=value" },
        POPT_TABLEEND
 };
-
-/* Handle command line options:
- *             -U,--user
- *             -A,--authentication-file
- *             -k,--use-kerberos
- *             -N,--no-pass
- *             -S,--signing
- *              -P --machine-pass
- *             -e --encrypt
- *             -C --use-ccache
- */
-
-static struct user_auth_info *cmdline_auth_info;
-
-struct user_auth_info *popt_get_cmdline_auth_info(void)
-{
-       return cmdline_auth_info;
-}
-void popt_free_cmdline_auth_info(void)
-{
-       TALLOC_FREE(cmdline_auth_info);
-}
-
-static bool popt_common_credentials_ignore_missing_conf;
-static bool popt_common_credentials_delay_post;
-
-void popt_common_credentials_set_ignore_missing_conf(void)
-{
-       popt_common_credentials_delay_post = true;
-}
-
-void popt_common_credentials_set_delay_post(void)
-{
-       popt_common_credentials_delay_post = true;
-}
-
-void popt_common_credentials_post(void)
-{
-       if (get_cmdline_auth_info_use_machine_account(cmdline_auth_info) &&
-           !set_cmdline_auth_info_machine_account_creds(cmdline_auth_info))
-       {
-               fprintf(stderr,
-                       "Failed to use machine account credentials\n");
-               exit(1);
-       }
-
-       set_cmdline_auth_info_getpass(cmdline_auth_info);
-
-       /*
-        * When we set the username during the handling of the options passed to
-        * the binary we haven't loaded the config yet. This means that we
-        * didnn't take the 'winbind separator' into account.
-        *
-        * The username might contain the domain name and thus it hasn't been
-        * correctly parsed yet. If we have a username we need to set it again
-        * to run the string parser for the username correctly.
-        */
-       reset_cmdline_auth_info_username(cmdline_auth_info);
-}
-
-static void popt_common_credentials_callback(poptContext con,
-                                       enum poptCallbackReason reason,
-                                       const struct poptOption *opt,
-                                       const char *arg, const void *data)
-{
-       if (reason == POPT_CALLBACK_REASON_PRE) {
-               struct user_auth_info *auth_info =
-                               user_auth_info_init(NULL);
-               if (auth_info == NULL) {
-                       fprintf(stderr, "user_auth_info_init() failed\n");
-                       exit(1);
-               }
-               cmdline_auth_info = auth_info;
-               return;
-       }
-
-       if (reason == POPT_CALLBACK_REASON_POST) {
-               bool ok;
-
-               ok = lp_load_client(get_dyn_CONFIGFILE());
-               if (!ok) {
-                       const char *pname = poptGetInvocationName(con);
-
-                       fprintf(stderr, "%s: Can't load %s - run testparm to debug it\n",
-                               pname, get_dyn_CONFIGFILE());
-                       if (!popt_common_credentials_ignore_missing_conf) {
-                               exit(1);
-                       }
-               }
-
-               load_interfaces();
-
-               set_cmdline_auth_info_guess(cmdline_auth_info);
-
-               if (popt_common_credentials_delay_post) {
-                       return;
-               }
-
-               popt_common_credentials_post();
-               return;
-       }
-
-       switch(opt->val) {
-       case 'U':
-               set_cmdline_auth_info_username(cmdline_auth_info, arg);
-               break;
-
-       case 'A':
-               set_cmdline_auth_info_from_file(cmdline_auth_info, arg);
-               break;
-
-       case 'k':
-#ifndef HAVE_KRB5
-               d_printf("No kerberos support compiled in\n");
-               exit(1);
-#else
-               set_cmdline_auth_info_use_krb5_ticket(cmdline_auth_info);
-#endif
-               break;
-
-       case 'S':
-               if (!set_cmdline_auth_info_signing_state(cmdline_auth_info,
-                               arg)) {
-                       fprintf(stderr, "Unknown signing option %s\n", arg );
-                       exit(1);
-               }
-               break;
-       case 'P':
-               set_cmdline_auth_info_use_machine_account(cmdline_auth_info);
-               break;
-       case 'N':
-               set_cmdline_auth_info_password(cmdline_auth_info, "");
-               break;
-       case 'e':
-               set_cmdline_auth_info_smb_encrypt(cmdline_auth_info);
-               break;
-       case 'C':
-               set_cmdline_auth_info_use_ccache(cmdline_auth_info, true);
-               break;
-       case 'H':
-               set_cmdline_auth_info_use_pw_nt_hash(cmdline_auth_info, true);
-               break;
-       }
-}
-
-/**
- * @brief Burn the commandline password.
- *
- * This function removes the password from the command line so we
- * don't leak the password e.g. in 'ps aux'.
- *
- * It should be called after processing the options and you should pass down
- * argv from main().
- *
- * @param[in]  argc     The number of arguments.
- *
- * @param[in]  argv[]   The argument array we will find the array.
- */
-void popt_burn_cmdline_password(int argc, char *argv[])
-{
-       bool found = false;
-       char *p = NULL;
-       int i, ulen = 0;
-
-       for (i = 0; i < argc; i++) {
-               p = argv[i];
-               if (strncmp(p, "-U", 2) == 0) {
-                       ulen = 2;
-                       found = true;
-               } else if (strncmp(p, "--user", 6) == 0) {
-                       ulen = 6;
-                       found = true;
-               }
-
-               if (found) {
-                       if (p == NULL) {
-                               return;
-                       }
-
-                       if (strlen(p) == ulen) {
-                               continue;
-                       }
-
-                       p = strchr_m(p, '%');
-                       if (p != NULL) {
-                               memset(p, '\0', strlen(p));
-                       }
-                       found = false;
-               }
-       }
-}
-
-struct poptOption popt_common_credentials[] = {
-       { NULL, 0, POPT_ARG_CALLBACK|POPT_CBFLAG_PRE|POPT_CBFLAG_POST,
-         (void *)popt_common_credentials_callback, 0, NULL },
-       { "user", 'U', POPT_ARG_STRING, NULL, 'U', "Set the network username", "USERNAME" },
-       { "no-pass", 'N', POPT_ARG_NONE, NULL, 'N', "Don't ask for a password" },
-       { "kerberos", 'k', POPT_ARG_NONE, NULL, 'k', "Use kerberos (active directory) authentication" },
-       { "authentication-file", 'A', POPT_ARG_STRING, NULL, 'A', "Get the credentials from a file", "FILE" },
-       { "signing", 'S', POPT_ARG_STRING, NULL, 'S', "Set the client signing state", "on|off|required" },
-       {"machine-pass", 'P', POPT_ARG_NONE, NULL, 'P', "Use stored machine account password" },
-       {"encrypt", 'e', POPT_ARG_NONE, NULL, 'e', "Encrypt SMB transport" },
-       {"use-ccache", 'C', POPT_ARG_NONE, NULL, 'C',
-        "Use the winbind ccache for authentication" },
-       {"pw-nt-hash", '\0', POPT_ARG_NONE, NULL, 'H',
-        "The supplied password is the NT hash" },
-       POPT_TABLEEND
-};
diff --git a/source3/lib/popt_common_cmdline.c b/source3/lib/popt_common_cmdline.c
new file mode 100644 (file)
index 0000000..57f77e0
--- /dev/null
@@ -0,0 +1,241 @@
+/*
+   Unix SMB/CIFS implementation.
+   Common popt routines only used by cmdline utils
+
+   Copyright (C) Tim Potter 2001,2002
+   Copyright (C) Jelmer Vernooij 2002,2003
+   Copyright (C) James Peach 2006
+   Copyright (C) Christof Schmitt 2018
+
+   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 3 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/>.
+*/
+
+/* Handle command line options:
+ *             -U,--user
+ *             -A,--authentication-file
+ *             -k,--use-kerberos
+ *             -N,--no-pass
+ *             -S,--signing
+ *             -P --machine-pass
+ *             -e --encrypt
+ *             -C --use-ccache
+ */
+
+#include "popt_common_cmdline.h"
+#include "includes.h"
+#include "auth_info.h"
+
+static struct user_auth_info *cmdline_auth_info;
+
+struct user_auth_info *popt_get_cmdline_auth_info(void)
+{
+       return cmdline_auth_info;
+}
+void popt_free_cmdline_auth_info(void)
+{
+       TALLOC_FREE(cmdline_auth_info);
+}
+
+static bool popt_common_credentials_ignore_missing_conf;
+static bool popt_common_credentials_delay_post;
+
+void popt_common_credentials_set_ignore_missing_conf(void)
+{
+       popt_common_credentials_delay_post = true;
+}
+
+void popt_common_credentials_set_delay_post(void)
+{
+       popt_common_credentials_delay_post = true;
+}
+
+void popt_common_credentials_post(void)
+{
+       if (get_cmdline_auth_info_use_machine_account(cmdline_auth_info) &&
+           !set_cmdline_auth_info_machine_account_creds(cmdline_auth_info))
+       {
+               fprintf(stderr,
+                       "Failed to use machine account credentials\n");
+               exit(1);
+       }
+
+       set_cmdline_auth_info_getpass(cmdline_auth_info);
+
+       /*
+        * When we set the username during the handling of the options passed to
+        * the binary we haven't loaded the config yet. This means that we
+        * didn't take the 'winbind separator' into account.
+        *
+        * The username might contain the domain name and thus it hasn't been
+        * correctly parsed yet. If we have a username we need to set it again
+        * to run the string parser for the username correctly.
+        */
+       reset_cmdline_auth_info_username(cmdline_auth_info);
+}
+
+static void popt_common_credentials_callback(poptContext con,
+                                       enum poptCallbackReason reason,
+                                       const struct poptOption *opt,
+                                       const char *arg, const void *data)
+{
+       if (reason == POPT_CALLBACK_REASON_PRE) {
+               struct user_auth_info *auth_info =
+                               user_auth_info_init(NULL);
+               if (auth_info == NULL) {
+                       fprintf(stderr, "user_auth_info_init() failed\n");
+                       exit(1);
+               }
+               cmdline_auth_info = auth_info;
+               return;
+       }
+
+       if (reason == POPT_CALLBACK_REASON_POST) {
+               bool ok;
+
+               ok = lp_load_client(get_dyn_CONFIGFILE());
+               if (!ok) {
+                       const char *pname = poptGetInvocationName(con);
+
+                       fprintf(stderr, "%s: Can't load %s - run testparm to debug it\n",
+                               pname, get_dyn_CONFIGFILE());
+                       if (!popt_common_credentials_ignore_missing_conf) {
+                               exit(1);
+                       }
+               }
+
+               load_interfaces();
+
+               set_cmdline_auth_info_guess(cmdline_auth_info);
+
+               if (popt_common_credentials_delay_post) {
+                       return;
+               }
+
+               popt_common_credentials_post();
+               return;
+       }
+
+       switch(opt->val) {
+       case 'U':
+               set_cmdline_auth_info_username(cmdline_auth_info, arg);
+               break;
+
+       case 'A':
+               set_cmdline_auth_info_from_file(cmdline_auth_info, arg);
+               break;
+
+       case 'k':
+#ifndef HAVE_KRB5
+               d_printf("No kerberos support compiled in\n");
+               exit(1);
+#else
+               set_cmdline_auth_info_use_krb5_ticket(cmdline_auth_info);
+#endif
+               break;
+
+       case 'S':
+               if (!set_cmdline_auth_info_signing_state(cmdline_auth_info,
+                               arg)) {
+                       fprintf(stderr, "Unknown signing option %s\n", arg );
+                       exit(1);
+               }
+               break;
+       case 'P':
+               set_cmdline_auth_info_use_machine_account(cmdline_auth_info);
+               break;
+       case 'N':
+               set_cmdline_auth_info_password(cmdline_auth_info, "");
+               break;
+       case 'e':
+               set_cmdline_auth_info_smb_encrypt(cmdline_auth_info);
+               break;
+       case 'C':
+               set_cmdline_auth_info_use_ccache(cmdline_auth_info, true);
+               break;
+       case 'H':
+               set_cmdline_auth_info_use_pw_nt_hash(cmdline_auth_info, true);
+               break;
+       }
+}
+
+/**
+ * @brief Burn the commandline password.
+ *
+ * This function removes the password from the command line so we
+ * don't leak the password e.g. in 'ps aux'.
+ *
+ * It should be called after processing the options and you should pass down
+ * argv from main().
+ *
+ * @param[in]  argc     The number of arguments.
+ *
+ * @param[in]  argv[]   The argument array we will find the array.
+ */
+void popt_burn_cmdline_password(int argc, char *argv[])
+{
+       bool found = false;
+       char *p = NULL;
+       int i, ulen = 0;
+
+       for (i = 0; i < argc; i++) {
+               p = argv[i];
+               if (strncmp(p, "-U", 2) == 0) {
+                       ulen = 2;
+                       found = true;
+               } else if (strncmp(p, "--user", 6) == 0) {
+                       ulen = 6;
+                       found = true;
+               }
+
+               if (found) {
+                       if (p == NULL) {
+                               return;
+                       }
+
+                       if (strlen(p) == ulen) {
+                               continue;
+                       }
+
+                       p = strchr_m(p, '%');
+                       if (p != NULL) {
+                               memset(p, '\0', strlen(p));
+                       }
+                       found = false;
+               }
+       }
+}
+
+struct poptOption popt_common_credentials[] = {
+       { NULL, 0, POPT_ARG_CALLBACK|POPT_CBFLAG_PRE|POPT_CBFLAG_POST,
+         (void *)popt_common_credentials_callback, 0, NULL },
+       { "user", 'U', POPT_ARG_STRING, NULL, 'U',
+         "Set the network username", "USERNAME" },
+       { "no-pass", 'N', POPT_ARG_NONE, NULL, 'N',
+         "Don't ask for a password" },
+       { "kerberos", 'k', POPT_ARG_NONE, NULL, 'k',
+         "Use kerberos (active directory) authentication" },
+       { "authentication-file", 'A', POPT_ARG_STRING, NULL, 'A',
+         "Get the credentials from a file", "FILE" },
+       { "signing", 'S', POPT_ARG_STRING, NULL, 'S',
+         "Set the client signing state", "on|off|required" },
+       {"machine-pass", 'P', POPT_ARG_NONE, NULL, 'P',
+        "Use stored machine account password" },
+       {"encrypt", 'e', POPT_ARG_NONE, NULL, 'e',
+        "Encrypt SMB transport" },
+       {"use-ccache", 'C', POPT_ARG_NONE, NULL, 'C',
+        "Use the winbind ccache for authentication" },
+       {"pw-nt-hash", '\0', POPT_ARG_NONE, NULL, 'H',
+        "The supplied password is the NT hash" },
+       POPT_TABLEEND
+};
index 1d24476e9a5e86b5bd06c421062718a42fcbb602..8d330afdeb0c7f8c5c561c4df1cf3ec4cf3393b3 100644 (file)
@@ -33,7 +33,7 @@
 #include "../libcli/security/security_descriptor.h"
 #include "../libcli/registry/util_reg.h"
 #include "libsmb/libsmb.h"
-#include "popt_common.h"
+#include "popt_common_cmdline.h"
 
 #define RPCCLIENT_PRINTERNAME(_printername, _cli, _arg) \
 { \
index b4e25e6e479222fc082c2eab1337a5d8a2f37652..f7e196226cff361103d13434f36c30a1926ccd6c 100644 (file)
@@ -21,7 +21,7 @@
 
 #include "includes.h"
 #include "../libcli/auth/netlogon_creds_cli.h"
-#include "popt_common.h"
+#include "popt_common_cmdline.h"
 #include "rpcclient.h"
 #include "../libcli/auth/libcli_auth.h"
 #include "../librpc/gen_ndr/ndr_lsa_c.h"
index c24a5670db93a8541d5a656fc3176c8b11c647cc..11a64f3248ad11dff1815bac58467cef4152a0d2 100644 (file)
@@ -25,7 +25,7 @@ bld.SAMBA3_BINARY('rpcclient',
                 ''',
                  deps='''
                  talloc
-                 popt_samba3
+                 popt_samba3_cmdline
                  pdb
                  libsmb
                  smbconf
index 69564f65232e8943b20b54e4ffe7a8761b5a6b2b..3c095d0bc4ad47cd40fc706b58cfd31efd42565b 100644 (file)
@@ -41,7 +41,7 @@
 /*****************************************************/
 
 #include "includes.h"
-#include "popt_common.h"
+#include "popt_common_cmdline.h"
 #include "utils/net.h"
 #include "secrets.h"
 #include "lib/netapi/netapi.h"
index 27bd6f8f2c2ceba125fe30f9afa9bb0348521846..20115ae16243c2460b473e59e9d53de9230f1cec 100644 (file)
@@ -18,7 +18,7 @@
  */
 
 #include "includes.h"
-#include "popt_common.h"
+#include "popt_common_cmdline.h"
 #include "lib/util/data_blob.h"
 #include "lib/registry/registry.h"
 #include "regedit.h"
index 0a5eeb31d0bd51b75163ba39f4127a9255faa66d..33eb78c41ec4c515147ad7176b1036e3084522cd 100644 (file)
@@ -22,7 +22,7 @@
 */
 
 #include "includes.h"
-#include "popt_common.h"
+#include "popt_common_cmdline.h"
 #include "rpc_client/cli_pipe.h"
 #include "../librpc/gen_ndr/ndr_lsa.h"
 #include "rpc_client/cli_lsarpc.h"
index 798b8b6f1778da1fb4e602f7e8c7926b3d295aa4..a4b1b8111a58f27f27d0120d5696633c8df10f14 100644 (file)
@@ -22,7 +22,7 @@
 */
 
 #include "includes.h"
-#include "popt_common.h"
+#include "popt_common_cmdline.h"
 #include "rpc_client/cli_pipe.h"
 #include "../librpc/gen_ndr/ndr_lsa.h"
 #include "rpc_client/cli_lsarpc.h"
index e1be42917fbe9dd43e0b57c84098e85e218277f6..37462fa131f775a642fee25fba91e3641eaea325 100644 (file)
@@ -18,7 +18,7 @@
 
 #include "includes.h"
 #include "system/filesys.h"
-#include "popt_common.h"
+#include "popt_common_cmdline.h"
 #include "libsmbclient.h"
 
 static int columns = 0;
index 3b539ef104553d8bfec1bbb8e3f643ae2185e283..fb0f165a18d735fd561ddc5a435f2c3563b91c8a 100644 (file)
@@ -20,7 +20,7 @@
 */
 
 #include "includes.h"
-#include "popt_common.h"
+#include "popt_common_cmdline.h"
 #include "rpc_client/cli_pipe.h"
 #include "../librpc/gen_ndr/ndr_srvsvc_c.h"
 #include "libsmb/libsmb.h"
index 93e6abaac0d25258ad7262fefee61434522f8491..67bb87e7a747465de3b62b470d1514a5e9e4c22b 100644 (file)
@@ -27,7 +27,7 @@ bld.SAMBA3_BINARY('smbtree',
                  smbconf
                  libsmb
                  msrpc3
-                 popt_samba3
+                 popt_samba3_cmdline
                  RPC_NDR_SRVSVC''')
 
 bld.SAMBA3_BINARY('smbpasswd',
@@ -52,7 +52,7 @@ bld.SAMBA3_BINARY('smbget',
                  source='smbget.c',
                  deps='''
                  talloc
-                 popt_samba3
+                 popt_samba3_cmdline
                  smbclient''')
 
 bld.SAMBA3_BINARY('nmblookup',
@@ -67,7 +67,7 @@ bld.SAMBA3_BINARY('smbcacls',
                  source='smbcacls.c ../lib/util_sd.c',
                  deps='''
                  talloc
-                 popt_samba3
+                 popt_samba3_cmdline
                  msrpc3
                  libcli_lsa3
                  krb5samba''')
@@ -76,7 +76,7 @@ bld.SAMBA3_BINARY('smbcquotas',
                  source='smbcquotas.c',
                  deps='''
                  talloc
-                 popt_samba3
+                 popt_samba3_cmdline
                  libsmb
                  msrpc3
                  libcli_lsa3''')
@@ -150,7 +150,9 @@ bld.SAMBA3_BINARY('samba-regedit',
                             regedit_wrap.c regedit_treeview.c
                             regedit_valuelist.c regedit_dialog.c
                             regedit_hexedit.c regedit_list.c""",
-                  deps='ncurses menu panel form registry smbconf popt_samba3',
+                  deps='''
+                  ncurses menu panel form registry smbconf popt_samba3_cmdline
+                  ''',
                   enabled=bld.env.build_regedit)
 
 bld.SAMBA3_BINARY('testparm',
@@ -217,7 +219,7 @@ bld.SAMBA3_BINARY('net',
                  netapi
                  addns
                  samba_intl
-                 popt_samba3
+                 popt_samba3_cmdline
                  pdb
                  libsmb
                  smbconf
index b532a3bec77282acbd5053587e152f5b2f5df8c9..d96c03078e1b3a9e4f672c2d0dd8070bacd8c853 100644 (file)
@@ -265,7 +265,12 @@ bld.SAMBA3_SUBSYSTEM('REG_FULL',
 
 bld.SAMBA3_LIBRARY('popt_samba3',
                    source='lib/popt_common.c',
-                   deps='popt samba-util util_cmdline',
+                   deps='popt samba-util smbconf',
+                   private_library=True)
+
+bld.SAMBA3_LIBRARY('popt_samba3_cmdline',
+                   source='lib/popt_common_cmdline.c',
+                   deps='popt_samba3 util_cmdline',
                    private_library=True)
 
 bld.SAMBA3_LIBRARY('util_cmdline',
@@ -1090,7 +1095,7 @@ bld.SAMBA3_BINARY('client/smbclient',
                         ''',
                  deps='''
                       talloc
-                      popt_samba3
+                      popt_samba3_cmdline
                       smbconf
                       ndr-standard
                       SMBREADLINE