Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liblongpath-rsync
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liblongpath
liblongpath-rsync
Commits
283887d7
Commit
283887d7
authored
Dec 28, 2006
by
Wayne Davison
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Neaten up use of uid_t/gid_t variable types.
parent
c2f0e4d9
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
38 additions
and
33 deletions
+38
-33
uidlist.c
uidlist.c
+38
-33
No files found.
uidlist.c
View file @
283887d7
...
...
@@ -33,10 +33,10 @@
#endif
extern
int
verbose
;
extern
int
am_root
;
extern
int
preserve_uid
;
extern
int
preserve_gid
;
extern
int
numeric_ids
;
extern
int
am_root
;
struct
idlist
{
struct
idlist
*
next
;
...
...
@@ -79,7 +79,7 @@ static char *gid_to_name(gid_t gid)
return
NULL
;
}
static
int
map_uid
(
in
t
id
,
char
*
name
)
static
uid_t
map_uid
(
uid_
t
id
,
char
*
name
)
{
uid_t
uid
;
if
(
id
!=
0
&&
name_to_uid
(
name
,
&
uid
))
...
...
@@ -87,7 +87,7 @@ static int map_uid(int id, char *name)
return
id
;
}
static
int
map_gid
(
in
t
id
,
char
*
name
)
static
gid_t
map_gid
(
gid_
t
id
,
char
*
name
)
{
gid_t
gid
;
if
(
id
!=
0
&&
name_to_gid
(
name
,
&
gid
))
...
...
@@ -155,37 +155,37 @@ static int is_in_group(gid_t gid)
}
/* Add a uid to the list of uids. Only called on receiving side. */
static
struct
idlist
*
recv_add_uid
(
in
t
id
,
char
*
name
)
static
uid_t
recv_add_uid
(
uid_
t
id
,
char
*
name
)
{
in
t
id2
=
name
?
map_uid
(
id
,
name
)
:
id
;
uid_
t
id2
=
name
?
map_uid
(
id
,
name
)
:
id
;
struct
idlist
*
node
;
node
=
add_to_list
(
&
uidlist
,
id
,
name
,
id2
);
node
=
add_to_list
(
&
uidlist
,
(
int
)
id
,
name
,
(
int
)
id2
);
if
(
verbose
>
3
)
{
rprintf
(
FINFO
,
"uid %d(%s) maps to %d
\n
"
,
id
,
name
?
name
:
""
,
id2
);
(
int
)
id
,
name
?
name
:
""
,
(
int
)
id2
);
}
return
node
;
return
id2
;
}
/* Add a gid to the list of gids. Only called on receiving side. */
static
struct
idlist
*
recv_add_gid
(
in
t
id
,
char
*
name
)
static
gid_t
recv_add_gid
(
gid_
t
id
,
char
*
name
)
{
in
t
id2
=
name
?
map_gid
(
id
,
name
)
:
id
;
gid_
t
id2
=
name
?
map_gid
(
id
,
name
)
:
id
;
struct
idlist
*
node
;
if
(
!
am_root
&&
!
is_in_group
(
id2
))
id2
=
GID_NONE
;
node
=
add_to_list
(
&
gidlist
,
id
,
name
,
id2
);
node
=
add_to_list
(
&
gidlist
,
(
int
)
id
,
name
,
(
int
)
id2
);
if
(
verbose
>
3
)
{
rprintf
(
FINFO
,
"gid %d(%s) maps to %d
\n
"
,
id
,
name
?
name
:
""
,
id2
);
(
int
)
id
,
name
?
name
:
""
,
(
int
)
id2
);
}
return
node
;
return
id2
;
}
/* this function is a definate candidate for a faster algorithm */
...
...
@@ -228,8 +228,7 @@ static gid_t match_gid(gid_t gid)
return
last_out
=
(
gid_t
)
list
->
id2
;
}
list
=
recv_add_gid
(
gid
,
NULL
);
return
last_out
=
list
->
id2
;
return
last_out
=
recv_add_gid
(
gid
,
NULL
);
}
/* Add a uid to the list of uids. Only called on sending side. */
...
...
@@ -264,7 +263,6 @@ void add_gid(gid_t gid)
add_to_list
(
&
gidlist
,
(
int
)
gid
,
gid_to_name
(
gid
),
0
);
}
/* send a complete uid/gid mapping to the peer */
void
send_uid_list
(
int
f
)
{
...
...
@@ -301,35 +299,42 @@ void send_uid_list(int f)
}
}
static
uid_t
recv_user_name
(
int
f
,
uid_t
uid
)
{
int
len
=
read_byte
(
f
);
char
*
name
=
new_array
(
char
,
len
+
1
);
if
(
!
name
)
out_of_memory
(
"recv_user_name"
);
read_sbuf
(
f
,
name
,
len
);
return
recv_add_uid
(
uid
,
name
);
/* node keeps name's memory */
}
static
gid_t
recv_group_name
(
int
f
,
gid_t
gid
)
{
int
len
=
read_byte
(
f
);
char
*
name
=
new_array
(
char
,
len
+
1
);
if
(
!
name
)
out_of_memory
(
"recv_group_name"
);
read_sbuf
(
f
,
name
,
len
);
return
recv_add_gid
(
gid
,
name
);
/* node keeps name's memory */
}
/* recv a complete uid/gid mapping from the peer and map the uid/gid
* in the file list to local names */
void
recv_uid_list
(
int
f
,
struct
file_list
*
flist
)
{
int
id
,
i
;
char
*
name
;
if
(
preserve_uid
&&
!
numeric_ids
)
{
/* read the uid list */
while
((
id
=
read_int
(
f
))
!=
0
)
{
int
len
=
read_byte
(
f
);
name
=
new_array
(
char
,
len
+
1
);
if
(
!
name
)
out_of_memory
(
"recv_uid_list"
);
read_sbuf
(
f
,
name
,
len
);
recv_add_uid
(
id
,
name
);
/* node keeps name's memory */
}
while
((
id
=
read_int
(
f
))
!=
0
)
recv_user_name
(
f
,
(
uid_t
)
id
);
}
if
(
preserve_gid
&&
!
numeric_ids
)
{
/* read the gid list */
while
((
id
=
read_int
(
f
))
!=
0
)
{
int
len
=
read_byte
(
f
);
name
=
new_array
(
char
,
len
+
1
);
if
(
!
name
)
out_of_memory
(
"recv_uid_list"
);
read_sbuf
(
f
,
name
,
len
);
recv_add_gid
(
id
,
name
);
/* node keeps name's memory */
}
while
((
id
=
read_int
(
f
))
!=
0
)
recv_group_name
(
f
,
(
gid_t
)
id
);
}
/* Now convert all the uids/gids from sender values to our values. */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment