]> err.no Git - util-linux/commitdiff
namei: non-linux support (get_current_dir_name() and PATH_MAX)
authorKarel Zak <kzak@redhat.com>
Mon, 26 Nov 2007 13:58:29 +0000 (14:58 +0100)
committerKarel Zak <kzak@redhat.com>
Mon, 26 Nov 2007 14:00:16 +0000 (15:00 +0100)
Co-Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
Signed-off-by: Karel Zak <kzak@redhat.com>
configure.ac
misc-utils/namei.c

index dacc79625e6797924a7fb1657bf1e52cdc2411e6..ed12e60b5e2895bad8c322bc66bf052e9907d46a 100644 (file)
@@ -56,6 +56,7 @@ AC_CHECK_FUNCS(
        [inet_aton \
        fsync \
        getdomainname \
+       get_current_dir_name \
        nanosleep \
        personality \
        updwtmp \
index 0db176a68a52896bce192454e24f9ccb1a462b1f..e8f7a8bd80192e79120cc80a820333838165a5e2 100644 (file)
@@ -73,6 +73,10 @@ int xflag = 0;
 #define MAXSYMLINKS 256
 #endif
 
+#ifndef PATH_MAX
+#define PATH_MAX 4096
+#endif
+
 static char *pperm(unsigned short);
 static void namei(char *, int, mode_t *);
 static void usage(void);
@@ -81,7 +85,11 @@ int
 main(int argc, char **argv) {
     extern int optind;
     int c;
-    char curdir[MAXPATHLEN];
+#ifdef HAVE_GET_CURRENT_DIR_NAME
+    char *curdir;
+#else
+    char curdir[PATH_MAX];
+#endif
 
     setlocale(LC_ALL, "");
     bindtextdomain(PACKAGE, LOCALEDIR);
@@ -106,7 +114,12 @@ main(int argc, char **argv) {
        }
     }
 
-    if(getcwd(curdir, sizeof(curdir)) == NULL){
+#ifdef HAVE_GET_CURRENT_DIR_NAME
+    if (!(curdir = get_current_dir_name()))
+#else
+    if(getcwd(curdir, sizeof(curdir)) == NULL)
+#endif
+    {
        (void)fprintf(stderr,
                      _("namei: unable to get current directory - %s\n"),
                      curdir);
@@ -140,8 +153,6 @@ usage(void) {
 #define NODEV          (dev_t)(-1)
 #endif
 
-int kzak;
-
 static void
 namei(char *file, int lev, mode_t *lastmode) {
     char *cp;