int main(int argc, char **argv) { int ch, i, f; char buf[50]; char *dev = NULL; const char *errstr; int addr = 0; int ncont; while ((ch = getopt(argc, argv, "a:df:v?")) != -1) { switch (ch) { case 'a': addr = strtonum(optarg, 1, USB_MAX_DEVICES, &errstr); if (errstr) errx(1, "addr %s", errstr); break; case 'd': showdevs = 1; break; case 'f': dev = optarg; break; case 'v': verbose = 1; break; default: usage(); } } argc -= optind; argv += optind; if (dev == 0) { for (ncont = 0, i = 0; i < 10; i++) { snprintf(buf, sizeof buf, "%s%d", USBDEV, i); f = open(buf, O_RDONLY); if (f >= 0) { dumpone(buf, f, addr); close(f); } else { if (errno == ENOENT || errno == ENXIO) continue; warn("%s", buf); } ncont++; } if (verbose && ncont == 0) printf("%s: no USB controllers found\n", __progname); } else { f = open(dev, O_RDONLY); if (f >= 0) dumpone(dev, f, addr); else err(1, "%s", dev); } exit(0); }
void dumpit(char *str, Flow *r0, int isreg) { Flow *r, *r1; print("\n%s\n", str); for(r = r0; r != nil; r = r->link) { dumpone(r, isreg); r1 = r->p2; if(r1 != nil) { print(" pred:"); for(; r1 != nil; r1 = r1->p2link) print(" %.4ud", r1->prog->loc); if(r->p1 != nil) print(" (and %.4ud)", r->p1->prog->loc); else print(" (only)"); print("\n"); } // r1 = r->s1; // if(r1 != nil) { // print(" succ:"); // for(; r1 != R; r1 = r1->s1) // print(" %.4ud", r1->prog->loc); // print("\n"); // } } }
void dumpit(char *str, Reg *r0) { Reg *r, *r1; print("\n%s\n", str); for(r = r0; r != R; r = r->link) { dumpone(r); r1 = r->p2; if(r1 != R) { print(" pred:"); for(; r1 != R; r1 = r1->p2link) print(" %.4ud", r1->prog->loc); print("\n"); } // r1 = r->s1; // if(r1 != R) { // print(" succ:"); // for(; r1 != R; r1 = r1->s1) // print(" %.4ud", r1->prog->loc); // print("\n"); // } } }