Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
David Goulet
Tor
Commits
b04d719c
Commit
b04d719c
authored
Jul 10, 2018
by
Nick Mathewson
👁
Browse files
Integrate getdelim() and getline() support into Tor.
parent
1604c0fe
Changes
5
Hide whitespace changes
Inline
Side-by-side
configure.ac
View file @
b04d719c
...
...
@@ -585,7 +585,9 @@ AC_CHECK_FUNCS(
ftime \
get_current_dir_name \
getaddrinfo \
getdelim \
getifaddrs \
getline \
getpass \
getrlimit \
gettimeofday \
...
...
src/ext/getdelim.c
View file @
b04d719c
...
...
@@ -30,21 +30,19 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#include
<nbcompat.h>
#include
<nbcompat/stdio.h>
#include
<nbcompat/stdlib.h>
#if !HAVE_GETDELIM
#ifndef BUFSIZ
#define BUFSIZ 512
#endif
ssize_t
getdelim
(
char
**
buf
,
size_t
*
bufsiz
,
int
delimiter
,
FILE
*
fp
)
compat_
getdelim
_
(
char
**
buf
,
size_t
*
bufsiz
,
int
delimiter
,
FILE
*
fp
)
{
char
*
ptr
,
*
eptr
;
if
(
*
buf
==
NULL
||
*
bufsiz
==
0
)
{
*
bufsiz
=
BUFSIZ
;
if
((
*
buf
=
malloc
(
*
bufsiz
))
==
NULL
)
if
((
*
buf
=
raw_
malloc
(
*
bufsiz
))
==
NULL
)
return
-
1
;
}
...
...
@@ -69,7 +67,7 @@ getdelim(char **buf, size_t *bufsiz, int delimiter, FILE *fp)
char
*
nbuf
;
size_t
nbufsiz
=
*
bufsiz
*
2
;
ssize_t
d
=
ptr
-
*
buf
;
if
((
nbuf
=
realloc
(
*
buf
,
nbufsiz
))
==
NULL
)
if
((
nbuf
=
raw_
realloc
(
*
buf
,
nbufsiz
))
==
NULL
)
return
-
1
;
*
buf
=
nbuf
;
*
bufsiz
=
nbufsiz
;
...
...
@@ -78,5 +76,3 @@ getdelim(char **buf, size_t *bufsiz, int delimiter, FILE *fp)
}
}
}
#endif
src/lib/fs/.may_include
View file @
b04d719c
orconfig.h
ext/getdelim.c
lib/cc/*.h
lib/container/*.h
lib/encoding/*.h
...
...
src/lib/fs/files.c
View file @
b04d719c
...
...
@@ -715,3 +715,7 @@ read_file_to_str, (const char *filename, int flags, struct stat *stat_out))
return
string
;
}
#if !defined(HAVE_GETDELIM) || defined(TOR_UNIT_TESTS)
#include
"ext/getdelim.c"
#endif
src/lib/fs/files.h
View file @
b04d719c
...
...
@@ -103,4 +103,38 @@ char *read_file_to_str_until_eof(int fd, size_t max_bytes_to_read,
size_t
*
sz_out
)
ATTR_MALLOC
;
#if !defined(HAVE_GETDELIM) || defined(TOR_UNIT_TESTS)
ssize_t
compat_getdelim_
(
char
**
lineptr
,
size_t
*
n
,
int
delim
,
FILE
*
stream
);
#endif
#ifdef HAVE_GETDELIM
/**
* Cross-platform wrapper for getdelim(): behaves as the POSIX-standard
* getdelim() function.
*
* Note that this function will use the libc memory allocator -- so any memory
* passed to this function must come from raw_malloc(), and must be freed by
* raw_free() -- don't use tor_malloc() and tor_free() with this.
*/
#define tor_getdelim(lineptr, n, delim, stream) \
getdelim((lineptr), (n), (delim), (stream))
#else
#define tor_getdelim(lineptr, n, delim, stream) \
compat_getdelim_((lineptr), (n), (delim), (stream))
#endif
#ifdef HAVE_GETLINE
/**
* Cross-platform wrapper for getline(): behaves as the POSIX-standard
* getline() function.
*
* See tor_getdelim() for usage notes.
*/
#define tor_getline(lineptr, n, stream) \
getline((lineptr), (n), (stream))
#else
#define tor_getline(lineptr, n, stream) \
tor_getdelim((lineptr), (n), '\n', (stream))
#endif
#endif
Write
Preview
Supports
Markdown
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