diff options
Diffstat (limited to 'contrib/file/file.c')
| -rw-r--r-- | contrib/file/file.c | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/contrib/file/file.c b/contrib/file/file.c index 429e53a69bdf..236591c23cd6 100644 --- a/contrib/file/file.c +++ b/contrib/file/file.c @@ -56,14 +56,14 @@ #include "patchlevel.h" #ifndef lint -FILE_RCSID("@(#)$Id: file.c,v 1.56 2001/03/11 20:29:16 christos Exp $") +FILE_RCSID("@(#)$Id: file.c,v 1.58 2001/07/22 21:04:15 christos Exp $") #endif /* lint */ #ifdef S_IFLNK -# define USAGE "Usage: %s [-bciknvzL] [-f namefile] [-m magicfiles] file...\n" +# define USAGE "Usage: %s [-bciknsvzL] [-f namefile] [-m magicfiles] file...\n" #else -# define USAGE "Usage: %s [-bciknvz] [-f namefile] [-m magicfiles] file...\n" +# define USAGE "Usage: %s [-bciknsvz] [-f namefile] [-m magicfiles] file...\n" #endif #ifndef MAGIC @@ -89,7 +89,7 @@ int /* Misc globals */ struct magic *magic; /* array of magic entries */ -const char *magicfile; /* where magic be found */ +const char *magicfile = 0; /* where the magic is */ const char *default_magicfile = MAGIC; char *progname; /* used throughout */ @@ -115,7 +115,8 @@ main(argc, argv) { int c; int action = 0, didsomefiles = 0, errflg = 0, ret = 0, app = 0; - char *mime; + char *mime, *home, *usermagic; + struct stat sb; #ifdef LC_CTYPE setlocale(LC_CTYPE, ""); /* makes islower etc work for other langs */ @@ -126,8 +127,20 @@ main(argc, argv) else progname = argv[0]; - if (!(magicfile = getenv("MAGIC"))) - magicfile = default_magicfile; + magicfile = default_magicfile; + if ((usermagic = getenv("MAGIC")) != NULL) + magicfile = usermagic; + else + if (home = getenv("HOME")) { + if ((usermagic = malloc(strlen(home) + 8)) != NULL) { + (void)strcpy(usermagic, home); + (void)strcat(usermagic, "/.magic"); + if (stat(usermagic, &sb)<0) + free(usermagic); + else + magicfile = usermagic; + } + } while ((c = getopt(argc, argv, "bcdf:ikm:nsvzCL")) != EOF) switch (c) { @@ -155,7 +168,7 @@ main(argc, argv) break; case 'i': iflag++; - if ((mime = malloc(strlen(magicfile) + 5)) != NULL) { + if ((mime = malloc(strlen(magicfile) + 6)) != NULL) { (void)strcpy(mime, magicfile); (void)strcat(mime, ".mime"); magicfile = mime; @@ -458,8 +471,6 @@ static void usage() { (void)fprintf(stderr, USAGE, progname); -#ifdef QUICK (void)fprintf(stderr, "Usage: %s -C [-m magic]\n", progname); -#endif exit(1); } |
