aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/pkg_install/lib
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/pkg_install/lib')
-rw-r--r--usr.sbin/pkg_install/lib/file.c15
-rw-r--r--usr.sbin/pkg_install/lib/lib.h3
2 files changed, 14 insertions, 4 deletions
diff --git a/usr.sbin/pkg_install/lib/file.c b/usr.sbin/pkg_install/lib/file.c
index 1d578d69d0ef..55ba9d522156 100644
--- a/usr.sbin/pkg_install/lib/file.c
+++ b/usr.sbin/pkg_install/lib/file.c
@@ -1,5 +1,5 @@
#ifndef lint
-static const char *rcsid = "$Id: file.c,v 1.10 1995/05/30 03:50:05 rgrimes Exp $";
+static const char *rcsid = "$Id: file.c,v 1.11 1995/06/24 10:12:59 asami Exp $";
#endif
/*
@@ -71,6 +71,15 @@ isemptydir(char *fname)
return FALSE;
}
+Boolean
+isfile(char *fname)
+{
+ struct stat sb;
+ if (stat(fname, &sb) != FAIL && S_ISREG(sb.st_mode))
+ return TRUE;
+ return FALSE;
+}
+
/* Check to see if file is a file and is empty. If nonexistent or not
a file, say "it's empty", otherwise return TRUE if zero sized. */
Boolean
@@ -256,7 +265,7 @@ fileFindByPath(char *fname)
static char tmp[FILENAME_MAX];
char *cp;
- if (fexists(fname)) {
+ if (fexists(fname) && isfile(fname)) {
strcpy(tmp, fname);
return tmp;
}
@@ -265,7 +274,7 @@ fileFindByPath(char *fname)
char *cp2 = strsep(&cp, ":");
snprintf(tmp, FILENAME_MAX, "%s/%s.tgz", cp2 ? cp2 : cp, fname);
- if (fexists(tmp))
+ if (fexists(tmp) && isfile(fname))
return tmp;
}
return NULL;
diff --git a/usr.sbin/pkg_install/lib/lib.h b/usr.sbin/pkg_install/lib/lib.h
index 61be709490e2..4f80cee427d6 100644
--- a/usr.sbin/pkg_install/lib/lib.h
+++ b/usr.sbin/pkg_install/lib/lib.h
@@ -1,4 +1,4 @@
-/* $Id: lib.h,v 1.15 1995/04/22 13:58:43 jkh Exp $ */
+/* $Id: lib.h,v 1.16 1995/04/26 15:08:22 jkh Exp $ */
/*
* FreeBSD install - a package for the installation and maintainance
@@ -122,6 +122,7 @@ char *basename_of(char *);
/* File */
Boolean fexists(char *);
Boolean isdir(char *);
+Boolean isfile(char *);
Boolean isempty(char *);
Boolean isURL(char *);
char *fileGetURL(char *);