lmjm@doc.ic.ac.uk (Lee McLoughlin) (02/12/89)
Here are the patches to gnu tar 1.03 to allow it to run on minix 1.4.
Although most of these patches are for minix there is also a couple
of patches for a simple long vs int bug.
I dont have an ethernet so haven't tested the remote tape options or server.
*** Makefile
--- ../gnu-tar/Makefile
**************
*** 100,107
# Note that Minix "cc" produces ".s" files, not .o's, so O = s has been set.
#
# Pick open3 emulation or nonexistence. See open3.h, port.c.
! ##DEFS = -DV7 -DMINIX -DEMUL_OPEN3
! ##DEFS = -DV7 -DMINIX -DNO_OPEN3
#LOCAL_SRC = getdate.y rtape_lib.c
#LOCAL_OBJ = getdate.$O rtape_lib.$O
#LDFLAGS =
--- 100,108 -----
# Note that Minix "cc" produces ".s" files, not .o's, so O = s has been set.
#
# Pick open3 emulation or nonexistence. See open3.h, port.c.
! # Minix on 1.4, or better, has bzero, bcmp and execlp and
! # directory handling so add -DMINIX14.
! DEFS = -DV7 -DMINIX -DMINIX14 -DEMUL_OPEN3 -DNO_REMOTE -Dsize_t=long
#LOCAL_SRC = getdate.y rtape_lib.c
#LOCAL_OBJ = getdate.$O rtape_lib.$O
LOCAL_SRC =
**************
*** 104,114
##DEFS = -DV7 -DMINIX -DNO_OPEN3
#LOCAL_SRC = getdate.y rtape_lib.c
#LOCAL_OBJ = getdate.$O rtape_lib.$O
! #LDFLAGS =
! #LIBS =
! #DEF_AR_FILE = \"-\"
! #DEFBLOCKING = 8 /* No good reason for this, change at will */
! #O = s
# Xenix version
#DEFS = -DUSG -DXENIX
--- 105,117 -----
DEFS = -DV7 -DMINIX -DMINIX14 -DEMUL_OPEN3 -DNO_REMOTE -Dsize_t=long
#LOCAL_SRC = getdate.y rtape_lib.c
#LOCAL_OBJ = getdate.$O rtape_lib.$O
! LOCAL_SRC =
! LOCAL_OBJ =
! LDFLAGS = -i
! LIBS =
! DEF_AR_FILE = \"-\"
! DEFBLOCKING = 8
! O = s
# Xenix version
#DEFS = -DUSG -DXENIX
**************
*** 128,134
-DDEF_AR_FILE=$(DEF_AR_FILE) \
-DDEFBLOCKING=$(DEFBLOCKING)
# next line for Debugging
! COPTS = -g
# next line for Production
#COPTS = -O
--- 131,137 -----
-DDEF_AR_FILE=$(DEF_AR_FILE) \
-DDEFBLOCKING=$(DEFBLOCKING)
# next line for Debugging
! #COPTS = -g
# next line for Production
COPTS = -O
**************
*** 130,136
# next line for Debugging
COPTS = -g
# next line for Production
! #COPTS = -O
# Add things here like getopt, readdir, etc that aren't in your
# standard libraries. (E.g. MSDOS needs getopt, msd_dir.c, msd_dir.obj)
--- 133,139 -----
# next line for Debugging
#COPTS = -g
# next line for Production
! COPTS = -O
# Add things here like getopt, readdir, etc that aren't in your
# standard libraries. (E.g. MSDOS needs getopt, msd_dir.c, msd_dir.obj)
**************
*** 155,161
AUX = README COPYING Makefile tar.texinfo tar.h port.h open3.h rmt.h \
msd_dir.h msd_dir.c rtape_server.c rtape_lib.c getdate.y
! all: tar rmt
tar: $(OBJS)
$(CC) $(LDFLAGS) -o tar $(COPTS) $(OBJS) $(LIBS)
--- 158,164 -----
AUX = README COPYING Makefile tar.texinfo tar.h port.h open3.h rmt.h \
msd_dir.h msd_dir.c rtape_server.c rtape_lib.c getdate.y
! all: tar #rmt
tar: $(OBJS)
$(CC) $(LDFLAGS) -o tar $(COPTS) $(OBJS) $(LIBS)
*** buffer.c
--- ../gnu-tar/buffer.c
**************
*** 34,39
#include <signal.h>
#ifndef MSDOS
#include <sys/ioctl.h>
#include <sys/mtio.h>
#endif
--- 34,40 -----
#include <signal.h>
#ifndef MSDOS
+ #ifndef MINIX
#include <sys/ioctl.h>
#endif
#ifndef V7
**************
*** 35,41
#ifndef MSDOS
#include <sys/ioctl.h>
- #include <sys/mtio.h>
#endif
#ifdef MSDOS
--- 36,41 -----
#ifndef MSDOS
#ifndef MINIX
#include <sys/ioctl.h>
#endif
#ifndef V7
#include <sys/mtio.h>
**************
*** 37,42
#include <sys/ioctl.h>
#include <sys/mtio.h>
#endif
#ifdef MSDOS
# include <fcntl.h>
--- 37,46 -----
#ifndef MINIX
#include <sys/ioctl.h>
#endif
+ #ifndef V7
+ #include <sys/mtio.h>
+ #endif
+ #endif
#ifdef MSDOS
# include <fcntl.h>
**************
*** 40,46
#ifdef MSDOS
# include <fcntl.h>
! #include <process.h>
#else
# ifdef XENIX
# include <sys/inode.h>
--- 44,50 -----
#ifdef MSDOS
# include <fcntl.h>
! # include <process.h>
#else
# ifdef XENIX
# include <sys/inode.h>
**************
*** 45,50
# ifdef XENIX
# include <sys/inode.h>
# endif
# include <sys/file.h>
#endif
--- 49,55 -----
# ifdef XENIX
# include <sys/inode.h>
# endif
+ # ifndef MINIX
# include <sys/file.h>
#endif
#endif
**************
*** 47,52
# endif
# include <sys/file.h>
#endif
#include "tar.h"
#include "port.h"
--- 52,58 -----
# ifndef MINIX
# include <sys/file.h>
#endif
+ #endif
#include "tar.h"
#include "port.h"
**************
*** 145,150
int write_archive_to_stdout;
/* Used by fl_read and fl_write to store the real info about saved names */
static char real_s_name[NAMSIZ];
static long real_s_totsize;
--- 151,163 -----
int write_archive_to_stdout;
+ #ifdef V7
+ /* Avoid name clashes */
+ #define real_s_name r_s_n
+ #define real_s_totsize r_s_t
+ #define real_s_sizeleft r_s_s
+ #endif
+
/* Used by fl_read and fl_write to store the real info about saved names */
static char real_s_name[NAMSIZ];
static long real_s_totsize;
**************
*** 284,290
1: we're reading/writing stdin/out (to force reblocking)
2: the file is to be accessed by rmt (compress doesn't know how
3: the file is not a plain file */
! if(!(ar_file[0]=='-' && ar_file[1]=='\0') && !_remdev(ar_file) && isfile(ar_file)) {
/* We don't need a child tar. Open the archive */
if(ar_reading) {
archive=open(ar_file, O_RDONLY|O_BINARY, 0666);
--- 297,307 -----
1: we're reading/writing stdin/out (to force reblocking)
2: the file is to be accessed by rmt (compress doesn't know how
3: the file is not a plain file */
! if(!(ar_file[0]=='-' && ar_file[1]=='\0')
! #ifndef NO_REMOTE
! && !_remdev(ar_file)
! #endif
! && isfile(ar_file)) {
/* We don't need a child tar. Open the archive */
if(ar_reading) {
archive=open(ar_file, O_RDONLY|O_BINARY, 0666);
**************
*** 1281,1287
long pos;
pos = rmtlseek(archive,0L,1);
! #ifndef MSDOS
/* FIXME does ftruncate really take an INT?! */
(void) ftruncate(archive,(int)pos);
#else
--- 1298,1304 -----
long pos;
pos = rmtlseek(archive,0L,1);
! #if !defined(MSDOS) && !defined(MINIX)
/* FIXME does ftruncate really take an INT?! */
(void) ftruncate(archive,(int)pos);
#else
**************
*** 1410,1420
break;
switch(inbuf[0]) {
case '?':
! fprintf(msg_file,"\
! n [name] Give a new filename for the next (and subsequent) volume(s)\n\
! q Abort tar\n\
! ! Spawn a subshell\n\
! ? Print this list\n");
break;
case 'q': /* Quit */
--- 1427,1441 -----
break;
switch(inbuf[0]) {
case '?':
! fputs(
! " n [name] Give a new filename for the next (and subsequent) volume(s)\n",
! msg_file );
! fputs(
! " q Abort tar\n", msg_file );
! fputs(
! " ! Spawn a subshell\n", msg_file );
! fputs(
! " ? Print this list\n", msg_file );
break;
case 'q': /* Quit */
*** create.c
--- ../gnu-tar/create.c
**************
*** 48,53
#ifdef MSDOS
#include <sys/dir.h>
#else
/*
* FIXME: On other systems there is no standard place for the header file
* for the portable directory access routines. Change the #include line
--- 48,58 -----
#ifdef MSDOS
#include <sys/dir.h>
#else
+ #ifdef MINIX14
+ #include <dirent.h>
+ #define direct dirent
+ #define d_namlen d_reclen
+ #else
/*
* FIXME: On other systems there is no standard place for the header file
* for the portable directory access routines. Change the #include line
**************
*** 54,59
* below to bring it in from wherever it is.
*/
#include "ndir.h"
#endif
#endif
--- 59,65 -----
* below to bring it in from wherever it is.
*/
#include "ndir.h"
+ #endif
#endif
#endif
*** diffarch.c
--- ../gnu-tar/diffarch.c
**************
*** 48,53
#define O_NDELAY 0
#endif
extern int errno; /* From libc.a */
extern char *valloc(); /* From libc.a */
--- 48,65 -----
#define O_NDELAY 0
#endif
+ #ifndef S_IFLNK
+ #define dostat(name,pstat) stat((name),(pstat))
+ #else
+ #define dostat(name,pstat) (f_follow_links?stat((name),(pstat)):lstat((name),(pstat)))
+ #endif
+
+ #ifdef V7
+ /* Avoid name clashes */
+ #define compare_chunk cmp_chunk
+ #define compare_dir cmp_dir
+ #endif
+
extern int errno; /* From libc.a */
extern char *valloc(); /* From libc.a */
**************
*** 146,152
if (diff_name[namelen] == '/')
goto really_dir;
! err = f_follow_links ? stat(diff_name, &filestat) : lstat(diff_name, &filestat);
if (err < 0) {
annofile(msg_file, (char *)NULL);
if (errno==ENOENT) {
--- 158,164 -----
if (diff_name[namelen] == '/')
goto really_dir;
! err = dostat(diff_name, &filestat);
if (err < 0) {
annofile(msg_file, (char *)NULL);
if (errno==ENOENT) {
**************
*** 207,213
break;
case LF_LINK:
! err = f_follow_links ? stat(diff_name, &filestat) : lstat(diff_name, &filestat);
if (err < 0) {
annofile(msg_file, (char *)NULL);
if (errno==ENOENT) {
--- 219,225 -----
break;
case LF_LINK:
! err = dostat(diff_name, &filestat);
if (err < 0) {
annofile(msg_file, (char *)NULL);
if (errno==ENOENT) {
**************
*** 291,297
check_node:
/* FIXME, deal with umask */
! err=f_follow_links ? stat(diff_name, &filestat) : lstat(diff_name, &filestat);
if(err<0) {
annofile(msg_file, (char *)NULL);
if (errno==ENOENT) {
--- 303,309 -----
check_node:
/* FIXME, deal with umask */
! err=dostat(diff_name, &filestat);
if(err<0) {
annofile(msg_file, (char *)NULL);
if (errno==ENOENT) {
**************
*** 327,333
really_dir:
while (namelen && diff_name[namelen] == '/')
diff_name[namelen--] = '\0'; /* Zap / */
! err = f_follow_links ? stat(diff_name, &filestat) : lstat(diff_name, &filestat);
if (err < 0) {
annofile(msg_file, (char *)NULL);
if (errno==ENOENT) {
--- 339,345 -----
really_dir:
while (namelen && diff_name[namelen] == '/')
diff_name[namelen--] = '\0'; /* Zap / */
! err = dostat(diff_name, &filestat);
if (err < 0) {
annofile(msg_file, (char *)NULL);
if (errno==ENOENT) {
**************
*** 357,363
if (diff_name[namelen] == '/')
goto really_dir;
! err = f_follow_links ? stat(diff_name, &filestat) : lstat(diff_name, &filestat);
if (err < 0) {
annofile(msg_file, (char *)NULL);
if (errno==ENOENT) {
--- 369,375 -----
if (diff_name[namelen] == '/')
goto really_dir;
! err = dostat(diff_name, &filestat);
if (err < 0) {
annofile(msg_file, (char *)NULL);
if (errno==ENOENT) {
**************
*** 424,430
int
compare_chunk(bytes,buffer)
! int bytes;
char *buffer;
{
int err;
--- 436,442 -----
int
compare_chunk(bytes,buffer)
! long bytes;
char *buffer;
{
int err;
**************
*** 452,458
int
compare_dir(bytes,buffer)
! int bytes;
char *buffer;
{
if(bcmp(buffer,diff_dir,bytes)) {
--- 464,470 -----
int
compare_dir(bytes,buffer)
! long bytes;
char *buffer;
{
if(bcmp(buffer,diff_dir,bytes)) {
**************
*** 457,463
{
if(bcmp(buffer,diff_dir,bytes)) {
annofile(msg_file, (char *)NULL);
! fprintf(msg_file, "%s: data differs\n",diff_name);
different++;
return -1;
}
--- 469,475 -----
{
if(bcmp(buffer,diff_dir,bytes)) {
annofile(msg_file, (char *)NULL);
! fprintf(msg_file, "%s: dir data differs\n",diff_name);
different++;
return -1;
}
*** list.c
--- ../gnu-tar/list.c
**************
*** 33,38
#include <sys/types.h>
#include <sys/stat.h>
#ifndef MSDOS
#include <sys/file.h>
#endif /* MSDOS */
--- 33,39 -----
#include <sys/types.h>
#include <sys/stat.h>
#ifndef MSDOS
+ #ifndef MINIX
#include <sys/file.h>
#endif
#endif /* MSDOS */
**************
*** 34,39
#include <sys/stat.h>
#ifndef MSDOS
#include <sys/file.h>
#endif /* MSDOS */
#ifdef USG
--- 35,41 -----
#ifndef MSDOS
#ifndef MINIX
#include <sys/file.h>
+ #endif
#endif /* MSDOS */
#ifdef USG
**************
*** 242,247
* We can't use unsigned char here because of old compilers,
* e.g. V7.
*/
sum += 0xFF & *p++;
}
--- 244,250 -----
* We can't use unsigned char here because of old compilers,
* e.g. V7.
*/
+ #ifdef ORIG
sum += 0xFF & *p++;
#else
sum += 0xFF & (long)*p++;
**************
*** 243,248
* e.g. V7.
*/
sum += 0xFF & *p++;
}
/* Adjust checksum to count the "chksum" field as blanks. */
--- 246,254 -----
*/
#ifdef ORIG
sum += 0xFF & *p++;
+ #else
+ sum += 0xFF & (long)*p++;
+ #endif
}
/* Adjust checksum to count the "chksum" field as blanks. */
*** port.c
--- ../gnu-tar/port.c
**************
*** 38,43
#ifdef MSDOS
#include <fcntl.h>
#else
#include <sys/file.h>
#endif
--- 38,44 -----
#ifdef MSDOS
#include <fcntl.h>
#else
+ #ifndef MINIX
#include <sys/file.h>
#endif
#endif
**************
*** 40,45
#else
#include <sys/file.h>
#endif
#include "tar.h"
#include "port.h"
--- 41,47 -----
#ifndef MINIX
#include <sys/file.h>
#endif
+ #endif
#include "tar.h"
#include "port.h"
**************
*** 79,88
#define WANT_VALLOC
#endif
- #ifdef MINIX
- #define WANT_BZERO
- #endif
-
#ifdef MSDOS
#define WANT_LSTAT
#define WANT_STRING
--- 81,86 -----
#define WANT_VALLOC
#endif
#ifdef MSDOS
#define WANT_LSTAT
#define WANT_STRING
**************
*** 96,102
#define WANT_GETOPT
#endif
! /* End of system-dependent #ifdefs */
#ifdef WANT_DUMB_GETDATE
/* JF a getdate() routine takes a date/time/etc and turns it into a time_t */
--- 94,109 -----
#define WANT_GETOPT
#endif
! #ifdef MINIX
! #define WANT_DUMB_GETDATE
! #define WANT_MKDIR
! #define WANT_VALLOC
! #ifdef MINIX14
! #define WANT_BZERO
! #undef WANT_STRSTR
! #undef WANT_GETOPT
! #endif
! #endif
/* End of system-dependent #ifdefs */
**************
*** 98,103
/* End of system-dependent #ifdefs */
#ifdef WANT_DUMB_GETDATE
/* JF a getdate() routine takes a date/time/etc and turns it into a time_t */
/* This one is a quick hack I wrote in about five minutes to see if the N
--- 105,112 -----
#endif
#endif
+ /* End of system-dependent #ifdefs */
+
#ifdef WANT_DUMB_GETDATE
/* JF a getdate() routine takes a date/time/etc and turns it into a time_t */
/* This one is a quick hack I wrote in about five minutes to see if the N
**************
*** 107,113
into a time_t . Its not well tested or anything. . . */
/* In general, you should use the getdate() supplied in getdate.y */
! #define OFF_FROM GMT 18000 /* Change for your time zone! */
time_t
getdate(str)
--- 116,123 -----
into a time_t . Its not well tested or anything. . . */
/* In general, you should use the getdate() supplied in getdate.y */
! /* Change for your time zone! */
! #define OFF_FROM_GMT 0
time_t
getdate(str)
**************
*** 243,248
status = umask(0); /* Get current umask */
status = umask(status | (0777 & ~dmode)); /* Set for mkdir */
execl("/bin/mkdir", "mkdir", dpath, (char *)0);
_exit(-1); /* Can't exec /bin/mkdir */
default: /* Parent process */
--- 253,259 -----
status = umask(0); /* Get current umask */
status = umask(status | (0777 & ~dmode)); /* Set for mkdir */
execl("/bin/mkdir", "mkdir", dpath, (char *)0);
+ execl("/usr/bin/mkdir", "mkdir", dpath, (char *)0);
_exit(-1); /* Can't exec /bin/mkdir */
default: /* Parent process */
*** tar.c
--- ../gnu-tar/tar.c
**************
*** 41,46
#ifdef MSDOS
#include <sys/dir.h>
#else
/*
* FIXME: On other systems there is no standard place for the header file
* for the portable directory access routines. Change the #include line
--- 41,51 -----
#ifdef MSDOS
#include <sys/dir.h>
#else
+ #ifdef MINIX14
+ #include <dirent.h>
+ #define direct dirent
+ #define d_namlen d_reclen
+ #else
/*
* FIXME: On other systems there is no standard place for the header file
* for the portable directory access routines. Change the #include line
**************
*** 49,54
#include "ndir.h"
#endif
#endif
extern char *malloc();
extern char *getenv();
--- 54,60 -----
#include "ndir.h"
#endif
#endif
+ #endif
extern char *malloc();
extern char *getenv();
**************
*** 428,433
void
describe()
{
fprintf(stderr,"%s: choose one of the following:\n",tar);
fputs("\
-A Append tar files to an archive.\n\
--- 434,478 -----
void
describe()
{
+ char **s;
+ static char *errs[] = {
+ "-A Append tar files to an archive.",
+ "-c Create a new archive.",
+ "-d Find differences between archive and file system.",
+ "-D Delete from the archive (NOT for use on mag tapes!)",
+ "-r Append files to the end of an archive.",
+ "-t List the contents of an archive.",
+ "-u Only append files that are newer than the copy in an archive.",
+ "-x Extract files from an archive.",
+ "Other options:",
+ "-b N blocking factor N (block size = Nx512 bytes)",
+ "-B reblock as we read (for reading 4.2BSD pipes)",
+ "-C dir change to directory DIR",
+ "-f F read/write archive from file or device F (or hostname:/ForD)",
+ "-G create/list/extract GNU-format backup",
+ "-h don't dump symbolic links; dump the files they point to",
+ "-i ignore blocks of zeros in the archive, which normally mean EOF",
+ "-k keep existing files, don't overwrite them from the archive",
+ "-K file begin at \"file\" in the archive",
+ "-l stay in the local file system (like dump(8)) when creating an archive",
+ "-m don't extract file modified time",
+ "-M create/list/extract multi-volume archive",
+ "-N date only store files newer than DATE",
+ "-o write an old V7 format archive, rather than ANSI [draft 6] format",
+ "-O extract files to standard output",
+ "-p do extract all protection information",
+ "-R dump record number within archive with each message",
+ "-s list of names to extract is sorted to match the archive",
+ "-T F get names to extract or create from file F",
+ "-v verbosely list what files we process",
+ "-V vnam create archive with volume name 'vnam'",
+ "-w ask for confirmation for every action",
+ "-W attempt to verify the archive after writing it",
+ "-X file eXclude files listed in \"file\"",
+ "-z or Z run the archive through compress(1)",
+ "-[0-7][lmh] specify drive and density",
+ 0
+ };
fprintf(stderr,"%s: choose one of the following:\n",tar);
for( s = errs; *s; s++ ){
fputs( *s, stderr );
**************
*** 429,476
describe()
{
fprintf(stderr,"%s: choose one of the following:\n",tar);
! fputs("\
! -A Append tar files to an archive.\n\
! -c Create a new archive.\n\
! -d Find differences between archive and file system.\n\
! -D Delete from the archive (NOT for use on mag tapes!)\n\
! -r Append files to the end of an archive.\n\
! -t List the contents of an archive.\n\
! -u Only append files that are newer than the copy in an archive.\n\
! -x Extract files from an archive.\n",stderr);
!
! fputs("\
! Other options:\n\
! -b N blocking factor N (block size = Nx512 bytes)\n\
! -B reblock as we read (for reading 4.2BSD pipes)\n\
! -C dir change to directory DIR\n\
! ", stderr); /* KLUDGE */ fputs("\
! -f F read/write archive from file or device F (or hostname:/ForD)\n\
! -G create/list/extract GNU-format backup\n\
! -h don't dump symbolic links; dump the files they point to\n\
! -i ignore blocks of zeros in the archive, which normally mean EOF\n\
! -k keep existing files, don't overwrite them from the archive\n\
! -K file begin at \"file\" in the archive\n\
! -l stay in the local file system (like dump(8)) when creating an archive\n\
! ", stderr); /* KLUDGE */ fputs("\
! -m don't extract file modified time\n\
! -M create/list/extract multi-volume archive\n\
! -N date only store files newer than DATE\n\
! -o write an old V7 format archive, rather than ANSI [draft 6] format\n\
! -O extract files to standard output\n\
! -p do extract all protection information\n\
! -R dump record number within archive with each message\n\
! -s list of names to extract is sorted to match the archive\n\
! ", stderr); /* KLUDGE */ fputs("\
! -T F get names to extract or create from file F\n\
! -v verbosely list what files we process\n\
! -V vnam create archive with volume name 'vnam'\n\
! -w ask for confirmation for every action\n\
! -W attempt to verify the archive after writing it\n\
! -X file eXclude files listed in \"file\"\n\
! -z or Z run the archive through compress(1)\n\
! -[0-7][lmh] specify drive and density\n\
! ", stderr);
}
--- 474,483 -----
0
};
fprintf(stderr,"%s: choose one of the following:\n",tar);
! for( s = errs; *s; s++ ){
! fputs( *s, stderr );
! fputc( '\n', stderr );
! }
}
**************
*** 802,807
{
;
}
/* p is a directory. Add all the files in P to the namelist. If any of the
files is a directory, recurse on the subdirectory. . . */
static
--- 809,820 -----
{
;
}
+
+ #ifdef V7
+ /* Avoid name clashes */
+ #define add_dir_name a_d_n
+ #endif
+
/* p is a directory. Add all the files in P to the namelist. If any of the
files is a directory, recurse on the subdirectory. . . */
static
**************
*** 1213,1218
}
closedir(dirp);
if(rmdir(path)<0)
return 1;
return 0;
--- 1226,1232 -----
}
closedir(dirp);
+ #ifndef V7
if(rmdir(path)<0)
#else
if(unlink(path)<0)
**************
*** 1214,1219
closedir(dirp);
if(rmdir(path)<0)
return 1;
return 0;
}
--- 1228,1236 -----
#ifndef V7
if(rmdir(path)<0)
+ #else
+ if(unlink(path)<0)
+ #endif
return 1;
return 0;
}
*** update.c
--- ../gnu-tar/update.c
**************
*** 257,262
}
#endif
int number_of_blocks_read = 0;
int number_of_new_records = 0;
--- 257,273 -----
}
#endif
+ #ifdef V7
+ /* Avoid name clashes */
+ #define number_of_blocks_read n_o_br
+ #define number_of_new_records n_o_nr
+ #define number_of_records_needed n_o_rn
+ #define number_of_blocks_read n_o_br
+ #define number_of_records_to_skip norts
+ #define number_of_records_to_keep nortk
+ #define number_of_kept_records_in_block nokrib
+ #endif
+
int number_of_blocks_read = 0;
int number_of_new_records = 0;
From: lmjm@doc.ic.ac.uk (Lee McLoughlin)
Path: doc.ic.ac.uk!lmjm
Newsgroups: comp.os.minix,gnu.util.bugs
Subject: tar 1.03 patches for minix (and 16bit machines)
Reply-To: lmjm@doc.ic.ac.uk (Lee McLoughlin)
Distribution: world
Organization: Dept. of Computing, Imperial College, London, UK.
Here are the patches to gnu tar 1.03 to allow it to run on minix 1.4.
Although most of these patches are for minix there is also a couple
of patches for a simple long vs int bug.
*** Makefile
--- ../gnu-tar/Makefile
**************
*** 100,107
# Note that Minix "cc" produces ".s" files, not .o's, so O = s has been set.
#
# Pick open3 emulation or nonexistence. See open3.h, port.c.
! ##DEFS = -DV7 -DMINIX -DEMUL_OPEN3
! ##DEFS = -DV7 -DMINIX -DNO_OPEN3
#LOCAL_SRC = getdate.y rtape_lib.c
#LOCAL_OBJ = getdate.$O rtape_lib.$O
#LDFLAGS =
--- 100,108 -----
# Note that Minix "cc" produces ".s" files, not .o's, so O = s has been set.
#
# Pick open3 emulation or nonexistence. See open3.h, port.c.
! # Minix on 1.4, or better, has bzero, bcmp and execlp and
! # directory handling so add -DMINIX14.
! DEFS = -DV7 -DMINIX -DMINIX14 -DEMUL_OPEN3 -DNO_REMOTE -Dsize_t=long
#LOCAL_SRC = getdate.y rtape_lib.c
#LOCAL_OBJ = getdate.$O rtape_lib.$O
LOCAL_SRC =
**************
*** 104,114
##DEFS = -DV7 -DMINIX -DNO_OPEN3
#LOCAL_SRC = getdate.y rtape_lib.c
#LOCAL_OBJ = getdate.$O rtape_lib.$O
! #LDFLAGS =
! #LIBS =
! #DEF_AR_FILE = \"-\"
! #DEFBLOCKING = 8 /* No good reason for this, change at will */
! #O = s
# Xenix version
#DEFS = -DUSG -DXENIX
--- 105,117 -----
DEFS = -DV7 -DMINIX -DMINIX14 -DEMUL_OPEN3 -DNO_REMOTE -Dsize_t=long
#LOCAL_SRC = getdate.y rtape_lib.c
#LOCAL_OBJ = getdate.$O rtape_lib.$O
! LOCAL_SRC =
! LOCAL_OBJ =
! LDFLAGS = -i
! LIBS =
! DEF_AR_FILE = \"-\"
! DEFBLOCKING = 8
! O = s
# Xenix version
#DEFS = -DUSG -DXENIX
**************
*** 128,134
-DDEF_AR_FILE=$(DEF_AR_FILE) \
-DDEFBLOCKING=$(DEFBLOCKING)
# next line for Debugging
! COPTS = -g
# next line for Production
#COPTS = -O
--- 131,137 -----
-DDEF_AR_FILE=$(DEF_AR_FILE) \
-DDEFBLOCKING=$(DEFBLOCKING)
# next line for Debugging
! #COPTS = -g
# next line for Production
COPTS = -O
**************
*** 130,136
# next line for Debugging
COPTS = -g
# next line for Production
! #COPTS = -O
# Add things here like getopt, readdir, etc that aren't in your
# standard libraries. (E.g. MSDOS needs getopt, msd_dir.c, msd_dir.obj)
--- 133,139 -----
# next line for Debugging
#COPTS = -g
# next line for Production
! COPTS = -O
# Add things here like getopt, readdir, etc that aren't in your
# standard libraries. (E.g. MSDOS needs getopt, msd_dir.c, msd_dir.obj)
**************
*** 155,161
AUX = README COPYING Makefile tar.texinfo tar.h port.h open3.h rmt.h \
msd_dir.h msd_dir.c rtape_server.c rtape_lib.c getdate.y
! all: tar rmt
tar: $(OBJS)
$(CC) $(LDFLAGS) -o tar $(COPTS) $(OBJS) $(LIBS)
--- 158,164 -----
AUX = README COPYING Makefile tar.texinfo tar.h port.h open3.h rmt.h \
msd_dir.h msd_dir.c rtape_server.c rtape_lib.c getdate.y
! all: tar #rmt
tar: $(OBJS)
$(CC) $(LDFLAGS) -o tar $(COPTS) $(OBJS) $(LIBS)
*** buffer.c
--- ../gnu-tar/buffer.c
**************
*** 34,39
#include <signal.h>
#ifndef MSDOS
#include <sys/ioctl.h>
#include <sys/mtio.h>
#endif
--- 34,40 -----
#include <signal.h>
#ifndef MSDOS
+ #ifndef MINIX
#include <sys/ioctl.h>
#endif
#ifndef V7
**************
*** 35,41
#ifndef MSDOS
#include <sys/ioctl.h>
- #include <sys/mtio.h>
#endif
#ifdef MSDOS
--- 36,41 -----
#ifndef MSDOS
#ifndef MINIX
#include <sys/ioctl.h>
#endif
#ifndef V7
#include <sys/mtio.h>
**************
*** 37,42
#include <sys/ioctl.h>
#include <sys/mtio.h>
#endif
#ifdef MSDOS
# include <fcntl.h>
--- 37,46 -----
#ifndef MINIX
#include <sys/ioctl.h>
#endif
+ #ifndef V7
+ #include <sys/mtio.h>
+ #endif
+ #endif
#ifdef MSDOS
# include <fcntl.h>
**************
*** 40,46
#ifdef MSDOS
# include <fcntl.h>
! #include <process.h>
#else
# ifdef XENIX
# include <sys/inode.h>
--- 44,50 -----
#ifdef MSDOS
# include <fcntl.h>
! # include <process.h>
#else
# ifdef XENIX
# include <sys/inode.h>
**************
*** 45,50
# ifdef XENIX
# include <sys/inode.h>
# endif
# include <sys/file.h>
#endif
--- 49,55 -----
# ifdef XENIX
# include <sys/inode.h>
# endif
+ # ifndef MINIX
# include <sys/file.h>
#endif
#endif
**************
*** 47,52
# endif
# include <sys/file.h>
#endif
#include "tar.h"
#include "port.h"
--- 52,58 -----
# ifndef MINIX
# include <sys/file.h>
#endif
+ #endif
#include "tar.h"
#include "port.h"
**************
*** 145,150
int write_archive_to_stdout;
/* Used by fl_read and fl_write to store the real info about saved names */
static char real_s_name[NAMSIZ];
static long real_s_totsize;
--- 151,163 -----
int write_archive_to_stdout;
+ #ifdef V7
+ /* Avoid name clashes */
+ #define real_s_name r_s_n
+ #define real_s_totsize r_s_t
+ #define real_s_sizeleft r_s_s
+ #endif
+
/* Used by fl_read and fl_write to store the real info about saved names */
static char real_s_name[NAMSIZ];
static long real_s_totsize;
**************
*** 284,290
1: we're reading/writing stdin/out (to force reblocking)
2: the file is to be accessed by rmt (compress doesn't know how
3: the file is not a plain file */
! if(!(ar_file[0]=='-' && ar_file[1]=='\0') && !_remdev(ar_file) && isfile(ar_file)) {
/* We don't need a child tar. Open the archive */
if(ar_reading) {
archive=open(ar_file, O_RDONLY|O_BINARY, 0666);
--- 297,307 -----
1: we're reading/writing stdin/out (to force reblocking)
2: the file is to be accessed by rmt (compress doesn't know how
3: the file is not a plain file */
! if(!(ar_file[0]=='-' && ar_file[1]=='\0')
! #ifndef NO_REMOTE
! && !_remdev(ar_file)
! #endif
! && isfile(ar_file)) {
/* We don't need a child tar. Open the archive */
if(ar_reading) {
archive=open(ar_file, O_RDONLY|O_BINARY, 0666);
**************
*** 1281,1287
long pos;
pos = rmtlseek(archive,0L,1);
! #ifndef MSDOS
/* FIXME does ftruncate really take an INT?! */
(void) ftruncate(archive,(int)pos);
#else
--- 1298,1304 -----
long pos;
pos = rmtlseek(archive,0L,1);
! #if !defined(MSDOS) && !defined(MINIX)
/* FIXME does ftruncate really take an INT?! */
(void) ftruncate(archive,(int)pos);
#else
**************
*** 1410,1420
break;
switch(inbuf[0]) {
case '?':
! fprintf(msg_file,"\
! n [name] Give a new filename for the next (and subsequent) volume(s)\n\
! q Abort tar\n\
! ! Spawn a subshell\n\
! ? Print this list\n");
break;
case 'q': /* Quit */
--- 1427,1441 -----
break;
switch(inbuf[0]) {
case '?':
! fputs(
! " n [name] Give a new filename for the next (and subsequent) volume(s)\n",
! msg_file );
! fputs(
! " q Abort tar\n", msg_file );
! fputs(
! " ! Spawn a subshell\n", msg_file );
! fputs(
! " ? Print this list\n", msg_file );
break;
case 'q': /* Quit */
*** create.c
--- ../gnu-tar/create.c
**************
*** 48,53
#ifdef MSDOS
#include <sys/dir.h>
#else
/*
* FIXME: On other systems there is no standard place for the header file
* for the portable directory access routines. Change the #include line
--- 48,58 -----
#ifdef MSDOS
#include <sys/dir.h>
#else
+ #ifdef MINIX14
+ #include <dirent.h>
+ #define direct dirent
+ #define d_namlen d_reclen
+ #else
/*
* FIXME: On other systems there is no standard place for the header file
* for the portable directory access routines. Change the #include line
**************
*** 54,59
* below to bring it in from wherever it is.
*/
#include "ndir.h"
#endif
#endif
--- 59,65 -----
* below to bring it in from wherever it is.
*/
#include "ndir.h"
+ #endif
#endif
#endif
*** diffarch.c
--- ../gnu-tar/diffarch.c
**************
*** 48,53
#define O_NDELAY 0
#endif
extern int errno; /* From libc.a */
extern char *valloc(); /* From libc.a */
--- 48,65 -----
#define O_NDELAY 0
#endif
+ #ifndef S_IFLNK
+ #define dostat(name,pstat) stat((name),(pstat))
+ #else
+ #define dostat(name,pstat) (f_follow_links?stat((name),(pstat)):lstat((name),(pstat)))
+ #endif
+
+ #ifdef V7
+ /* Avoid name clashes */
+ #define compare_chunk cmp_chunk
+ #define compare_dir cmp_dir
+ #endif
+
extern int errno; /* From libc.a */
extern char *valloc(); /* From libc.a */
**************
*** 146,152
if (diff_name[namelen] == '/')
goto really_dir;
! err = f_follow_links ? stat(diff_name, &filestat) : lstat(diff_name, &filestat);
if (err < 0) {
annofile(msg_file, (char *)NULL);
if (errno==ENOENT) {
--- 158,164 -----
if (diff_name[namelen] == '/')
goto really_dir;
! err = dostat(diff_name, &filestat);
if (err < 0) {
annofile(msg_file, (char *)NULL);
if (errno==ENOENT) {
**************
*** 207,213
break;
case LF_LINK:
! err = f_follow_links ? stat(diff_name, &filestat) : lstat(diff_name, &filestat);
if (err < 0) {
annofile(msg_file, (char *)NULL);
if (errno==ENOENT) {
--- 219,225 -----
break;
case LF_LINK:
! err = dostat(diff_name, &filestat);
if (err < 0) {
annofile(msg_file, (char *)NULL);
if (errno==ENOENT) {
**************
*** 291,297
check_node:
/* FIXME, deal with umask */
! err=f_follow_links ? stat(diff_name, &filestat) : lstat(diff_name, &filestat);
if(err<0) {
annofile(msg_file, (char *)NULL);
if (errno==ENOENT) {
--- 303,309 -----
check_node:
/* FIXME, deal with umask */
! err=dostat(diff_name, &filestat);
if(err<0) {
annofile(msg_file, (char *)NULL);
if (errno==ENOENT) {
**************
*** 327,333
really_dir:
while (namelen && diff_name[namelen] == '/')
diff_name[namelen--] = '\0'; /* Zap / */
! err = f_follow_links ? stat(diff_name, &filestat) : lstat(diff_name, &filestat);
if (err < 0) {
annofile(msg_file, (char *)NULL);
if (errno==ENOENT) {
--- 339,345 -----
really_dir:
while (namelen && diff_name[namelen] == '/')
diff_name[namelen--] = '\0'; /* Zap / */
! err = dostat(diff_name, &filestat);
if (err < 0) {
annofile(msg_file, (char *)NULL);
if (errno==ENOENT) {
**************
*** 357,363
if (diff_name[namelen] == '/')
goto really_dir;
! err = f_follow_links ? stat(diff_name, &filestat) : lstat(diff_name, &filestat);
if (err < 0) {
annofile(msg_file, (char *)NULL);
if (errno==ENOENT) {
--- 369,375 -----
if (diff_name[namelen] == '/')
goto really_dir;
! err = dostat(diff_name, &filestat);
if (err < 0) {
annofile(msg_file, (char *)NULL);
if (errno==ENOENT) {
**************
*** 424,430
int
compare_chunk(bytes,buffer)
! int bytes;
char *buffer;
{
int err;
--- 436,442 -----
int
compare_chunk(bytes,buffer)
! long bytes;
char *buffer;
{
int err;
**************
*** 452,458
int
compare_dir(bytes,buffer)
! int bytes;
char *buffer;
{
if(bcmp(buffer,diff_dir,bytes)) {
--- 464,470 -----
int
compare_dir(bytes,buffer)
! long bytes;
char *buffer;
{
if(bcmp(buffer,diff_dir,bytes)) {
**************
*** 457,463
{
if(bcmp(buffer,diff_dir,bytes)) {
annofile(msg_file, (char *)NULL);
! fprintf(msg_file, "%s: data differs\n",diff_name);
different++;
return -1;
}
--- 469,475 -----
{
if(bcmp(buffer,diff_dir,bytes)) {
annofile(msg_file, (char *)NULL);
! fprintf(msg_file, "%s: dir data differs\n",diff_name);
different++;
return -1;
}
*** list.c
--- ../gnu-tar/list.c
**************
*** 33,38
#include <sys/types.h>
#include <sys/stat.h>
#ifndef MSDOS
#include <sys/file.h>
#endif /* MSDOS */
--- 33,39 -----
#include <sys/types.h>
#include <sys/stat.h>
#ifndef MSDOS
+ #ifndef MINIX
#include <sys/file.h>
#endif
#endif /* MSDOS */
**************
*** 34,39
#include <sys/stat.h>
#ifndef MSDOS
#include <sys/file.h>
#endif /* MSDOS */
#ifdef USG
--- 35,41 -----
#ifndef MSDOS
#ifndef MINIX
#include <sys/file.h>
+ #endif
#endif /* MSDOS */
#ifdef USG
**************
*** 242,247
* We can't use unsigned char here because of old compilers,
* e.g. V7.
*/
sum += 0xFF & *p++;
}
--- 244,250 -----
* We can't use unsigned char here because of old compilers,
* e.g. V7.
*/
+ #ifdef ORIG
sum += 0xFF & *p++;
#else
sum += 0xFF & (long)*p++;
**************
*** 243,248
* e.g. V7.
*/
sum += 0xFF & *p++;
}
/* Adjust checksum to count the "chksum" field as blanks. */
--- 246,254 -----
*/
#ifdef ORIG
sum += 0xFF & *p++;
+ #else
+ sum += 0xFF & (long)*p++;
+ #endif
}
/* Adjust checksum to count the "chksum" field as blanks. */
*** port.c
--- ../gnu-tar/port.c
**************
*** 38,43
#ifdef MSDOS
#include <fcntl.h>
#else
#include <sys/file.h>
#endif
--- 38,44 -----
#ifdef MSDOS
#include <fcntl.h>
#else
+ #ifndef MINIX
#include <sys/file.h>
#endif
#endif
**************
*** 40,45
#else
#include <sys/file.h>
#endif
#include "tar.h"
#include "port.h"
--- 41,47 -----
#ifndef MINIX
#include <sys/file.h>
#endif
+ #endif
#include "tar.h"
#include "port.h"
**************
*** 79,88
#define WANT_VALLOC
#endif
- #ifdef MINIX
- #define WANT_BZERO
- #endif
-
#ifdef MSDOS
#define WANT_LSTAT
#define WANT_STRING
--- 81,86 -----
#define WANT_VALLOC
#endif
#ifdef MSDOS
#define WANT_LSTAT
#define WANT_STRING
**************
*** 96,102
#define WANT_GETOPT
#endif
! /* End of system-dependent #ifdefs */
#ifdef WANT_DUMB_GETDATE
/* JF a getdate() routine takes a date/time/etc and turns it into a time_t */
--- 94,109 -----
#define WANT_GETOPT
#endif
! #ifdef MINIX
! #define WANT_DUMB_GETDATE
! #define WANT_MKDIR
! #define WANT_VALLOC
! #ifdef MINIX14
! #define WANT_BZERO
! #undef WANT_STRSTR
! #undef WANT_GETOPT
! #endif
! #endif
/* End of system-dependent #ifdefs */
**************
*** 98,103
/* End of system-dependent #ifdefs */
#ifdef WANT_DUMB_GETDATE
/* JF a getdate() routine takes a date/time/etc and turns it into a time_t */
/* This one is a quick hack I wrote in about five minutes to see if the N
--- 105,112 -----
#endif
#endif
+ /* End of system-dependent #ifdefs */
+
#ifdef WANT_DUMB_GETDATE
/* JF a getdate() routine takes a date/time/etc and turns it into a time_t */
/* This one is a quick hack I wrote in about five minutes to see if the N
**************
*** 107,113
into a time_t . Its not well tested or anything. . . */
/* In general, you should use the getdate() supplied in getdate.y */
! #define OFF_FROM GMT 18000 /* Change for your time zone! */
time_t
getdate(str)
--- 116,123 -----
into a time_t . Its not well tested or anything. . . */
/* In general, you should use the getdate() supplied in getdate.y */
! /* Change for your time zone! */
! #define OFF_FROM_GMT 0
time_t
getdate(str)
**************
*** 243,248
status = umask(0); /* Get current umask */
status = umask(status | (0777 & ~dmode)); /* Set for mkdir */
execl("/bin/mkdir", "mkdir", dpath, (char *)0);
_exit(-1); /* Can't exec /bin/mkdir */
default: /* Parent process */
--- 253,259 -----
status = umask(0); /* Get current umask */
status = umask(status | (0777 & ~dmode)); /* Set for mkdir */
execl("/bin/mkdir", "mkdir", dpath, (char *)0);
+ execl("/usr/bin/mkdir", "mkdir", dpath, (char *)0);
_exit(-1); /* Can't exec /bin/mkdir */
default: /* Parent process */
*** tar.c
--- ../gnu-tar/tar.c
**************
*** 41,46
#ifdef MSDOS
#include <sys/dir.h>
#else
/*
* FIXME: On other systems there is no standard place for the header file
* for the portable directory access routines. Change the #include line
--- 41,51 -----
#ifdef MSDOS
#include <sys/dir.h>
#else
+ #ifdef MINIX14
+ #include <dirent.h>
+ #define direct dirent
+ #define d_namlen d_reclen
+ #else
/*
* FIXME: On other systems there is no standard place for the header file
* for the portable directory access routines. Change the #include line
**************
*** 49,54
#include "ndir.h"
#endif
#endif
extern char *malloc();
extern char *getenv();
--- 54,60 -----
#include "ndir.h"
#endif
#endif
+ #endif
extern char *malloc();
extern char *getenv();
**************
*** 428,433
void
describe()
{
fprintf(stderr,"%s: choose one of the following:\n",tar);
fputs("\
-A Append tar files to an archive.\n\
--- 434,478 -----
void
describe()
{
+ char **s;
+ static char *errs[] = {
+ "-A Append tar files to an archive.",
+ "-c Create a new archive.",
+ "-d Find differences between archive and file system.",
+ "-D Delete from the archive (NOT for use on mag tapes!)",
+ "-r Append files to the end of an archive.",
+ "-t List the contents of an archive.",
+ "-u Only append files that are newer than the copy in an archive.",
+ "-x Extract files from an archive.",
+ "Other options:",
+ "-b N blocking factor N (block size = Nx512 bytes)",
+ "-B reblock as we read (for reading 4.2BSD pipes)",
+ "-C dir change to directory DIR",
+ "-f F read/write archive from file or device F (or hostname:/ForD)",
+ "-G create/list/extract GNU-format backup",
+ "-h don't dump symbolic links; dump the files they point to",
+ "-i ignore blocks of zeros in the archive, which normally mean EOF",
+ "-k keep existing files, don't overwrite them from the archive",
+ "-K file begin at \"file\" in the archive",
+ "-l stay in the local file system (like dump(8)) when creating an archive",
+ "-m don't extract file modified time",
+ "-M create/list/extract multi-volume archive",
+ "-N date only store files newer than DATE",
+ "-o write an old V7 format archive, rather than ANSI [draft 6] format",
+ "-O extract files to standard output",
+ "-p do extract all protection information",
+ "-R dump record number within archive with each message",
+ "-s list of names to extract is sorted to match the archive",
+ "-T F get names to extract or create from file F",
+ "-v verbosely list what files we process",
+ "-V vnam create archive with volume name 'vnam'",
+ "-w ask for confirmation for every action",
+ "-W attempt to verify the archive after writing it",
+ "-X file eXclude files listed in \"file\"",
+ "-z or Z run the archive through compress(1)",
+ "-[0-7][lmh] specify drive and density",
+ 0
+ };
fprintf(stderr,"%s: choose one of the following:\n",tar);
for( s = errs; *s; s++ ){
fputs( *s, stderr );
**************
*** 429,476
describe()
{
fprintf(stderr,"%s: choose one of the following:\n",tar);
! fputs("\
! -A Append tar files to an archive.\n\
! -c Create a new archive.\n\
! -d Find differences between archive and file system.\n\
! -D Delete from the archive (NOT for use on mag tapes!)\n\
! -r Append files to the end of an archive.\n\
! -t List the contents of an archive.\n\
! -u Only append files that are newer than the copy in an archive.\n\
! -x Extract files from an archive.\n",stderr);
!
! fputs("\
! Other options:\n\
! -b N blocking factor N (block size = Nx512 bytes)\n\
! -B reblock as we read (for reading 4.2BSD pipes)\n\
! -C dir change to directory DIR\n\
! ", stderr); /* KLUDGE */ fputs("\
! -f F read/write archive from file or device F (or hostname:/ForD)\n\
! -G create/list/extract GNU-format backup\n\
! -h don't dump symbolic links; dump the files they point to\n\
! -i ignore blocks of zeros in the archive, which normally mean EOF\n\
! -k keep existing files, don't overwrite them from the archive\n\
! -K file begin at \"file\" in the archive\n\
! -l stay in the local file system (like dump(8)) when creating an archive\n\
! ", stderr); /* KLUDGE */ fputs("\
! -m don't extract file modified time\n\
! -M create/list/extract multi-volume archive\n\
! -N date only store files newer than DATE\n\
! -o write an old V7 format archive, rather than ANSI [draft 6] format\n\
! -O extract files to standard output\n\
! -p do extract all protection information\n\
! -R dump record number within archive with each message\n\
! -s list of names to extract is sorted to match the archive\n\
! ", stderr); /* KLUDGE */ fputs("\
! -T F get names to extract or create from file F\n\
! -v verbosely list what files we process\n\
! -V vnam create archive with volume name 'vnam'\n\
! -w ask for confirmation for every action\n\
! -W attempt to verify the archive after writing it\n\
! -X file eXclude files listed in \"file\"\n\
! -z or Z run the archive through compress(1)\n\
! -[0-7][lmh] specify drive and density\n\
! ", stderr);
}
--- 474,483 -----
0
};
fprintf(stderr,"%s: choose one of the following:\n",tar);
! for( s = errs; *s; s++ ){
! fputs( *s, stderr );
! fputc( '\n', stderr );
! }
}
**************
*** 802,807
{
;
}
/* p is a directory. Add all the files in P to the namelist. If any of the
files is a directory, recurse on the subdirectory. . . */
static
--- 809,820 -----
{
;
}
+
+ #ifdef V7
+ /* Avoid name clashes */
+ #define add_dir_name a_d_n
+ #endif
+
/* p is a directory. Add all the files in P to the namelist. If any of the
files is a directory, recurse on the subdirectory. . . */
static
**************
*** 1213,1218
}
closedir(dirp);
if(rmdir(path)<0)
return 1;
return 0;
--- 1226,1232 -----
}
closedir(dirp);
+ #ifndef V7
if(rmdir(path)<0)
#else
if(unlink(path)<0)
**************
*** 1214,1219
closedir(dirp);
if(rmdir(path)<0)
return 1;
return 0;
}
--- 1228,1236 -----
#ifndef V7
if(rmdir(path)<0)
+ #else
+ if(unlink(path)<0)
+ #endif
return 1;
return 0;
}
*** update.c
--- ../gnu-tar/update.c
**************
*** 257,262
}
#endif
int number_of_blocks_read = 0;
int number_of_new_records = 0;
--- 257,273 -----
}
#endif
+ #ifdef V7
+ /* Avoid name clashes */
+ #define number_of_blocks_read n_o_br
+ #define number_of_new_records n_o_nr
+ #define number_of_records_needed n_o_rn
+ #define number_of_blocks_read n_o_br
+ #define number_of_records_to_skip norts
+ #define number_of_records_to_keep nortk
+ #define number_of_kept_records_in_block nokrib
+ #endif
+
int number_of_blocks_read = 0;
int number_of_new_records = 0;