summaryrefslogtreecommitdiff
path: root/contrib/file/file.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/file/file.c')
-rw-r--r--contrib/file/file.c31
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);
}