/* 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.
#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
{
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;
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.");
int device;
{
DIR *dirp;
- register struct direct *d;
+ register struct dirent *d;
char *new_buf;
char *namebuf;
int bufsiz;
/* 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);
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);
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;
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;
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);
{
struct stat sbuf;
DIR *dirp;
- struct direct *dp;
+ struct dirent *dp;
char *path_buf;
/* int path_len; */