diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | Src/hist.c | 4 | ||||
-rw-r--r-- | Src/input.c | 4 | ||||
-rw-r--r-- | Src/watch.c | 4 |
4 files changed, 12 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog index 8007f51a2..6e32e8864 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2021-04-11 Oliver Kiddle <opk@zsh.org> + * 48504: Src/hist.c, Src/input.c, Src/watch.c: + use SEEK_ macros in fseek() calls + + * Michael Stapelberg: 45396: Src/hist.c: readhistfile: + avoid thousands of lseek(2) syscalls via ftell() + * Marc Chantreux: 48466: Completion/Unix/Command/_surfraw: correct indentation and remove tabs and trailing spaces diff --git a/Src/hist.c b/Src/hist.c index 2e5ac97d9..42cae030c 100644 --- a/Src/hist.c +++ b/Src/hist.c @@ -2664,7 +2664,7 @@ readhistfile(char *fn, int err, int readflags) pushheap(); if (readflags & HFILE_FAST && lasthist.text) { if (lasthist.fpos < lasthist.fsiz) { - fseek(in, lasthist.fpos, 0); + fseek(in, lasthist.fpos, SEEK_SET); searching = 1; } else { @@ -2741,7 +2741,7 @@ readhistfile(char *fn, int err, int readflags) && histstrcmp(pt, lasthist.text) == 0) searching = 0; else { - fseek(in, 0, 0); + fseek(in, 0, SEEK_SET); histfile_linect = 0; searching = -1; } diff --git a/Src/input.c b/Src/input.c index e9989ffe4..f568cc135 100644 --- a/Src/input.c +++ b/Src/input.c @@ -495,9 +495,9 @@ stuff(char *fn) zerr("can't open %s", fn); return 1; } - fseek(in, 0, 2); + fseek(in, 0, SEEK_END); len = ftell(in); - fseek(in, 0, 0); + fseek(in, 0, SEEK_SET); buf = (char *)zalloc(len + 1); if (!(fread(buf, len, 1, in))) { zerr("read error on %s", fn); diff --git a/Src/watch.c b/Src/watch.c index 93b3cb134..c41704315 100644 --- a/Src/watch.c +++ b/Src/watch.c @@ -169,9 +169,9 @@ getlogtime(WATCH_STRUCT_UTMP *u, int inout) return u->ut_time; if (!(in = fopen(WATCH_WTMP_FILE, "r"))) return time(NULL); - fseek(in, 0, 2); + fseek(in, 0, SEEK_END); do { - if (fseek(in, ((first) ? -1 : -2) * sizeof(WATCH_STRUCT_UTMP), 1)) { + if (fseek(in, ((first) ? -1 : -2) * sizeof(WATCH_STRUCT_UTMP), SEEK_CUR)) { fclose(in); return time(NULL); } |