91d99f1dcb8ea2c062f0cf8f14e0fc14be441dad
[citadel.git] / citadel / userlist.c
1 /* $Id$ */
2 #include <stdlib.h>
3 #include <unistd.h>
4 #include <stdio.h>
5 #include <string.h>
6 #include <time.h>
7 #include "citadel.h"
8 #include <unistd.h>
9 #include "ipc.h"
10 #include "tools.h"
11
12 void logoff(int code)
13 {
14         exit(code);
15         }
16
17 void userlist(void) { 
18         char buf[256];
19         char fl[256];
20         struct tm *tmbuf;
21         time_t lc;
22
23         serv_puts("LIST");
24         serv_gets(buf);
25         if (buf[0]!='1') {
26                 printf("%s\n",&buf[4]);
27                 return;
28                 }
29         printf("       User Name           Num  L  LastCall  Calls Posts\n");
30         printf("------------------------- ----- - ---------- ----- -----\n");
31         while (serv_gets(buf), strcmp(buf,"000")) {
32                 extract(fl,buf,0);
33                 printf("%-25s ",fl);
34                 printf("%5ld %d ",extract_long(buf,2),
35                         extract_int(buf,1));
36                 lc = extract_long(buf,3);
37                 tmbuf = (struct tm *)localtime(&lc);
38                 printf("%02d/%02d/%04d ",
39                         (tmbuf->tm_mon+1),
40                         tmbuf->tm_mday,
41                         (tmbuf->tm_year + 1900));
42                 printf("%5ld %5ld\n",
43                         extract_long(buf,4),extract_long(buf,5));
44                 }
45         printf("\n");
46         }
47
48
49 int main(int argc, char **argv)
50 {
51         char buf[256];
52         char hostbuf[256], portbuf[256];
53
54         attach_to_server(argc, argv, hostbuf, portbuf);
55         serv_gets(buf);
56         if ((buf[0]!='2')&&(strncmp(buf,"551",3))) {
57                 fprintf(stderr,"%s: %s\n",argv[0],&buf[4]);
58                 logoff(atoi(buf));
59                 }
60
61         userlist();
62
63         serv_puts("QUIT");
64         serv_gets(buf);
65         exit(0);
66         }
67
68
69 #ifndef HAVE_STRERROR
70 /*
71  * replacement strerror() for systems that don't have it
72  */
73 char *strerror(int e)
74 {
75         static char buf[32];
76
77         sprintf(buf,"errno = %d",e);
78         return(buf);
79         }
80 #endif
81
82
83
84
85