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
6afe7f23
Commit
6afe7f23
authored
Mar 23, 2001
by
Andrew Tridgell
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
got rid of dependency on alloca in popt
parent
19b27a48
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
32 additions
and
13 deletions
+32
-13
findme.c
popt/findme.c
+7
-4
popt.c
popt/popt.c
+10
-2
poptconfig.c
popt/poptconfig.c
+10
-5
poptparse.c
popt/poptparse.c
+5
-2
No files found.
popt/findme.c
View file @
6afe7f23
...
...
@@ -9,7 +9,7 @@ const char * findProgramPath(const char * argv0) {
char
*
path
=
getenv
(
"PATH"
);
char
*
pathbuf
;
char
*
start
,
*
chptr
;
char
*
buf
;
char
*
buf
,
*
local
=
NULL
;
/* If there is a / in the argv[0], it has to be an absolute
path */
...
...
@@ -18,7 +18,7 @@ const char * findProgramPath(const char * argv0) {
if
(
!
path
)
return
NULL
;
start
=
pathbuf
=
alloca
(
strlen
(
path
)
+
1
);
local
=
start
=
pathbuf
=
malloc
(
strlen
(
path
)
+
1
);
buf
=
malloc
(
strlen
(
path
)
+
strlen
(
argv0
)
+
2
);
strcpy
(
pathbuf
,
path
);
...
...
@@ -28,8 +28,10 @@ const char * findProgramPath(const char * argv0) {
*
chptr
=
'\0'
;
sprintf
(
buf
,
"%s/%s"
,
start
,
argv0
);
if
(
!
access
(
buf
,
X_OK
))
return
buf
;
if
(
!
access
(
buf
,
X_OK
))
{
if
(
local
)
free
(
local
);
return
buf
;
}
if
(
chptr
)
start
=
chptr
+
1
;
...
...
@@ -38,6 +40,7 @@ const char * findProgramPath(const char * argv0) {
}
while
(
start
&&
*
start
);
free
(
buf
);
if
(
local
)
free
(
local
);
return
NULL
;
}
popt/popt.c
View file @
6afe7f23
...
...
@@ -227,7 +227,7 @@ static void execCommand(poptContext con) {
if
(
!
con
->
execAbsolute
&&
strchr
(
script
,
'/'
))
return
;
if
(
!
strchr
(
script
,
'/'
)
&&
con
->
execPath
)
{
char
*
s
=
alloca
(
strlen
(
con
->
execPath
)
+
strlen
(
script
)
+
2
);
char
*
s
=
malloc
(
strlen
(
con
->
execPath
)
+
strlen
(
script
)
+
2
);
sprintf
(
s
,
"%s/%s"
,
con
->
execPath
,
script
);
argv
[
pos
]
=
s
;
}
else
{
...
...
@@ -398,6 +398,14 @@ int poptGetNextOpt(poptContext con)
const
struct
poptOption
*
opt
=
NULL
;
int
done
=
0
;
/* looks a bit tricky to get rid of alloca properly in this fn */
#if HAVE_ALLOCA_H
#define ALLOCA(x) alloca(x)
#else
#define ALLOCA(x) malloc(x)
#endif
while
(
!
done
)
{
const
char
*
origOptString
=
NULL
;
poptCallbackType
cb
=
NULL
;
...
...
@@ -436,7 +444,7 @@ int poptGetNextOpt(poptContext con)
/* Make a copy we can hack at */
localOptString
=
optString
=
strcpy
(
alloca
(
strlen
(
origOptString
)
+
1
),
strcpy
(
ALLOCA
(
strlen
(
origOptString
)
+
1
),
origOptString
);
if
(
!
optString
[
0
])
...
...
popt/poptconfig.c
View file @
6afe7f23
...
...
@@ -55,8 +55,8 @@ static void configLine(poptContext con, char * line) {
}
int
poptReadConfigFile
(
poptContext
con
,
const
char
*
fn
)
{
char
*
file
,
*
chptr
,
*
end
;
char
*
buf
,
*
dst
;
char
*
file
=
NULL
,
*
chptr
,
*
end
;
char
*
buf
=
NULL
,
*
dst
;
int
fd
,
rc
;
int
fileLength
;
...
...
@@ -71,16 +71,17 @@ int poptReadConfigFile(poptContext con, const char * fn) {
fileLength
=
lseek
(
fd
,
0
,
SEEK_END
);
(
void
)
lseek
(
fd
,
0
,
0
);
file
=
alloca
(
fileLength
+
1
);
file
=
malloc
(
fileLength
+
1
);
if
(
read
(
fd
,
file
,
fileLength
)
!=
fileLength
)
{
rc
=
errno
;
close
(
fd
);
errno
=
rc
;
if
(
file
)
free
(
file
);
return
POPT_ERROR_ERRNO
;
}
close
(
fd
);
dst
=
buf
=
alloca
(
fileLength
+
1
);
dst
=
buf
=
malloc
(
fileLength
+
1
);
chptr
=
file
;
end
=
(
file
+
fileLength
);
...
...
@@ -111,6 +112,9 @@ int poptReadConfigFile(poptContext con, const char * fn) {
}
}
free
(
file
);
free
(
buf
);
return
0
;
}
...
...
@@ -125,10 +129,11 @@ int poptReadDefaultConfig(poptContext con, /*@unused@*/ int useEnv) {
if
(
getuid
()
!=
geteuid
())
return
0
;
if
((
home
=
getenv
(
"HOME"
)))
{
fn
=
alloca
(
strlen
(
home
)
+
20
);
fn
=
malloc
(
strlen
(
home
)
+
20
);
strcpy
(
fn
,
home
);
strcat
(
fn
,
"/.popt"
);
rc
=
poptReadConfigFile
(
con
,
fn
);
free
(
fn
);
if
(
rc
)
return
rc
;
}
...
...
popt/poptparse.c
View file @
6afe7f23
...
...
@@ -43,7 +43,8 @@ int poptParseArgvString(const char * s, int * argcPtr, const char *** argvPtr)
const
char
**
argv
=
malloc
(
sizeof
(
*
argv
)
*
argvAlloced
);
int
argc
=
0
;
int
buflen
=
strlen
(
s
)
+
1
;
char
*
buf
=
memset
(
alloca
(
buflen
),
0
,
buflen
);
char
*
buf0
=
calloc
(
buflen
,
1
);
char
*
buf
=
buf0
;
argv
[
argc
]
=
buf
;
...
...
@@ -55,6 +56,7 @@ int poptParseArgvString(const char * s, int * argcPtr, const char *** argvPtr)
src
++
;
if
(
!*
src
)
{
free
(
argv
);
free
(
buf0
);
return
POPT_ERROR_BADQUOTE
;
}
if
(
*
src
!=
quote
)
*
buf
++
=
'\\'
;
...
...
@@ -78,6 +80,7 @@ int poptParseArgvString(const char * s, int * argcPtr, const char *** argvPtr)
src
++
;
if
(
!*
src
)
{
free
(
argv
);
free
(
buf0
);
return
POPT_ERROR_BADQUOTE
;
}
/*@fallthrough@*/
...
...
@@ -94,6 +97,6 @@ int poptParseArgvString(const char * s, int * argcPtr, const char *** argvPtr)
(
void
)
poptDupArgv
(
argc
,
argv
,
argcPtr
,
argvPtr
);
free
(
argv
);
free
(
buf0
);
return
0
;
}
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