#include "commands.h"
-
-bool do_password_change (int nb, const char **com, struct ngadmin *nga) {
-
- int i;
- const struct swi_attr *sa;
-
-
- if ( nb!=1 ) {
- printf("Usage: password change <value>\n");
- return false;
- }
-
- if ( (sa=ngadmin_getCurrentSwitch(nga))==NULL ) {
- printf("must be logged\n");
- return false;
- }
-
- i=ngadmin_changePassword(nga, com[0]);
- printErrCode(i);
-
-
- return true;
-
+int do_password_change (int argc, const char **argv, struct ngadmin *nga)
+{
+ int i;
+ const struct swi_attr *sa;
+
+
+ if (argc != 1) {
+ printf("usage: password change <value>\n");
+ return 1;
+ }
+
+ sa = ngadmin_getCurrentSwitch(nga);
+ if (sa == NULL) {
+ printf("must be logged\n");
+ return 1;
+ }
+
+ i = ngadmin_changePassword(nga, argv[0]);
+ printErrCode(i);
+
+
+ return 0;
}
-
-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;
}
-