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

Diff for /src/usr.bin/sendbug/sendbug.c between version 1.61 and 1.62

version 1.61, 2009/06/06 04:46:26 version 1.62, 2009/06/07 15:36:45
Line 57 
Line 57 
 struct passwd *pw;  struct passwd *pw;
 char os[BUFSIZ], rel[BUFSIZ], mach[BUFSIZ], details[BUFSIZ];  char os[BUFSIZ], rel[BUFSIZ], mach[BUFSIZ], details[BUFSIZ];
 const char *tmpdir;  const char *tmpdir;
 char *fullname, *tmppath;  char *tmppath;
 int Dflag, Pflag, wantcleanup;  int Dflag, Pflag, wantcleanup;
   
 __dead void  __dead void
Line 343 
Line 343 
 void  void
 init(void)  init(void)
 {  {
         size_t amp, len, gecoslen, namelen;          size_t len;
         int sysname[2];          int sysname[2];
         char ch, *cp;          char *cp;
   
         if ((pw = getpwuid(getuid())) == NULL)          if ((pw = getpwuid(getuid())) == NULL)
                 err(1, "getpwuid");                  err(1, "getpwuid");
         namelen = strlen(pw->pw_name);  
   
         /* Count number of '&'. */  
         for (amp = 0, cp = pw->pw_gecos; *cp && *cp != ','; ++cp)  
                 if (*cp == '&')  
                         ++amp;  
   
         /* Truncate gecos to full name. */  
         gecoslen = cp - pw->pw_gecos;  
         pw->pw_gecos[gecoslen] = '\0';  
   
         /* Expanded str = orig str - '&' chars + concatenated logins. */  
         len = gecoslen - amp + (amp * namelen) + 1;  
         if ((fullname = malloc(len)) == NULL)  
                 err(1, "malloc");  
   
         /* Upper case first char of login. */  
         ch = pw->pw_name[0];  
         pw->pw_name[0] = toupper((unsigned char)pw->pw_name[0]);  
   
         cp = pw->pw_gecos;  
         fullname[0] = '\0';  
         while (cp != NULL) {  
                 char *token;  
   
                 token = strsep(&cp, "&");  
                 if (token != pw->pw_gecos &&  
                     strlcat(fullname, pw->pw_name, len) >= len)  
                         errx(1, "truncated string");  
                 if (strlcat(fullname, token, len) >= len)  
                         errx(1, "truncated string");  
         }  
         /* Restore case of first char of login. */  
         pw->pw_name[0] = ch;  
   
         sysname[0] = CTL_KERN;          sysname[0] = CTL_KERN;
         sysname[1] = KERN_OSTYPE;          sysname[1] = KERN_OSTYPE;

Legend:
Removed from v.1.61  
changed lines
  Added in v.1.62