summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>1993-10-06 00:13:56 +0000
committerJim Meyering <jim@meyering.net>1993-10-06 00:13:56 +0000
commitd5071504f3e2887eab96805ce5dffc8c5e4cb99a (patch)
tree84054f83c75654889e54f24dd16c6c420630524a
parent57227f6a8c9a155314fb2d04c717bed563661562 (diff)
downloadgnulib-d5071504f3e2887eab96805ce5dffc8c5e4cb99a.tar.gz
GNU file utilitiesFILEUTILS-3_8_3a
-rw-r--r--lib/filemode.c53
-rw-r--r--lib/fsusage.c2
-rw-r--r--lib/isdir.c8
-rw-r--r--lib/makepath.c9
-rw-r--r--lib/mkdir.c12
-rw-r--r--lib/modechange.c8
-rw-r--r--lib/rename.c8
7 files changed, 86 insertions, 14 deletions
diff --git a/lib/filemode.c b/lib/filemode.c
index 9293af6815..0ec4bf7fd9 100644
--- a/lib/filemode.c
+++ b/lib/filemode.c
@@ -1,5 +1,5 @@
/* filemode.c -- make a string describing file modes
- Copyright (C) 1985, 1990 Free Software Foundation, Inc.
+ Copyright (C) 1985, 1990, 1993 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -16,8 +16,12 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifdef HAVE_CONFIG_H
+#if defined (emacs) || defined (CONFIG_BROKETS)
+#include <config.h>
+#else
#include "config.h"
#endif
+#endif
#include <sys/types.h>
#include <sys/stat.h>
@@ -33,26 +37,59 @@
#define mode_t unsigned short
#endif
+#ifdef STAT_MACROS_BROKEN
+#ifdef S_ISBLK
+#undef S_ISBLK
+#endif
+#ifdef S_ISCHR
+#undef S_ISCHR
+#endif
+#ifdef S_ISDIR
+#undef S_ISDIR
+#endif
+#ifdef S_ISFIFO
+#undef S_ISFIFO
+#endif
+#ifdef S_ISLNK
+#undef S_ISLNK
+#endif
+#ifdef S_ISMPB
+#undef S_ISMPB
+#endif
+#ifdef S_ISMPC
+#undef S_ISMPC
+#endif
+#ifdef S_ISNWK
+#undef S_ISNWK
+#endif
+#ifdef S_ISREG
+#undef S_ISREG
+#endif
+#ifdef S_ISSOCK
+#undef S_ISSOCK
+#endif
+#endif /* STAT_MACROS_BROKEN. */
+
#if !defined(S_ISBLK) && defined(S_IFBLK)
-#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
+#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
#endif
#if !defined(S_ISCHR) && defined(S_IFCHR)
-#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
+#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
#endif
#if !defined(S_ISDIR) && defined(S_IFDIR)
-#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
+#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
#if !defined(S_ISREG) && defined(S_IFREG)
-#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
+#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
#endif
#if !defined(S_ISFIFO) && defined(S_IFIFO)
-#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
+#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
#endif
#if !defined(S_ISLNK) && defined(S_IFLNK)
-#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
+#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
#endif
#if !defined(S_ISSOCK) && defined(S_IFSOCK)
-#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
+#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
#endif
#if !defined(S_ISMPB) && defined(S_IFMPB) /* V7 */
#define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB)
diff --git a/lib/fsusage.c b/lib/fsusage.c
index 9307a40b5a..2f1179b231 100644
--- a/lib/fsusage.c
+++ b/lib/fsusage.c
@@ -70,7 +70,7 @@ adjust_blocks (blocks, fromsize, tosize)
else if (fromsize > tosize) /* E.g., from 2048 to 512. */
return blocks * (fromsize / tosize);
else /* E.g., from 256 to 512. */
- return (blocks + (blocks < 0 ? -1 : +1)) / (tosize / fromsize);
+ return (blocks + (blocks < 0 ? -1 : 1)) / (tosize / fromsize);
}
/* Fill in the fields of FSP with information about space usage for
diff --git a/lib/isdir.c b/lib/isdir.c
index 08388e13fe..439235f8e1 100644
--- a/lib/isdir.c
+++ b/lib/isdir.c
@@ -18,8 +18,14 @@
#include <sys/types.h>
#include <sys/stat.h>
+#ifdef STAT_MACROS_BROKEN
+#ifdef S_ISDIR
+#undef S_ISDIR
+#endif
+#endif /* STAT_MACROS_BROKEN. */
+
#if !defined(S_ISDIR) && defined(S_IFDIR)
-#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
+#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
/* If PATH is an existing directory or symbolic link to a directory,
diff --git a/lib/makepath.c b/lib/makepath.c
index e61579021c..7699c178df 100644
--- a/lib/makepath.c
+++ b/lib/makepath.c
@@ -38,8 +38,15 @@ char *alloca ();
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
+
+#ifdef STAT_MACROS_BROKEN
+#ifdef S_ISDIR
+#undef S_ISDIR
+#endif
+#endif /* STAT_MACROS_BROKEN. */
+
#if !defined(S_ISDIR) && defined(S_IFDIR)
-#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
+#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
#ifdef STDC_HEADERS
diff --git a/lib/mkdir.c b/lib/mkdir.c
index e68ccb17c7..68e6b6327a 100644
--- a/lib/mkdir.c
+++ b/lib/mkdir.c
@@ -22,6 +22,16 @@
extern int errno;
#endif
+#ifdef STAT_MACROS_BROKEN
+#ifdef S_ISDIR
+#undef S_ISDIR
+#endif
+#endif /* STAT_MACROS_BROKEN. */
+
+#if !defined(S_ISDIR) && defined(S_IFDIR)
+#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
+#endif
+
/* mkdir and rmdir adapted from GNU tar. */
/* Make directory DPATH, with permission mode DMODE.
@@ -95,7 +105,7 @@ rmdir (dpath)
if (stat (dpath, &statbuf) != 0)
return -1; /* stat set errno. */
- if ((statbuf.st_mode & S_IFMT) != S_IFDIR)
+ if (!S_ISDIR (statbuf.st_mode))
{
errno = ENOTDIR;
return -1;
diff --git a/lib/modechange.c b/lib/modechange.c
index b09661d0c5..978ab46d17 100644
--- a/lib/modechange.c
+++ b/lib/modechange.c
@@ -38,7 +38,13 @@ char *malloc ();
#define NULL 0
#endif
-#ifndef S_ISDIR
+#ifdef STAT_MACROS_BROKEN
+#ifdef S_ISDIR
+#undef S_ISDIR
+#endif
+#endif /* STAT_MACROS_BROKEN. */
+
+#if !defined(S_ISDIR) && defined(S_IFDIR)
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
diff --git a/lib/rename.c b/lib/rename.c
index 858190c57d..593cf31dad 100644
--- a/lib/rename.c
+++ b/lib/rename.c
@@ -22,8 +22,14 @@
extern int errno;
#endif
+#ifdef STAT_MACROS_BROKEN
+#ifdef S_ISDIR
+#undef S_ISDIR
+#endif
+#endif /* STAT_MACROS_BROKEN. */
+
#if !defined(S_ISDIR) && defined(S_IFDIR)
-#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
+#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
/* Rename file FROM to file TO.