summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorChristof Schmitt <cs@samba.org>2018-08-13 15:39:08 -0700
committerKarolin Seeger <kseeger@samba.org>2018-10-10 15:51:53 +0200
commitc247ae0169e572bc22f99a06e71cb0dc54260924 (patch)
tree61500e9a97e32dc12b4b50bee68fde643fd9587a /source3
parent7791f204c7158650e93eb46abb598141fc6f4d6d (diff)
downloadsamba-c247ae0169e572bc22f99a06e71cb0dc54260924.tar.gz
s3:lib: Move popt_common_credentials to separate file
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> (cherry picked from commit b7464fd89bc22b71c82bbaa424bcbfcf947db651)
Diffstat (limited to 'source3')
-rw-r--r--source3/client/client.c2
-rw-r--r--source3/include/popt_common.h10
-rw-r--r--source3/include/popt_common_cmdline.h47
-rw-r--r--source3/lib/popt_common.c208
-rw-r--r--source3/lib/popt_common_cmdline.c241
-rw-r--r--source3/rpcclient/cmd_spoolss.c2
-rw-r--r--source3/rpcclient/rpcclient.c2
-rw-r--r--source3/rpcclient/wscript_build2
-rw-r--r--source3/utils/net.c2
-rw-r--r--source3/utils/regedit.c2
-rw-r--r--source3/utils/smbcacls.c2
-rw-r--r--source3/utils/smbcquotas.c2
-rw-r--r--source3/utils/smbget.c2
-rw-r--r--source3/utils/smbtree.c2
-rw-r--r--source3/utils/wscript_build14
-rw-r--r--source3/wscript_build9
16 files changed, 313 insertions, 236 deletions
diff --git a/source3/client/client.c b/source3/client/client.c
index 25ba01d6216..2f193459d5d 100644
--- a/source3/client/client.c
+++ b/source3/client/client.c
@@ -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"
diff --git a/source3/include/popt_common.h b/source3/include/popt_common.h
index a8c778473e9..e001a5369b7 100644
--- a/source3/include/popt_common.h
+++ b/source3/include/popt_common.h
@@ -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
index 00000000000..21130cff071
--- /dev/null
+++ b/source3/include/popt_common_cmdline.h
@@ -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
diff --git a/source3/lib/popt_common.c b/source3/lib/popt_common.c
index 454884fbb5c..11db080c82d 100644
--- a/source3/lib/popt_common.c
+++ b/source3/lib/popt_common.c
@@ -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
index 00000000000..57f77e0868a
--- /dev/null
+++ b/source3/lib/popt_common_cmdline.c
@@ -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
+};
diff --git a/source3/rpcclient/cmd_spoolss.c b/source3/rpcclient/cmd_spoolss.c
index 1d24476e9a5..8d330afdeb0 100644
--- a/source3/rpcclient/cmd_spoolss.c
+++ b/source3/rpcclient/cmd_spoolss.c
@@ -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) \
{ \
diff --git a/source3/rpcclient/rpcclient.c b/source3/rpcclient/rpcclient.c
index b4e25e6e479..f7e196226cf 100644
--- a/source3/rpcclient/rpcclient.c
+++ b/source3/rpcclient/rpcclient.c
@@ -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"
diff --git a/source3/rpcclient/wscript_build b/source3/rpcclient/wscript_build
index c24a5670db9..11a64f3248a 100644
--- a/source3/rpcclient/wscript_build
+++ b/source3/rpcclient/wscript_build
@@ -25,7 +25,7 @@ bld.SAMBA3_BINARY('rpcclient',
''',
deps='''
talloc
- popt_samba3
+ popt_samba3_cmdline
pdb
libsmb
smbconf
diff --git a/source3/utils/net.c b/source3/utils/net.c
index 44daa6088ca..76b8677bf78 100644
--- a/source3/utils/net.c
+++ b/source3/utils/net.c
@@ -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"
diff --git a/source3/utils/regedit.c b/source3/utils/regedit.c
index 27bd6f8f2c2..20115ae1624 100644
--- a/source3/utils/regedit.c
+++ b/source3/utils/regedit.c
@@ -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"
diff --git a/source3/utils/smbcacls.c b/source3/utils/smbcacls.c
index 0a5eeb31d0b..33eb78c41ec 100644
--- a/source3/utils/smbcacls.c
+++ b/source3/utils/smbcacls.c
@@ -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"
diff --git a/source3/utils/smbcquotas.c b/source3/utils/smbcquotas.c
index 798b8b6f177..a4b1b8111a5 100644
--- a/source3/utils/smbcquotas.c
+++ b/source3/utils/smbcquotas.c
@@ -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"
diff --git a/source3/utils/smbget.c b/source3/utils/smbget.c
index e1be42917fb..37462fa131f 100644
--- a/source3/utils/smbget.c
+++ b/source3/utils/smbget.c
@@ -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;
diff --git a/source3/utils/smbtree.c b/source3/utils/smbtree.c
index 3b539ef1045..fb0f165a18d 100644
--- a/source3/utils/smbtree.c
+++ b/source3/utils/smbtree.c
@@ -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"
diff --git a/source3/utils/wscript_build b/source3/utils/wscript_build
index 93e6abaac0d..67bb87e7a74 100644
--- a/source3/utils/wscript_build
+++ b/source3/utils/wscript_build
@@ -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
diff --git a/source3/wscript_build b/source3/wscript_build
index c7c69a9bee1..5ecf23d531d 100644
--- a/source3/wscript_build
+++ b/source3/wscript_build
@@ -268,7 +268,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',
@@ -1094,7 +1099,7 @@ bld.SAMBA3_BINARY('client/smbclient',
''',
deps='''
talloc
- popt_samba3
+ popt_samba3_cmdline
smbconf
ndr-standard
SMBREADLINE