From a605d68ac03543b383ba5b1ad2963a92b584bac0 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Tue, 18 Nov 2008 22:22:18 -0600 Subject: The epoch can also show up as 1970-01-01 (depending on timezone), so treat any year >0 and <= 1970 as meaning "file does not exist". --- toys/patch.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/toys/patch.c b/toys/patch.c index 41371a3e..b1f8d413 100644 --- a/toys/patch.c +++ b/toys/patch.c @@ -40,7 +40,7 @@ config PATCH a file when all all hunks to that file apply. Patch prints failed hunks to stderr, and exits with nonzero status if any hunks fail. - A file compared against /dev/null (or with a date in 1969) is + A file compared against /dev/null (or with a date <= the epoch) is created/deleted as appropriate. */ @@ -229,12 +229,15 @@ void patch_main(void) // Open a new file? if (!strncmp("--- ", patchline, 4)) { char *s; + int i; + free(TT.oldname); // Trim date from end of filename (if any). We don't care. for (s = patchline+4; *s && *s!='\t'; s++) if (*s=='\\' && s[1]) s++; - if (!strncmp(s, "\t1969-12-31", 10)) + i = atoi(s); + if (i && i<=1970) TT.oldname = xstrdup("/dev/null"); else { *s = 0; -- cgit v1.2.3