[BACK]Return to util.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / finger

Diff for /src/usr.bin/finger/util.c between version 1.28 and 1.29

version 1.28, 2014/11/18 20:54:28 version 1.29, 2014/11/19 22:07:13
Line 89 
Line 89 
         char *p;          char *p;
         char *bp, name[1024];          char *bp, name[1024];
         struct stat sb;          struct stat sb;
           int len;
   
         pn->realname = pn->office = pn->officephone = pn->homephone = NULL;          pn->realname = pn->office = pn->officephone = pn->homephone = NULL;
           pn->mailrecv = -1;              /* -1 == not_valid */
   
         pn->uid = pw->pw_uid;          pn->uid = pw->pw_uid;
         pn->name = estrdup(pw->pw_name);          pn->name = estrdup(pw->pw_name);
Line 103 
Line 105 
         if (!(p = strsep(&bp, ",")))          if (!(p = strsep(&bp, ",")))
                 return;                  return;
         expandusername(p, pw->pw_name, name, sizeof(name));          expandusername(p, pw->pw_name, name, sizeof(name));
         pn->realname = vs(name);          if (stravis(&pn->realname, p, VIS_SAFE|VIS_NOSLASH) == -1)
         pn->office = ((p = strsep(&bp, ",")) && *p) ?                  err(1, "stravis");
             vs(p) : NULL;          if ((p = strsep(&bp, ",")) && *p) {
         pn->officephone = ((p = strsep(&bp, ",")) && *p) ?                  if (stravis(&pn->office, p, VIS_SAFE|VIS_NOSLASH) == -1)
             vs(p) : NULL;                          err(1, "stravis");
         pn->homephone = ((p = strsep(&bp, ",")) && *p) ?          }
             vs(p) : NULL;          if ((p = strsep(&bp, ",")) && *p) {
         (void)snprintf(tbuf, sizeof(tbuf), "%s/%s", _PATH_MAILSPOOL,                  if (stravis(&pn->officephone, p, VIS_SAFE|VIS_NOSLASH) == -1)
                           err(1, "stravis");
           }
           if ((p = strsep(&bp, ",")) && *p) {
                   if (stravis(&pn->homephone, p, VIS_SAFE|VIS_NOSLASH) == -1)
                           err(1, "stravis");
           }
           len = snprintf(tbuf, sizeof(tbuf), "%s/%s", _PATH_MAILSPOOL,
             pw->pw_name);              pw->pw_name);
         pn->mailrecv = -1;              /* -1 == not_valid */          if (len != -1 && len < sizeof(tbuf)) {
         if (stat(tbuf, &sb) < 0) {                  if (stat(tbuf, &sb) < 0) {
                 if (errno != ENOENT) {                          if (errno != ENOENT) {
                         warn("%s", tbuf);                                  warn("%s", tbuf);
                         return;                                  return;
                           }
                   } else if (sb.st_size != 0) {
                           pn->mailrecv = sb.st_mtime;
                           pn->mailread = sb.st_atime;
                 }                  }
         } else if (sb.st_size != 0) {  
                 pn->mailrecv = sb.st_mtime;  
                 pn->mailread = sb.st_atime;  
         }          }
 }  }
   
Line 362 
Line 372 
         *p++ = *num++;          *p++ = *num++;
         *p = '\0';          *p = '\0';
         return (pbuf);          return (pbuf);
 }  
   
 /*  
  * Like strvis(), but use malloc() to get the space and returns a pointer  
  * to the destination string.  
  *  
  * The caller is responsible for free()'ing the returned string.  
  */  
 char *  
 vs(const char *src)  
 {  
         char *dst;  
   
         /* This will allocate 3 extra bytes but gives overflow protection. */  
         dst = reallocarray(NULL, 4, strlen(src) + 1);  
         if (dst == NULL)  
                 err(1, "reallocarray");  
         strvis(dst, src, VIS_SAFE|VIS_NOSLASH);  
         return (dst);  
 }  }

Legend:
Removed from v.1.28  
changed lines
  Added in v.1.29