diff options
author | Alexander Færøy <ahf@torproject.org> | 2017-03-08 23:11:42 +0100 |
---|---|---|
committer | Alexander Færøy <ahf@torproject.org> | 2017-03-09 00:10:18 +0100 |
commit | 02fc0a5ecfc917e9261596816e926468db976453 (patch) | |
tree | 8d8c32a5d77138d12843bbde26302b6d6b16c603 /src/common | |
parent | 02ef06516e64c1559b24123d7c7d164b76110c9a (diff) | |
download | tor-02fc0a5ecfc917e9261596816e926468db976453.tar.gz tor-02fc0a5ecfc917e9261596816e926468db976453.zip |
Remove fgets() compatbility function and related tests.
This patch removes the `tor_fgets()` wrapper around `fgets(3)` since it
is no longer needed. The function was created due to inconsistency
between the returned values of `fgets(3)` on different versions of Unix
when using `fgets(3)` on non-blocking file descriptors, but with the
recent changes in bug #21654 we switch from unbuffered to direct I/O on
non-blocking file descriptors in our utility module.
We continue to use `fgets(3)` directly in the geoip and dirserv module
since this usage is considered safe.
This patch also removes the test-case that was created to detect
differences in the implementation of `fgets(3)` as well as the changes
file since these changes was not included in any releases yet.
See: https://bugs.torproject.org/21654
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/compat.c | 39 | ||||
-rw-r--r-- | src/common/compat.h | 2 |
2 files changed, 0 insertions, 41 deletions
diff --git a/src/common/compat.c b/src/common/compat.c index da4283fbaa..0dbede6bed 100644 --- a/src/common/compat.c +++ b/src/common/compat.c @@ -3476,45 +3476,6 @@ tor_getpass(const char *prompt, char *output, size_t buflen) #endif } -/** Read at most one less than the number of characters specified by - * <b>size</b> from the given <b>stream</b> and store it in <b>str</b>. - * - * Reading stops when a newline character is found or at EOF or error. If any - * characters are read and there's no error, a trailing NUL byte is appended to - * the end of <b>str</b>. - * - * Upon successful completion, this function returns a pointer to the string - * <b>str</b>. If EOF occurs before any characters are read the function will - * return NULL and the content of <b>str</b> is unchanged. Upon error, the - * function returns NULL and the caller must check for error using foef(3) and - * ferror(3). - */ -char * -tor_fgets(char *str, int size, FILE *stream) -{ - char *ret; - - /* Reset errno before our call to fgets(3) to avoid a situation where the - * caller is calling us again because we just returned NULL and errno == - * EAGAIN, but when they call us again we will always return NULL because the - * error flag on the file handler remains set and errno is set to EAGAIN. - */ - errno = 0; - - ret = fgets(str, size, stream); - - /* FreeBSD, OpenBSD, Linux (glibc), and Linux (musl) seem to disagree about - * what to do in the given situation. We check if the stream has been flagged - * with an error-bit and return NULL in that situation if errno is also set - * to EAGAIN. - */ - if (ferror(stream) && errno == EAGAIN) { - return NULL; - } - - return ret; -} - /** Return the amount of free disk space we have permission to use, in * bytes. Return -1 if the amount of free space can't be determined. */ int64_t diff --git a/src/common/compat.h b/src/common/compat.h index 1f51ece61f..ee1c9454de 100644 --- a/src/common/compat.h +++ b/src/common/compat.h @@ -740,8 +740,6 @@ STATIC int tor_ersatz_socketpair(int family, int type, int protocol, ssize_t tor_getpass(const char *prompt, char *output, size_t buflen); -char *tor_fgets(char *str, int size, FILE *stream); - /* This needs some of the declarations above so we include it here. */ #include "compat_threads.h" |