Obey the manpage description and make changesecretpw accept a password via stdin
authoridra <idra@0c0555d6-39d7-0310-84fc-f1cc0bd64818>
Tue, 30 May 2006 22:10:09 +0000 (22:10 +0000)
committeridra <idra@0c0555d6-39d7-0310-84fc-f1cc0bd64818>
Tue, 30 May 2006 22:10:09 +0000 (22:10 +0000)
git-svn-id: svn+ssh://svn.samba.org/data/svn/samba/branches/SAMBA_3_0@15971 0c0555d6-39d7-0310-84fc-f1cc0bd64818

source/Makefile.in
source/utils/net.c

index 46393fd..fa9af24 100644 (file)
@@ -577,7 +577,8 @@ NET_OBJ1 = utils/net.o utils/net_ads.o utils/net_domain.o utils/net_help.o \
           utils/net_status.o utils/net_rpc_printer.o utils/net_rpc_rights.o \
           utils/net_rpc_service.o utils/net_rpc_registry.o utils/net_usershare.o \
           utils/netlookup.o utils/net_sam.o utils/net_rpc_shell.o \
-          utils/net_util.o utils/net_rpc_sh_acct.o utils/net_rpc_audit.o 
+          utils/net_util.o utils/net_rpc_sh_acct.o utils/net_rpc_audit.o \
+          utils/passwd_util.o
 
 NET_OBJ = $(NET_OBJ1) $(PARAM_OBJ) $(SECRETS_OBJ) $(LIBSMB_OBJ) \
          $(RPC_PARSE_OBJ) $(PASSDB_OBJ) $(GROUPDB_OBJ) \
index 27b64aa..bef2a0a 100644 (file)
@@ -65,6 +65,7 @@ const char *opt_workgroup = NULL;
 int opt_long_list_entries = 0;
 int opt_reboot = 0;
 int opt_force = 0;
+int opt_stdin = 0;
 int opt_port = 0;
 int opt_verbose = 0;
 int opt_maxusers = -1;
@@ -496,13 +497,24 @@ static int net_changetrustpw(int argc, const char **argv)
        return net_rpc_changetrustpw(argc, argv);
 }
 
+static void set_line_buffering(FILE *f)
+{
+       setvbuf(f, NULL, _IOLBF, 0);
+}
+
 static int net_changesecretpw(int argc, const char **argv)
 {
         char *trust_pw;
         uint32 sec_channel_type = SEC_CHAN_WKSTA;
 
        if(opt_force) {
-               trust_pw = getpass("Enter machine password: ");
+               if (opt_stdin) {
+                       set_line_buffering(stdin);
+                       set_line_buffering(stdout);
+                       set_line_buffering(stderr);
+               }
+               
+               trust_pw = get_pass("Enter machine password: ", opt_stdin);
 
                if (!secrets_store_machine_password(trust_pw, lp_workgroup(), sec_channel_type)) {
                            d_fprintf(stderr, "Unable to write the machine account password in the secrets database");
@@ -856,6 +868,7 @@ static struct functable net_func[] = {
                {"long",        'l', POPT_ARG_NONE,   &opt_long_list_entries},
                {"reboot",      'r', POPT_ARG_NONE,   &opt_reboot},
                {"force",       'f', POPT_ARG_NONE,   &opt_force},
+               {"stdin",       'i', POPT_ARG_NONE,   &opt_stdin},
                {"timeout",     't', POPT_ARG_INT,    &opt_timeout},
                {"machine-pass",'P', POPT_ARG_NONE,   &opt_machine_pass},
                {"myworkgroup", 'W', POPT_ARG_STRING, &opt_workgroup},