]> code.citadel.org Git - citadel.git/blobdiff - citadel/serv_bio.c
* extract_token() now expects to be supplied with the size of the
[citadel.git] / citadel / serv_bio.c
index 62d313f4270b2e4ea7b630296cc9e0ae8f9677ef..0331b13e19e7aab644eceb06ae9855e74c19d3d8 100644 (file)
@@ -55,20 +55,25 @@ void cmd_ebio(char *cmdbuf) {
        char buf[SIZ];
        FILE *fp;
 
+       unbuffer_output();
+
        if (!(CC->logged_in)) {
-               cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN);
+               cprintf("%d Not logged in.\n",ERROR + NOT_LOGGED_IN);
                return;
        }
 
-       snprintf(buf, sizeof buf, "./bio/%ld",CC->usersupp.usernum);
+       snprintf(buf, sizeof buf, "./bio/%ld",CC->user.usernum);
        fp = fopen(buf,"w");
        if (fp == NULL) {
-               cprintf("%d Cannot create file\n",ERROR);
+               cprintf("%d Cannot create file: %s\n", ERROR + INTERNAL_ERROR,
+                               strerror(errno));
                return;
        }
        cprintf("%d  \n",SEND_LISTING);
-       while(client_gets(buf), strcmp(buf,"000")) {
-               fprintf(fp,"%s\n",buf);
+       while(client_getln(buf, sizeof buf), strcmp(buf,"000")) {
+               if (ftell(fp) < config.c_maxmsglen) {
+                       fprintf(fp,"%s\n",buf);
+               }
        }
        fclose(fp);
 }
@@ -78,13 +83,13 @@ void cmd_ebio(char *cmdbuf) {
  */
 void cmd_rbio(char *cmdbuf)
 {
-       struct usersupp ruser;
-       char buf[SIZ];
+       struct ctdluser ruser;
+       char buf[256];
        FILE *fp;
 
-       extract(buf,cmdbuf,0);
-       if (getuser(&ruser,buf)!=0) {
-               cprintf("%d No such user.\n",ERROR+NO_SUCH_USER);
+       extract_token(buf, cmdbuf, 0, '|', sizeof buf);
+       if (getuser(&ruser, buf) != 0) {
+               cprintf("%d No such user.\n",ERROR + NO_SUCH_USER);
                return;
        }
        snprintf(buf, sizeof buf, "./bio/%ld",ruser.usernum);
@@ -96,7 +101,7 @@ void cmd_rbio(char *cmdbuf)
        if (fp == NULL)
                cprintf("%s has no bio on file.\n", ruser.fullname);
        else {
-               while (fgets(buf,256,fp)!=NULL) cprintf("%s",buf);
+               while (fgets(buf, sizeof buf, fp) != NULL) cprintf("%s",buf);
                fclose(fp);
        }
        cprintf("000\n");
@@ -106,20 +111,20 @@ void cmd_rbio(char *cmdbuf)
  * list of users who have entered bios
  */
 void cmd_lbio(char *cmdbuf) {
-       char buf[SIZ];
+       char buf[256];
        FILE *ls;
-       struct usersupp usbuf;
+       struct ctdluser usbuf;
 
-       ls=popen("cd ./bio; ls","r");
-       if (ls==NULL) {
-               cprintf("%d Cannot open listing.\n",ERROR+FILE_NOT_FOUND);
+       ls = popen("cd ./bio; ls", "r");
+       if (ls == NULL) {
+               cprintf("%d Cannot open listing.\n", ERROR + FILE_NOT_FOUND);
                return;
        }
 
-       cprintf("%d\n",LISTING_FOLLOWS);
-       while (fgets(buf,sizeof buf,ls)!=NULL)
+       cprintf("%d\n", LISTING_FOLLOWS);
+       while (fgets(buf, sizeof buf, ls)!=NULL)
                if (getuserbynumber(&usbuf,atol(buf))==0)
-                       cprintf("%s\n",usbuf.fullname);
+                       cprintf("%s\n", usbuf.fullname);
        pclose(ls);
        cprintf("000\n");
 }