chiark
/
gitweb
/
~mdw
/
mLib
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sys/t/mdup-test.c: Introduce a `-v' option to help debug failures.
[mLib]
/
sys
/
t
/
mdup-test.c
diff --git
a/sys/t/mdup-test.c
b/sys/t/mdup-test.c
index ef9429d30fe0e3590deff7d089653a16aa6b5e54..08ba0adaa8d600637f5735140508da4516af10d2 100644
(file)
--- 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 flag[MAXFD];
mdup_fd fds[MAXFD];
int win = 1;
+ int verbose = 0;
for (i = 1, j = 0; i < argc; i++) {
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)
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;
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]];
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,
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 (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("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;
}
}
win = 0;
}
}