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

Diff for /src/usr.bin/rdistd/server.c between version 1.18 and 1.19

version 1.18, 2008/05/13 02:13:46 version 1.19, 2008/05/25 22:33:56
Line 74 
Line 74 
 static void query(char *);  static void query(char *);
 static int chkparent(char *, opt_t);  static int chkparent(char *, opt_t);
 static char *savetarget(char *, opt_t);  static char *savetarget(char *, opt_t);
 static void recvfile(char *, int, opt_t, int, char *, char *, time_t, time_t, off_t);  static void recvfile(char *, opt_t, int, char *, char *, time_t, time_t, off_t);
 static void recvdir(opt_t, int, char *, char *);  static void recvdir(opt_t, int, char *, char *);
 static void recvlink(char *, opt_t, int, off_t);  static void recvlink(char *, opt_t, int, off_t);
 static void hardlink(char *);  static void hardlink(char *);
Line 784 
Line 784 
  * Receive a file   * Receive a file
  */   */
 static void  static void
 recvfile(char *new, int f, opt_t opts, int mode, char *owner,  recvfile(char *new, opt_t opts, int mode, char *owner, char *group,
     char *group, time_t mtime, time_t atime, off_t size)           time_t mtime, time_t atime, off_t size)
 {  {
         int wrerr, olderrno;          int f, wrerr, olderrno;
         off_t i;          off_t i;
         char *cp;          char *cp;
         char *savefile = NULL;          char *savefile = NULL;
         static struct stat statbuff;          static struct stat statbuff;
   
         /*          /*
            * Create temporary file
            */
           if ((f = mkstemp(new)) < 0) {
                   if (errno != ENOENT || chkparent(new, opts) < 0 ||
                       (f = mkstemp(new)) < 0) {
                           error("%s: create failed: %s", new, SYSERR);
                           return;
                   }
           }
   
           /*
          * Receive the file itself           * Receive the file itself
          */           */
         ack();          ack();
Line 1193 
Line 1204 
         /*          /*
          * Make new symlink using a temporary name           * Make new symlink using a temporary name
          */           */
         if (symlink(buf, new) < 0) {          if (mktemp(new) == NULL || symlink(buf, new) < 0) {
                 if (errno != ENOENT || chkparent(new, opts) < 0 ||                  if (errno != ENOENT || chkparent(new, opts) < 0 ||
                     symlink(buf, new) < 0) {                      mktemp(new) == NULL || symlink(buf, new) < 0) {
                         error("%s -> %s: symlink failed: %s", new, buf,SYSERR);                          error("%s -> %s: symlink failed: %s", new, buf, SYSERR);
                         (void) unlink(new);  
                         return;                          return;
                 }                  }
         }          }
Line 1390 
Line 1400 
 static void  static void
 recvit(char *cmd, int type)  recvit(char *cmd, int type)
 {  {
         int f, mode;          int mode;
         opt_t opts;          opt_t opts;
         off_t size;          off_t size;
         time_t mtime, atime;          time_t mtime, atime;
Line 1516 
Line 1526 
                                         tempname);                                          tempname);
                         *file = '/';                          *file = '/';
                 }                  }
                 if ((f = mkstemp(new)) == -1) {  
                         error("%s: create failed: %s", new, SYSERR);  
                         return;  
                 }  
         }          }
   
         /*          /*
Line 1566 
Line 1572 
                 break;                  break;
   
         case S_IFREG:          case S_IFREG:
                 recvfile(new, f, opts, mode, owner, group, mtime, atime, size);                  recvfile(new, opts, mode, owner, group, mtime, atime, size);
                 break;                  break;
   
         default:          default:

Legend:
Removed from v.1.18  
changed lines
  Added in v.1.19