/* file: dbwhich.c G. Moody 20 June 1990 Last revised: 18 April 1997 Find a DB file and print its pathname Copyright (C) Massachusetts Institute of Technology 1997. All rights reserved. */ #include #ifndef __STDC__ extern void exit(); #endif #include main(argc, argv) int argc; char *argv[]; { char *filename, *pname, *prog_name(); int status = 0; pname = prog_name(argv[0]); if (argc == 2 && strcmp(argv[1], "-h") == 0) argc = 0; /* give usage instructions and quit */ switch (argc) { case 2: if (filename = dbfile(argv[1], (char *)NULL)) (void)printf("%s\n", filename); else { (void)fprintf(stderr, "`%s' not found\n", argv[1]); (void)fprintf(stderr, "(DB path = %s)\n", getdb()); status = 2; } break; case 3: dbquiet(); (void)isigopen(argv[2], NULL, 0); if (filename = dbfile(argv[1], argv[2])) (void)printf("%s\n", filename); else { (void)fprintf(stderr, "No file of type `%s' found for record `%s'\n", argv[1], argv[2]); (void)fprintf(stderr, "(DB path = %s)\n", getdb()); status = 2; } break; default: if (argc != 4 || strcmp(argv[1], "-r") != 0) { (void)fprintf(stderr, "usage: %s [-r RECORD ] FILENAME\n", pname); (void)fprintf(stderr, " -or- %s FILE-TYPE RECORD\n", pname); status = 1; } else { (void)isigopen(argv[2], NULL, 0); if (filename = dbfile(argv[3], (char *)NULL)) (void)printf("%s\n", filename); else { (void)fprintf(stderr, "`%s' not found\n", argv[3]); (void)fprintf(stderr, "(DB path = %s)\n", getdb()); status = 2; } } break; } exit(status); /*NOTREACHED*/ } char *prog_name(s) char *s; { char *p = s + strlen(s); #ifdef MSDOS while (p >= s && *p != '\\' && *p != ':') { if (*p == '.') *p = '\0'; /* strip off extension */ if ('A' <= *p && *p <= 'Z') *p += 'a' - 'A'; /* convert to lower case */ p--; } #else while (p >= s && *p != '/') p--; #endif return (p+1); }