]> Dogcows Code - chaz/tar/blobdiff - src/gnu.c
Fix Solaris bug where chmod fails if we don't have PRIV_SYS_LINKDIR
[chaz/tar] / src / gnu.c
index 7606c0ad81ba00675c858c5af5a2c5e11ebcc269..ef51f2b5fedd138f67bc13a703a7f7a7124c7008 100644 (file)
--- a/src/gnu.c
+++ b/src/gnu.c
@@ -1,5 +1,5 @@
 /* GNU dump extensions to tar.
-   Copyright (C) 1988, 1992 Free Software Foundation
+   Copyright (C) 1988, 1992, 1993 Free Software Foundation
 
 This file is part of GNU Tar.
 
@@ -30,28 +30,6 @@ time_t time ();
 #include "tar.h"
 #include "port.h"
 
-#if defined(_POSIX_VERSION) || defined(DIRENT)
-#include <dirent.h>
-#ifdef direct
-#undef direct
-#endif /* direct */
-#define direct dirent
-#define DP_NAMELEN(x) strlen((x)->d_name)
-#endif /* _POSIX_VERSION or DIRENT */
-#if !defined(_POSIX_VERSION) && !defined(DIRENT) && defined(BSD42)
-#include <sys/dir.h>
-#define DP_NAMELEN(x)  (x)->d_namlen
-#endif /* not _POSIX_VERSION and BSD42 */
-#ifdef __MSDOS__
-#include "msd_dir.h"
-#define DP_NAMELEN(x)  (x)->d_namlen
-#define direct dirent
-#endif
-#if defined(USG) && !defined(_POSIX_VERSION) && !defined(DIRENT)
-#include <ndir.h>
-#define DP_NAMELEN(x) strlen((x)->d_name)
-#endif /* USG and not _POSIX_VERSION and not DIRENT */
-
 #ifndef S_ISLNK
 #define lstat stat
 #endif
@@ -99,14 +77,14 @@ add_dir (name, dev, ino, text)
 {
   struct dirname *dp;
 
-  dp = (struct dirname *) malloc (sizeof (struct dirname));
+  dp = (struct dirname *) ck_malloc (sizeof (struct dirname));
   if (!dp)
     abort ();
   dp->next = dir_list;
   dir_list = dp;
   dp->dev = dev;
   dp->ino = ino;
-  dp->name = malloc (strlen (name) + 1);
+  dp->name = ck_malloc (strlen (name) + 1);
   strcpy (dp->name, name);
   dp->dir_text = text;
   dp->allnew = 0;
@@ -127,7 +105,7 @@ read_dir_file ()
   time (&this_time);
   if (gnu_dumpfile[0] != '/')
     {
-#if defined(__MSDOS__) || defined(USG) || defined(_POSIX_VERSION)
+#if defined(__MSDOS__) || defined(HAVE_GETCWD) || defined(_POSIX_VERSION)
       if (!getcwd (path, PATH_MAX))
        {
          msg ("Couldn't get current directory.");
@@ -323,7 +301,7 @@ get_dir_contents (p, device)
      int device;
 {
   DIR *dirp;
-  register struct direct *d;
+  register struct dirent *d;
   char *new_buf;
   char *namebuf;
   int bufsiz;
@@ -369,7 +347,7 @@ get_dir_contents (p, device)
          /* Skip . and .. */
          if (is_dot_or_dotdot (d->d_name))
            continue;
-         if (DP_NAMELEN (d) + len >= bufsiz)
+         if (NLENGTH (d) + len >= bufsiz)
            {
              bufsiz += NAMSIZ;
              namebuf = ck_realloc (namebuf, bufsiz + 2);
@@ -433,7 +411,7 @@ get_dir_contents (p, device)
            add_buffer (the_buffer, "N", 1);
          else
            add_buffer (the_buffer, "Y", 1);
-         add_buffer (the_buffer, d->d_name, (int) (DP_NAMELEN (d) + 1));
+         add_buffer (the_buffer, d->d_name, (int) (NLENGTH (d) + 1));
        }
       add_buffer (the_buffer, "\000\000", 2);
       closedir (dirp);
@@ -456,12 +434,12 @@ get_dir_contents (p, device)
              n_strs++;
              p_buf += tmp;
            }
-         vec = (char **) malloc (sizeof (char *) * (n_strs + 1));
+         vec = (char **) ck_malloc (sizeof (char *) * (n_strs + 1));
          for (p_vec = vec, p_buf = buf; *p_buf; p_buf += strlen (p_buf) + 1)
            *p_vec++ = p_buf;
          *p_vec = 0;
          qsort ((PTR) vec, n_strs, sizeof (char *), dirent_cmp);
-         new_buf = (char *) malloc (p_buf - buf + 2);
+         new_buf = (char *) ck_malloc (p_buf - buf + 2);
          for (p_vec = vec, p_buf = new_buf; *p_vec; p_vec++)
            {
              char *p_tmp;
@@ -570,7 +548,7 @@ gnu_restore (skipcrud)
   PTR the_buffer;
   char *p;
   DIR *dirp;
-  struct direct *d;
+  struct dirent *d;
   char *cur, *arc;
   extern struct stat hstat;    /* Stat struct corresponding */
   long size, copied;
@@ -594,13 +572,13 @@ gnu_restore (skipcrud)
       if (is_dot_or_dotdot (d->d_name))
        continue;
 
-      add_buffer (the_buffer, d->d_name, (int) (DP_NAMELEN (d) + 1));
+      add_buffer (the_buffer, d->d_name, (int) (NLENGTH (d) + 1));
     }
   closedir (dirp);
   add_buffer (the_buffer, "", 1);
 
   current_dir = get_buffer (the_buffer);
-  archive_dir = (char *) malloc (hstat.st_size);
+  archive_dir = (char *) ck_malloc (hstat.st_size);
   if (archive_dir == 0)
     {
       msg ("Can't allocate %d bytes for restore", hstat.st_size);
@@ -660,7 +638,7 @@ recursively_delete (path)
 {
   struct stat sbuf;
   DIR *dirp;
-  struct direct *dp;
+  struct dirent *dp;
   char *path_buf;
   /* int path_len; */
 
This page took 0.025403 seconds and 4 git commands to generate.