Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Shorten some of the lines in the --help output.
[rsync/rsync.git]
/
uidlist.c
diff --git
a/uidlist.c
b/uidlist.c
index
eff8749
..
d8a7af1
100644
(file)
--- a/
uidlist.c
+++ b/
uidlist.c
@@
-28,6
+28,7
@@
extern int preserve_uid;
extern int preserve_gid;
extern int numeric_ids;
extern int preserve_uid;
extern int preserve_gid;
extern int numeric_ids;
+extern int am_root;
struct idlist {
struct idlist *next;
struct idlist {
struct idlist *next;
@@
-40,7
+41,7
@@
static struct idlist *gidlist;
static struct idlist *add_list(int id, char *name)
{
static struct idlist *add_list(int id, char *name)
{
- struct idlist *list =
(struct idlist *)malloc(sizeof(list[0])
);
+ struct idlist *list =
new(struct idlist
);
if (!list) out_of_memory("add_list");
list->next = NULL;
list->name = strdup(name);
if (!list) out_of_memory("add_list");
list->next = NULL;
list->name = strdup(name);
@@
-122,7
+123,10
@@
static gid_t match_gid(gid_t gid)
list = list->next;
}
list = list->next;
}
- last_out = gid;
+ if (am_root)
+ last_out = gid;
+ else
+ last_out = (gid_t) -1;
return last_out;
}
return last_out;
}
@@
-237,7
+241,7
@@
void recv_uid_list(int f, struct file_list *flist)
id = read_int(f);
while (id != 0) {
int len = read_byte(f);
id = read_int(f);
while (id != 0) {
int len = read_byte(f);
- name =
(char *)malloc(
len+1);
+ name =
new_array(char,
len+1);
if (!name) out_of_memory("recv_uid_list");
read_sbuf(f, name, len);
if (!list) {
if (!name) out_of_memory("recv_uid_list");
read_sbuf(f, name, len);
if (!list) {
@@
-260,7
+264,7
@@
void recv_uid_list(int f, struct file_list *flist)
id = read_int(f);
while (id != 0) {
int len = read_byte(f);
id = read_int(f);
while (id != 0) {
int len = read_byte(f);
- name =
(char *)malloc(
len+1);
+ name =
new_array(char,
len+1);
if (!name) out_of_memory("recv_uid_list");
read_sbuf(f, name, len);
if (!list) {
if (!name) out_of_memory("recv_uid_list");
read_sbuf(f, name, len);
if (!list) {
@@
-276,12
+280,12
@@
void recv_uid_list(int f, struct file_list *flist)
}
}
}
}
- if (!
uidlist && !gidlist
) return;
+ if (!
(am_root && preserve_uid) && !preserve_gid
) return;
/* now convert the uid/gid of all files in the list to the mapped
uid/gid */
for (i=0;i<flist->count;i++) {
/* now convert the uid/gid of all files in the list to the mapped
uid/gid */
for (i=0;i<flist->count;i++) {
- if (preserve_uid && flist->files[i]->uid != 0) {
+ if (
am_root &&
preserve_uid && flist->files[i]->uid != 0) {
flist->files[i]->uid = match_uid(flist->files[i]->uid);
}
if (preserve_gid && flist->files[i]->gid != 0) {
flist->files[i]->uid = match_uid(flist->files[i]->uid);
}
if (preserve_gid && flist->files[i]->gid != 0) {