Fixed failing hunks.
[rsync/rsync-patches.git] / usermap.diff
index 6424c1c..2f7de3d 100644 (file)
@@ -18,7 +18,7 @@ To use this patch, run these commands for a successful build:
  extern struct stats stats;
  
  extern char curr_dir[MAXPATHLEN];
-@@ -742,7 +744,7 @@ static struct file_struct *recv_file_ent
+@@ -745,7 +747,7 @@ static struct file_struct *recv_file_ent
                        uid = (uid_t)read_varint(f);
                        if (xflags & XMIT_USER_NAME_FOLLOWS)
                                uid = recv_user_name(f, uid);
@@ -27,7 +27,7 @@ To use this patch, run these commands for a successful build:
                                uid = match_uid(uid);
                }
        }
-@@ -754,7 +756,7 @@ static struct file_struct *recv_file_ent
+@@ -757,7 +759,7 @@ static struct file_struct *recv_file_ent
                        gid_flags = 0;
                        if (xflags & XMIT_GROUP_NAME_FOLLOWS)
                                gid = recv_group_name(f, gid, &gid_flags);
@@ -36,7 +36,7 @@ To use this patch, run these commands for a successful build:
                                gid = match_gid(gid, &gid_flags);
                }
        }
-@@ -1886,8 +1888,13 @@ struct file_list *recv_file_list(int f)
+@@ -1935,8 +1937,13 @@ struct file_list *recv_file_list(int f)
        int dstart, flags;
        int64 start_read;
  
@@ -71,16 +71,16 @@ To use this patch, run these commands for a successful build:
    rprintf(F,"     --timeout=TIME          set I/O timeout in seconds\n");
    rprintf(F," -I, --ignore-times          don't skip files that match in size and mod-time\n");
    rprintf(F,"     --size-only             skip files that match in size\n");
-@@ -568,6 +572,8 @@ static struct poptOption long_options[] 
-   {"files-from",       0,  POPT_ARG_STRING, &files_from, 0, 0, 0 },
-   {"from0",           '0', POPT_ARG_NONE,   &eol_nulls, 0, 0, 0},
-   {"numeric-ids",      0,  POPT_ARG_NONE,   &numeric_ids, 0, 0, 0 },
+@@ -581,6 +585,8 @@ static struct poptOption long_options[] 
+   {"no-from0",         0,  POPT_ARG_VAL,    &eol_nulls, 0, 0, 0},
+   {"numeric-ids",      0,  POPT_ARG_VAL,    &numeric_ids, 1, 0, 0 },
+   {"no-numeric-ids",   0,  POPT_ARG_VAL,    &numeric_ids, 0, 0, 0 },
 +  {"usermap",          0,  POPT_ARG_STRING, &usermap, 0, 0, 0 },
 +  {"groupmap",         0,  POPT_ARG_STRING, &groupmap, 0, 0, 0 },
    {"timeout",          0,  POPT_ARG_INT,    &io_timeout, 0, 0, 0 },
+   {"no-timeout",       0,  POPT_ARG_VAL,    &io_timeout, 0, 0, 0 },
    {"rsh",             'e', POPT_ARG_STRING, &shell_cmd, 0, 0, 0 },
