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
837d01dd
Commit
837d01dd
authored
Oct 14, 2005
by
Wayne Davison
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improved parse_size_arg() a little more.
parent
926d86d1
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
19 additions
and
15 deletions
+19
-15
options.c
options.c
+19
-15
No files found.
options.c
View file @
837d01dd
...
...
@@ -648,11 +648,11 @@ static int count_args(const char **argv)
}
static
OFF_T
parse_size_arg
(
char
**
size_arg
)
static
OFF_T
parse_size_arg
(
char
**
size_arg
,
char
def_suf
)
{
const
char
*
arg
;
OFF_T
size
;
int
mult
,
make_compatible
=
0
;
const
char
*
arg
,
*
p
;
OFF_T
size
=
0
;
for
(
arg
=
*
size_arg
;
isdigit
(
*
(
uchar
*
)
arg
);
arg
++
)
{}
if
(
*
arg
==
'.'
)
...
...
@@ -661,27 +661,31 @@ static OFF_T parse_size_arg(char **size_arg)
mult
=
1000
,
make_compatible
=
1
;
else
mult
=
1024
;
switch
(
*
arg
)
{
if
((
p
=
strstr
(
arg
,
"+1"
))
!=
NULL
||
(
p
=
strstr
(
arg
,
"-1"
))
!=
NULL
)
{
if
(
p
[
2
]
==
'\0'
)
{
size
=
atoi
(
p
+
(
*
p
==
'+'
));
make_compatible
=
1
;
}
else
p
=
NULL
;
}
switch
(
*
arg
&&
arg
!=
p
?
*
arg
:
def_suf
)
{
case
'b'
:
case
'B'
:
size
+=
atof
(
*
size_arg
);
break
;
case
'k'
:
case
'K'
:
size
=
atof
(
*
size_arg
)
*
mult
;
size
+
=
atof
(
*
size_arg
)
*
mult
;
break
;
case
'm'
:
case
'M'
:
size
=
atof
(
*
size_arg
)
*
mult
*
mult
;
size
+
=
atof
(
*
size_arg
)
*
mult
*
mult
;
break
;
case
'g'
:
case
'G'
:
size
=
atof
(
*
size_arg
)
*
mult
*
mult
*
mult
;
break
;
case
'\0'
:
case
'+'
:
case
'-'
:
size
=
atof
(
*
size_arg
);
size
+=
atof
(
*
size_arg
)
*
mult
*
mult
*
mult
;
break
;
default:
size
=
-
1
;
break
;
}
if
(
strchr
(
arg
,
'+'
))
size
++
,
make_compatible
=
1
;
else
if
(
strchr
(
arg
,
'-'
))
size
--
,
make_compatible
=
1
;
if
(
size
>
0
&&
make_compatible
)
{
/* We convert this manually because we many need %lld
* precision, and that's not portable. */
...
...
@@ -911,7 +915,7 @@ int parse_arguments(int *argc, const char ***argv, int frommain)
break
;
case
OPT_MAX_SIZE
:
if
((
max_size
=
parse_size_arg
(
&
max_size_arg
))
<=
0
)
{
if
((
max_size
=
parse_size_arg
(
&
max_size_arg
,
'b'
))
<=
0
)
{
snprintf
(
err_buf
,
sizeof
err_buf
,
"--max-size value is invalid: %s
\n
"
,
max_size_arg
);
...
...
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