diff options
| author | gonzo <gonzo@toniatuh.com> | 2023-12-02 13:27:07 +0100 |
|---|---|---|
| committer | gonzo <gonzo@toniatuh.com> | 2023-12-12 11:06:05 +0100 |
| commit | d1252aa55cd804e8fad835a4ad1529858d9ab61d (patch) | |
| tree | aac179af15f3fd56699a5816e55fecf7c8afc4f4 /main.c | |
| parent | 493d0a47dd319c29863b95491cddd02fe640d76e (diff) | |
| download | org-to-conky-master.tar.gz | |
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 13 |
1 files changed, 10 insertions, 3 deletions
@@ -9,18 +9,25 @@ static char *read_file_to_buffer(char *filename) { if (fd < 0) return NULL; // if error opening file, return NULLptr size_t bufsize = BS; size_t bufread = 0; - char *buf = (char *)malloc(bufsize); + ssize_t r = 0; + char *buf = (char *)malloc(bufsize+1); char *newbuf = NULL; - while (read(fd, buf + bufread, BS) == BS) { + while ((r = read(fd, buf + bufread, BS)) == BS) { newbuf = (char *)malloc(bufsize + BS); - strncpy(newbuf, buf, bufsize); + memcpy(newbuf, buf, bufsize); free(buf); buf = newbuf; bufsize += BS; bufread += BS; } close(fd); + if (r < 0) { + fprintf(stderr, "Error: error occured while reading file \"%s\".\n", filename); + free(buf); + return NULL; + } + buf[bufread + (size_t)r + 1] = 0; return buf; } |
