[BACK]Return to rcp.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / bin / rcp

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/bin/rcp/rcp.c between version 1.48 and 1.48.8.1

version 1.48, 2009/08/31 07:11:16 version 1.48.8.1, 2012/05/09 15:42:08
Line 485  sink(int argc, char *argv[])
Line 485  sink(int argc, char *argv[])
         char ch, *cp, *np, *targ, *vect[1], buf[BUFSIZ];          char ch, *cp, *np, *targ, *vect[1], buf[BUFSIZ];
         const char *why;          const char *why;
         off_t size;          off_t size;
           char *namebuf = NULL;
           size_t cursize = 0;
   
 #define atime   tv[0]  #define atime   tv[0]
 #define mtime   tv[1]  #define mtime   tv[1]
Line 507  sink(int argc, char *argv[])
Line 509  sink(int argc, char *argv[])
         for (first = 1;; first = 0) {          for (first = 1;; first = 0) {
                 cp = buf;                  cp = buf;
                 if (read(rem, cp, 1) <= 0)                  if (read(rem, cp, 1) <= 0)
                         return;                          goto out;
                 if (*cp++ == '\n')                  if (*cp++ == '\n')
                         SCREWUP("unexpected <newline>");                          SCREWUP("unexpected <newline>");
                 do {                  do {
Line 528  sink(int argc, char *argv[])
Line 530  sink(int argc, char *argv[])
                 }                  }
                 if (buf[0] == 'E') {                  if (buf[0] == 'E') {
                         (void)write(rem, "", 1);                          (void)write(rem, "", 1);
                         return;                          goto out;
                 }                  }
   
                 if (ch == '\n')                  if (ch == '\n')
Line 582  sink(int argc, char *argv[])
Line 584  sink(int argc, char *argv[])
                 if (*cp++ != ' ')                  if (*cp++ != ' ')
                         SCREWUP("size not delimited");                          SCREWUP("size not delimited");
                 if (targisdir) {                  if (targisdir) {
                         static char *namebuf;  
                         static size_t cursize;  
                         char *newnamebuf;                          char *newnamebuf;
                         size_t need;                          size_t need;
   
                         need = strlen(targ) + strlen(cp) + 250;                          need = strlen(targ) + strlen(cp) + 2;
                         if (need > cursize) {                          if (need > cursize) {
                                   need += 256;
                                 newnamebuf = realloc(namebuf, need);                                  newnamebuf = realloc(namebuf, need);
                                 if (newnamebuf != NULL) {                                  if (newnamebuf != NULL) {
                                         namebuf = newnamebuf;                                          namebuf = newnamebuf;
                                         cursize = need;                                          cursize = need;
                                 } else {                                  } else {
                                         /* note: run_err is not fatal */  
                                         run_err("%s", strerror(errno));                                          run_err("%s", strerror(errno));
                                           exit(1);
                                 }                                  }
                         }                          }
                         (void)snprintf(namebuf, cursize, "%s%s%s", targ,                          (void)snprintf(namebuf, cursize, "%s%s%s", targ,
Line 726  bad:   run_err("%s: %s", np, strerror(er
Line 727  bad:   run_err("%s: %s", np, strerror(er
                         break;                          break;
                 }                  }
         }          }
   
   out:
           if (namebuf) {
                   free(namebuf);
           }
           return;
   
 screwup:  screwup:
         run_err("protocol error: %s", why);          run_err("protocol error: %s", why);
         exit(1);          exit(1);

Legend:
Removed from v.1.48  
changed lines
  Added in v.1.48.8.1

CVSweb <webmaster@jp.NetBSD.org>