Module Name: src Committed By: rillig Date: Wed Jan 26 12:16:03 UTC 2022
Modified Files: src/usr.bin/make: meta.c Log Message: make: clean up eat_dots for meta mode No binary change. To generate a diff of this commit: cvs rdiff -u -r1.192 -r1.193 src/usr.bin/make/meta.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/make/meta.c diff -u src/usr.bin/make/meta.c:1.192 src/usr.bin/make/meta.c:1.193 --- src/usr.bin/make/meta.c:1.192 Sat Jan 15 19:34:07 2022 +++ src/usr.bin/make/meta.c Wed Jan 26 12:16:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: meta.c,v 1.192 2022/01/15 19:34:07 rillig Exp $ */ +/* $NetBSD: meta.c,v 1.193 2022/01/26 12:16:03 rillig Exp $ */ /* * Implement 'meta' mode. @@ -205,31 +205,16 @@ filemon_read(FILE *mfp, int fd) * we use this, to clean up ./ and ../ */ static void -eat_dots(char *buf, size_t bufsz, int dots) +eat_dots(char *buf, size_t bufsz, const char *eat, size_t eatlen) { char *cp; char *cp2; - const char *eat; - size_t eatlen; - - switch (dots) { - case 1: - eat = "/./"; - eatlen = 2; - break; - case 2: - eat = "/../"; - eatlen = 3; - break; - default: - return; - } do { cp = strstr(buf, eat); if (cp != NULL) { cp2 = cp + eatlen; - if (dots == 2 && cp > buf) { + if (eatlen == 3 && cp > buf) { do { cp--; } while (cp > buf && *cp != '/'); @@ -284,8 +269,8 @@ meta_name(char *mname, size_t mnamelen, } else { snprintf(buf, sizeof buf, "%s/%s", cwd, tname); } - eat_dots(buf, sizeof buf, 1); /* ./ */ - eat_dots(buf, sizeof buf, 2); /* ../ */ + eat_dots(buf, sizeof buf, "/./", 2); + eat_dots(buf, sizeof buf, "/../", 3); tname = buf; } }