From 2793197bf62a4745206199dfed6ec19bd8566d8a Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Fri, 16 Nov 2018 18:06:20 +0000 Subject: [PATCH] sys/t/mdup-test.c: Introduce a `-v' option to help debug failures. In particular, just reporting `ino FD[I] wrong' isn't very helpful. But adding inode numbers won't help unless we've already printed the initial numbers, and that would add unnecessary verbosity in the usual case. --- sys/t/mdup-test.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/sys/t/mdup-test.c b/sys/t/mdup-test.c index ef9429d..08ba0ad 100644 --- a/sys/t/mdup-test.c +++ b/sys/t/mdup-test.c @@ -21,8 +21,10 @@ int main(int argc, char *argv[]) int flag[MAXFD]; mdup_fd fds[MAXFD]; int win = 1; + int verbose = 0; for (i = 1, j = 0; i < argc; i++) { + if (strcmp(argv[i], "-v") == 0) { verbose++; continue; } if (j >= MAXFD) { fprintf(stderr, "too many\n"); exit(1); } if (sscanf(argv[i], "%d:%d", &fds[j].cur, &fds[j].want) < 2 || fds[j].cur >= MAXFD) @@ -33,9 +35,11 @@ int main(int argc, char *argv[]) for (i = 0; i < MAXFD; i++) flag[i] = -1; for (i = 0; i < n; i++) { fd = fds[i].cur; - if (flag[fd] >= 0) + if (flag[fd] >= 0) { ino[i] = ino[flag[fd]]; - else { + if (verbose) + printf("exist fd %d[%d] = ino %lu\n", fd, i, (unsigned long)ino[i]); + } else { flag[fd] = i; if ((fd2 = open(",delete-me", O_WRONLY | O_CREAT | O_EXCL, @@ -45,6 +49,8 @@ int main(int argc, char *argv[]) if (fd2 != fd) { if (dup2(fd2, fd) < 0) fail("dup2"); close(fd2); } if (fstat(fd, &st)) fail("fstat"); ino[i] = st.st_ino; + if (verbose) + printf("open fd %d[%d] = ino %lu\n", fd, i, (unsigned long)ino[i]); } } @@ -59,7 +65,9 @@ int main(int argc, char *argv[]) printf("fstat %d[%d] failed: %s\n", fd, i, strerror(errno)); win = 0; } else if (st.st_ino != ino[i]) { - printf("ino %d[%d] wrong\n", fd, i); + if (!verbose) printf("ino %d[%d] wrong\n", fd, i); + else printf("ino %d[%d] = %lu != %lu\n", fd, i, + (unsigned long)(st.st_ino), (unsigned long)ino[i]); win = 0; } } -- 2.11.0