X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fuserlist.c;h=0e7e3fbfd92cf651eaf78f4d12302d25bee5b43d;hb=1e656d277fe91b7c4f5d73eab4a0dd0b7a173145;hp=effccf59ff1682feab7e61bf87b8ed66e6872032;hpb=b6d0c160695778081b012f34f3beed78bd7cd36d;p=citadel.git diff --git a/citadel/userlist.c b/citadel/userlist.c index effccf59f..0e7e3fbfd 100644 --- a/citadel/userlist.c +++ b/citadel/userlist.c @@ -1,135 +1,97 @@ -/* $Id$ */ +/* + * $Id$ + * + * Command-line user list utility. + * + */ + #include #include #include #include -#include -#include "citadel.h" -#include -#include "ipc.h" - -/* - * num_parms() - discover number of parameters... - */ -int num_parms(char *source) -{ - int a; - int count = 1; - - for (a=0; a= n) { - strcpy(dest,""); - return; - } - strcpy(buf,source); - if ( (parmnum == 0) && (n == 1) ) { - strcpy(dest,buf); - return; - } - - while (count++ < parmnum) do { - strcpy(buf,&buf[1]); - } while( (strlen(buf)>0) && (buf[0]!='|') ); - if (buf[0]=='|') strcpy(buf,&buf[1]); - for (count = 0; count +# include +#else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif -/* - * extract_long() - extract an long parm w/o supplying a buffer - */ -long extract_long(char *source, int parmnum) -{ - char buf[256]; - - extract(buf,source,parmnum); - return(atol(buf)); - } - +#include +#include "citadel.h" +#include +#include "citadel_ipc.h" +#include "citadel_dirs.h" void logoff(int code) { exit(code); - } +} -void userlist(void) { - char buf[256]; - char fl[256]; - struct tm *tmbuf; +void userlist(CtdlIPC *ipc) { + char buf[SIZ]; + char fl[SIZ]; + struct tm tmbuf; time_t lc; + char *listing = NULL; + int r; - serv_puts("LIST"); - serv_gets(buf); - if (buf[0]!='1') { - printf("%s\n",&buf[4]); + r = CtdlIPCUserListing(ipc, "", &listing, buf); + if (r / 100 != 1) { + printf("%s\n", buf); return; - } + } printf(" User Name Num L LastCall Calls Posts\n"); printf("------------------------- ----- - ---------- ----- -----\n"); - while (serv_gets(buf), strcmp(buf,"000")) { - extract(fl,buf,0); + while (strlen(listing) > 0) { + extract_token(buf, listing, 0, '\n', sizeof buf); + remove_token(listing, 0, '\n'); + extract_token(fl, buf, 0, '|', sizeof fl); printf("%-25s ",fl); - printf("%5ld %d ",extract_long(buf,2), + printf("%5ld %d ", extract_long(buf,2), extract_int(buf,1)); lc = extract_long(buf,3); - tmbuf = (struct tm *)localtime(&lc); + localtime_r(&lc, &tmbuf); printf("%02d/%02d/%04d ", - (tmbuf->tm_mon+1), - tmbuf->tm_mday, - (tmbuf->tm_year + 1900)); + (tmbuf.tm_mon+1), + tmbuf.tm_mday, + (tmbuf.tm_year + 1900)); printf("%5ld %5ld\n", extract_long(buf,4),extract_long(buf,5)); - } - printf("\n"); } + printf("\n"); +} int main(int argc, char **argv) { - char buf[256]; - - attach_to_server(argc,argv); - serv_gets(buf); + char buf[SIZ]; + char hostbuf[SIZ], portbuf[SIZ]; + CtdlIPC *ipc = NULL; + int relh=0; + int home=0; + char relhome[PATH_MAX]=""; + char ctdldir[PATH_MAX]=CTDLDIR; + + CtdlInitBase64Table(); + calc_dirs_n_files(relh, home, relhome, ctdldir, 0); + + ipc = CtdlIPC_new(argc, argv, hostbuf, portbuf); + CtdlIPC_chat_recv(ipc, buf); if ((buf[0]!='2')&&(strncmp(buf,"551",3))) { fprintf(stderr,"%s: %s\n",argv[0],&buf[4]); logoff(atoi(buf)); - } + } - userlist(); + userlist(ipc); - serv_puts("QUIT"); - serv_gets(buf); + CtdlIPCQuit(ipc); exit(0); - } +} #ifndef HAVE_STRERROR @@ -140,12 +102,7 @@ char *strerror(int e) { static char buf[32]; - sprintf(buf,"errno = %d",e); + snprintf(buf, sizeof buf, "errno = %d",e); return(buf); - } +} #endif - - - - -