indent
[citadel] / ctdlsh / passwd.c
1 /*
2  * (c) 2009-2012 by Art Cancro and citadel.org
3  * This program is released under the terms of the GNU General Public License v3.
4  */
5
6 #include "ctdlsh.h"
7
8 int cmd_passwd(int server_socket, char *cmdbuf)
9 {
10         char buf[1024];
11         time_t now;
12         char account_name[1024];
13         char *p1;
14         char *p2;
15
16         strcpy(account_name, &cmdbuf[7]);
17         if (strlen(account_name) == 0) {
18                 strncpy(account_name, readline("Enter account name: "), sizeof account_name);
19         }
20         sock_printf(server_socket, "AGUP %s\n", account_name);
21         sock_getln(server_socket, buf, sizeof buf);
22         if (buf[0] != '2') {
23                 fprintf(stderr, "No such user.\n");
24                 return (cmdret_error);
25         }
26
27         p1 = readline("Enter new password: ");
28         p2 = readline("Enter it again: ");
29
30         if (strcmp(p1, p2)) {
31                 fprintf(stderr, "The passwords you entered do not match." "The account password remains unchanged.\n");
32                 return (cmdret_error);
33         }
34
35         sock_printf(server_socket, "ASUP %s|%s\n", account_name, p2);
36         sock_getln(server_socket, buf, sizeof buf);
37         if (buf[0] != '2') {
38                 fprintf(stderr, "%s\n", &buf[4]);
39                 return (cmdret_error);
40         }
41
42         printf("Password has been changed.\n");
43         return (cmdret_ok);
44 }