-
-bool do_password_set (int nb, const char **com, struct ngadmin *nga) {
-
- int i;
-
-
- if ( nb!=1 ) {
- printf("Usage: password set <value>\n");
- return false;
- }
-
- i=ngadmin_setPassword(nga, com[0]);
- printErrCode(i);
-
-
- return true;
-
+int do_password_set (int argc, const char **argv, struct ngadmin *nga)
+{
+ int i;
+ char buf[64];
+ const char *pass;
+
+
+ if (argc > 1) {
+ printf("usage: password set [<value>]\n");
+ return 1;
+ }
+
+ if (argc == 0) {
+ printf("Enter password: ");
+ fflush(stdout);
+ current_term.c_lflag &= ~ECHO;
+ tcsetattr(STDIN_FILENO, TCSANOW, ¤t_term);
+ pass = fgets(buf, sizeof(buf), stdin);
+ trim(buf, strlen(buf));
+ current_term.c_lflag |= ECHO;
+ tcsetattr(STDIN_FILENO, TCSANOW, ¤t_term);
+ putchar('\n');
+ } else {
+ pass = argv[0];
+ }
+
+ if (pass != NULL) {
+ i = ngadmin_setPassword(nga, pass);
+ printErrCode(i);
+ }
+
+
+ return 0;