nsxiv66c3c55
Use POSIX.1-2008 getline(3)
+6 −37
4 files changed
| @@ -5,7 +5,7 @@ MANPREFIX := $(PREFIX)/share/man | |||
| 5 | 5 | ||
| 6 | 6 | CC ?= gcc | |
| 7 | 7 | CFLAGS += -std=c99 -Wall -pedantic | |
| 8 | − | CPPFLAGS += -I$(PREFIX)/include -D_XOPEN_SOURCE=500 | |
| 8 | + | CPPFLAGS += -I$(PREFIX)/include -D_XOPEN_SOURCE=700 | |
| 9 | 9 | LDFLAGS += -L$(PREFIX)/lib | |
| 10 | 10 | LIBS := -lX11 -lImlib2 | |
| 11 | 11 | ||
| @@ -825,8 +825,9 @@ int main(int argc, char **argv) | |||
| 825 | 825 | fileidx = 0; | |
| 826 | 826 | ||
| 827 | 827 | if (options->from_stdin) { | |
| 828 | + | n = 0; | |
| 828 | 829 | filename = NULL; | |
| 829 | − | while ((len = get_line(&filename, &n, stdin)) > 0) { | |
| 830 | + | while ((len = getline(&filename, &n, stdin)) > 0) { | |
| 830 | 831 | if (filename[len-1] == '\n') | |
| 831 | 832 | filename[len-1] = '\0'; | |
| 832 | 833 | check_add_file(filename, true); | |
| @@ -883,9 +884,9 @@ int main(int argc, char **argv) | |||
| 883 | 884 | const char *name[] = { "image-info", "key-handler" }; | |
| 884 | 885 | ||
| 885 | 886 | for (i = 0; i < ARRLEN(cmd); i++) { | |
| 886 | − | len = strlen(homedir) + strlen(dsuffix) + strlen(name[i]) + 12; | |
| 887 | − | *cmd[i] = (char*) s_malloc(len); | |
| 888 | − | snprintf(*cmd[i], len, "%s%s/sxiv/exec/%s", homedir, dsuffix, name[i]); | |
| 887 | + | n = strlen(homedir) + strlen(dsuffix) + strlen(name[i]) + 12; | |
| 888 | + | *cmd[i] = (char*) s_malloc(n); | |
| 889 | + | snprintf(*cmd[i], n, "%s%s/sxiv/exec/%s", homedir, dsuffix, name[i]); | |
| 889 | 890 | if (access(*cmd[i], X_OK) != 0) { | |
| 890 | 891 | free(*cmd[i]); | |
| 891 | 892 | *cmd[i] = NULL; | |
| @@ -96,36 +96,6 @@ void die(const char* fmt, ...) | |||
| 96 | 96 | exit(EXIT_FAILURE); | |
| 97 | 97 | } | |
| 98 | 98 | ||
| 99 | − | ssize_t get_line(char **buf, size_t *n, FILE *stream) | |
| 100 | − | { | |
| 101 | − | size_t len; | |
| 102 | − | char *s; | |
| 103 | − | ||
| 104 | − | if (*buf == NULL || *n == 0) { | |
| 105 | − | *n = BUF_SIZE; | |
| 106 | − | *buf = (char*) s_malloc(*n); | |
| 107 | − | } | |
| 108 | − | s = *buf; | |
| 109 | − | ||
| 110 | − | while (true) { | |
| 111 | − | if (fgets(s, *n - (s - *buf), stream) == NULL) | |
| 112 | − | return -1; | |
| 113 | − | len = strlen(s); | |
| 114 | − | if (feof(stream)) | |
| 115 | − | break; | |
| 116 | − | if (len > 0 && s[len-1] == '\n') | |
| 117 | − | break; | |
| 118 | − | if (len + 1 == *n - (s - *buf)) { | |
| 119 | − | *buf = (char*) s_realloc(*buf, 2 * *n); | |
| 120 | − | s = *buf + *n - 1; | |
| 121 | − | *n *= 2; | |
| 122 | − | } else { | |
| 123 | − | s += len; | |
| 124 | − | } | |
| 125 | − | } | |
| 126 | − | return s - *buf + len; | |
| 127 | − | } | |
| 128 | − | ||
| 129 | 99 | void size_readable(float *size, const char **unit) | |
| 130 | 100 | { | |
| 131 | 101 | const char *units[] = { "", "K", "M", "G" }; | |
| @@ -68,8 +68,6 @@ char* s_strdup(const char*); | |||
| 68 | 68 | void warn(const char*, ...); | |
| 69 | 69 | void die(const char*, ...); | |
| 70 | 70 | ||
| 71 | − | ssize_t get_line(char**, size_t*, FILE*); | |
| 72 | − | ||
| 73 | 71 | void size_readable(float*, const char**); | |
| 74 | 72 | ||
| 75 | 73 | char* absolute_path(const char*); | |