-   {"rsync-path",       0,  POPT_ARG_STRING, &rsync_path, 0, 0, 0 },
-@@ -1857,6 +1863,18 @@ void server_options(char **args,int *arg
+@@ -1875,6 +1881,18 @@ void server_options(char **args,int *arg
                args[ac++] = "--numeric-ids";
  
        if (am_sender) {
@@ -159,7 +159,7 @@ To use this patch, run these commands for a successful build:
  then rsync will exit. The default is 0, which means no timeout.
 --- old/uidlist.c
 +++ new/uidlist.c
-@@ -32,6 +32,8 @@ extern int preserve_uid;
+@@ -31,6 +31,8 @@ extern int preserve_uid;
  extern int preserve_gid;
  extern int preserve_acls;
  extern int numeric_ids;
@@ -168,7 +168,7 @@ To use this patch, run these commands for a successful build:
  
  #ifdef HAVE_GETGROUPS
  # ifndef GETGROUPS_T
-@@ -41,6 +43,9 @@ extern int numeric_ids;
+@@ -40,6 +42,9 @@ extern int numeric_ids;
  
  #define GID_NONE ((gid_t)-1)
  
@@ -178,7 +178,7 @@ To use this patch, run these commands for a successful build:
  struct idlist {
        struct idlist *next;
        char *name;
-@@ -48,8 +53,8 @@ struct idlist {
+@@ -47,8 +52,8 @@ struct idlist {
        uint16 flags;
  };
  
@@ -189,7 +189,7 @@ To use this patch, run these commands for a successful build:
  
  static struct idlist *add_to_list(struct idlist **root, id_t id, char *name,
                                  id_t id2, uint16 flags)
-@@ -84,22 +89,6 @@ static char *gid_to_name(gid_t gid)
+@@ -83,22 +88,6 @@ static char *gid_to_name(gid_t gid)
        return NULL;
  }
  
@@ -212,7 +212,7 @@ To use this patch, run these commands for a successful build:
  static int is_in_group(gid_t gid)
  {
  #ifdef HAVE_GETGROUPS
-@@ -159,34 +148,49 @@ static int is_in_group(gid_t gid)
+@@ -158,34 +147,49 @@ static int is_in_group(gid_t gid)
  #endif
  }
  
@@ -282,7 +282,7 @@ To use this patch, run these commands for a successful build:
        }
  
        return node;
-@@ -195,12 +199,9 @@ static struct idlist *recv_add_gid(gid_t
+@@ -194,12 +198,9 @@ static struct idlist *recv_add_gid(gid_t
  /* this function is a definate candidate for a faster algorithm */
  uid_t match_uid(uid_t uid)
  {
@@ -296,7 +296,7 @@ To use this patch, run these commands for a successful build:
        if (uid == last_in)
                return last_out;
  
-@@ -208,10 +209,13 @@ uid_t match_uid(uid_t uid)
+@@ -207,10 +208,13 @@ uid_t match_uid(uid_t uid)
  
        for (list = uidlist; list; list = list->next) {
                if (list->id == uid)
@@ -312,16 +312,16 @@ To use this patch, run these commands for a successful build:
  }
  
  gid_t match_gid(gid_t gid, uint16 *flags_ptr)
-@@ -227,7 +231,7 @@ gid_t match_gid(gid_t gid, uint16 *flags
+@@ -226,7 +230,7 @@ gid_t match_gid(gid_t gid, uint16 *flags
                                break;
                }
                if (!list)
--                      list = recv_add_gid(gid, flags_ptr);
-+                      list = recv_add_id(&gidmap, gid, flags_ptr);
+-                      list = recv_add_gid(gid, NULL);
++                      list = recv_add_id(&gidmap, gid, NULL);
                last = list;
        }
  
-@@ -316,7 +320,7 @@ uid_t recv_user_name(int f, uid_t uid)
+@@ -315,7 +319,7 @@ uid_t recv_user_name(int f, uid_t uid)
        if (!name)
                out_of_memory("recv_user_name");
        read_sbuf(f, name, len);
@@ -330,7 +330,7 @@ To use this patch, run these commands for a successful build:
        return node->id2;
  }
  
-@@ -328,7 +332,7 @@ gid_t recv_group_name(int f, gid_t gid, 
+@@ -327,7 +331,7 @@ gid_t recv_group_name(int f, gid_t gid, 
        if (!name)
                out_of_memory("recv_group_name");
        read_sbuf(f, name, len);
@@ -339,7 +339,7 @@ To use this patch, run these commands for a successful build:
        if (flags_ptr && node->flags & FLAG_SKIP_GROUP)
                *flags_ptr |= FLAG_SKIP_GROUP;
        return node->id2;
-@@ -355,17 +359,96 @@ void recv_id_list(int f, struct file_lis
+@@ -354,17 +358,96 @@ void recv_id_list(int f, struct file_lis
  
        /* Now convert all the uids/gids from sender values to our values. */
  #ifdef SUPPORT_ACLS
@@ -349,12 +349,12 @@ To use this patch, run these commands for a successful build:
  #endif
 -      if (am_root && preserve_uid && !numeric_ids) {
 +      if (am_root && preserve_uid && (!numeric_ids || usermap)) {
-               for (i = 0; i < flist->count; i++)
+               for (i = 0; i < flist->used; i++)
                        F_OWNER(flist->files[i]) = match_uid(F_OWNER(flist->files[i]));
        }
 -      if (preserve_gid && (!am_root || !numeric_ids)) {
 +      if (preserve_gid && (!am_root || !numeric_ids || groupmap)) {
-               for (i = 0; i < flist->count; i++) {
+               for (i = 0; i < flist->used; i++) {
                        F_GROUP(flist->files[i]) = match_gid(F_GROUP(flist->files[i]),
                                                             &flist->files[i]->flags);
                }