X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fgnu.c;h=ef51f2b5fedd138f67bc13a703a7f7a7124c7008;hb=0d6720288b78115095031cbb39cf32d9db670340;hp=7606c0ad81ba00675c858c5af5a2c5e11ebcc269;hpb=4ea60be930c2d0350ca297f379fb273d2992ddd9;p=chaz%2Ftar diff --git a/src/gnu.c b/src/gnu.c index 7606c0a..ef51f2b 100644 --- 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 -#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 -#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 -#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; */