1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-22 04:17:44 +00:00

- Patch zoo to work properly when modifying existing archives on 64-bit

systems
- Bump PORTREVISION

PR:		ports/162804
Submitted by:	Carl Johnson <carlj@peak.org>
This commit is contained in:
Gabor Kovesdan 2011-12-22 13:12:22 +00:00
parent dcfd8be7ef
commit 2aff69237c
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=287863
14 changed files with 228 additions and 306 deletions

View File

@ -7,7 +7,7 @@
PORTNAME= zoo
PORTVERSION= 2.10.1
PORTREVISION= 2
PORTREVISION= 3
CATEGORIES= archivers
MASTER_SITES= ftp://ftp.kiarchive.ru/pub/unix/arcers/
DISTNAME= zoo-2.10pl1

View File

@ -1,232 +0,0 @@
*** bsd.c.old Thu Aug 8 09:34:07 1991
--- bsd.c Thu Jan 5 05:20:03 1995
***************
*** 69,76 ****
}
/* Function gettz() returns the offset from GMT in seconds */
! long gettz()
{
#define SEC_IN_DAY (24L * 60L * 60L)
#define INV_VALUE (SEC_IN_DAY + 1L)
static long retval = INV_VALUE; /* cache, init to impossible value */
--- 69,80 ----
}
/* Function gettz() returns the offset from GMT in seconds */
! long gettz(t)
! long t;
{
+ #if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
+ return -localtime(&t)->tm_gmtoff;
+ #else
#define SEC_IN_DAY (24L * 60L * 60L)
#define INV_VALUE (SEC_IN_DAY + 1L)
static long retval = INV_VALUE; /* cache, init to impossible value */
***************
*** 83,88 ****
--- 87,93 ----
/* Timezone fix thanks to Bill Davidsen <wedu@ge-crd.ARPA> */
retval = tzp.tz_minuteswest * 60 - tzp.tz_dsttime * 3600L;
return retval;
+ #endif
}
/* Standard UNIX-compatible time routines */
***************
*** 91,105 ****
/* Standard UNIX-specific file attribute routines */
#include "nixmode.i"
#ifndef SEEK_CUR
# define SEEK_CUR 1
#endif
/* Truncate a file. */
int zootrunc(f) FILE *f;
{
! extern long lseek();
! long seekpos;
int fd = fileno(f);
seekpos = lseek(fd, 0L, SEEK_CUR);
if (seekpos >= 0)
--- 96,114 ----
/* Standard UNIX-specific file attribute routines */
#include "nixmode.i"
+ #if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
+ #include <unistd.h>
+ #else
#ifndef SEEK_CUR
# define SEEK_CUR 1
#endif
+ #endif
/* Truncate a file. */
int zootrunc(f) FILE *f;
{
! extern off_t lseek();
! off_t seekpos;
int fd = fileno(f);
seekpos = lseek(fd, 0L, SEEK_CUR);
if (seekpos >= 0)
*** misc2.c.old Thu Aug 8 09:34:48 1991
--- misc2.c Thu Jan 5 05:37:06 1995
***************
*** 314,323 ****
{
long diff_tz;
long longtime;
if (direntry->tz == NO_TZ) /* none stored */
return;
! diff_tz = (long) direntry->tz * (3600/4) - gettz(); /* diff. in seconds */
! longtime = mstonix (direntry->date, direntry->time) + diff_tz; /* adj tz */
mstime (longtime, &direntry->date, &direntry->time);
}
#endif /* GETTZ */
--- 314,325 ----
{
long diff_tz;
long longtime;
+ long t;
if (direntry->tz == NO_TZ) /* none stored */
return;
! t = mstonix (direntry->date, direntry->time);
! diff_tz = (long) direntry->tz * (3600/4) - gettz(t); /* diff. in seconds */
! longtime = t + diff_tz; /* adj tz */
mstime (longtime, &direntry->date, &direntry->time);
}
#endif /* GETTZ */
*** nixtime.i.old Thu Aug 8 09:34:57 1991
--- nixtime.i Thu Jan 5 05:16:28 1995
***************
*** 52,58 ****
long mstonix();
long gettz();
long utimbuf[2];
! utimbuf[0] = utimbuf[1] = gettz() + mstonix (date, time);
return (utime (path, utimbuf));
}
--- 52,59 ----
long mstonix();
long gettz();
long utimbuf[2];
! long t = mstonix (date, time);
! utimbuf[0] = utimbuf[1] = t + gettz(t);
return (utime (path, utimbuf));
}
*** zoolist.c.old Thu Aug 8 09:36:09 1991
--- zoolist.c Thu Jan 5 05:41:47 1995
***************
*** 539,548 ****
{
long gettz();
int diff_tz; /* timezone difference */
if (file_tz == NO_TZ) /* if no timezone stored ..*/
printf (" "); /* .. just pad with blanks */
else {
! diff_tz = (file_tz / 4) - (int) (gettz() / 3600);
if (diff_tz == 0)
printf (" "); /* print nothing if same */
else if (diff_tz > 0) /* else print signed difference */
--- 539,550 ----
{
long gettz();
int diff_tz; /* timezone difference */
+ long t;
if (file_tz == NO_TZ) /* if no timezone stored ..*/
printf (" "); /* .. just pad with blanks */
else {
! time(&t);
! diff_tz = (file_tz / 4) - (int) (gettz(t) / 3600);
if (diff_tz == 0)
printf (" "); /* print nothing if same */
else if (diff_tz > 0) /* else print signed difference */
*** zoofns.h.bak Thu Aug 8 09:36:02 1991
--- zoofns.h Thu Jan 5 06:03:04 1995
***************
*** 94,100 ****
--- 94,104 ----
void fixslash PARMS ((char *));
void makelist PARMS ((int, char *[], char *[], int, char *, char *, char *, int *));
void memerr PARMS ((unsigned int));
+ #ifdef STDARG
+ void prterror(int level, char *format, ...);
+ #else
void prterror PARMS ((int, char *, ...));
+ #endif
void rootname PARMS ((char *, char *));
void skip_files PARMS ((ZOOFILE, unsigned int *, unsigned int *, int *,
char [], long *));
*** options.h.orig Sat May 1 08:27:59 1993
--- options.h Thu Jan 5 06:51:56 1995
***************
*** 96,102 ****
#define NIXTIME
#define NIXFNAME
#define NEEDCTYP
- #define NOENUM
#define REN_STDC
#define SETBUF
#define GETTZ
--- 96,101 ----
***************
*** 110,115 ****
--- 109,115 ----
#define ANSI_PROTO
#define VOIDPTR void *
#else
+ #define NOENUM
#define NOSTRCHR /* not really needed for 4.3BSD */
#define T_SIGNAL int
#define VARARGS
*** zooadd2.c.orig Sat Jul 20 02:38:10 1991
--- zooadd2.c Thu Jan 5 06:55:40 1995
***************
*** 258,269 ****
register struct direntry *direntry;
{
#ifdef GETTZ
long gettz();
#endif
direntry->zoo_tag = ZOO_TAG;
direntry->type = 2; /* type is now 2 */
#ifdef GETTZ
! direntry->tz = gettz() / (15 * 60); /* seconds => 15-min units */
#else
direntry->tz = NO_TZ; /* timezone unknown */
#endif
--- 258,272 ----
register struct direntry *direntry;
{
#ifdef GETTZ
+ long mstonix();
long gettz();
+ long t;
#endif
direntry->zoo_tag = ZOO_TAG;
direntry->type = 2; /* type is now 2 */
#ifdef GETTZ
! t = mstonix (direntry->date, direntry->time);
! direntry->tz = gettz(t) / (15 * 60); /* seconds => 15-min units */
#else
direntry->tz = NO_TZ; /* timezone unknown */
#endif
*** ar.h.orig Sat May 1 08:04:22 1993
--- ar.h Thu Jan 5 07:05:36 1995
***************
*** 15,23 ****
--- 15,25 ----
/* uchar should be 8 bits or more */
/* typedef unsigned char uchar; -- already in zoo.h */
+ #if !(defined(__FreeBSD__) && __FreeBSD__ < 3) && !defined(__OpenBSD__) && !defined(__NetBSD__)
typedef unsigned int uint; /* 16 bits or more */
#if !defined(__386BSD__) || !defined(_TYPES_H_)
typedef unsigned short ushort; /* 16 bits or more */
+ #endif
#endif
typedef unsigned long ulong; /* 32 bits or more */

View File

@ -1,68 +0,0 @@
*** makefile.old Tue Jul 16 17:52:08 1991
--- makefile Mon Jun 3 14:05:51 2002
***************
*** 18,30 ****
MAKE = make # needed for some systems e.g. older BSD
! CC = cc
! CFLAGS =
MODEL =
EXTRA = -DBIG_MEM -DNDEBUG
LINTFLAGS = -DLINT
! OPTIM = -O
! DESTDIR = /usr/local/bin
#List of all object files created for Zoo
ZOOOBJS = addbfcrc.o addfname.o basename.o comment.o crcdefs.o \
--- 18,30 ----
MAKE = make # needed for some systems e.g. older BSD
! #CC = cc
! #CFLAGS =
MODEL =
EXTRA = -DBIG_MEM -DNDEBUG
LINTFLAGS = -DLINT
! OPTIM = $(CFLAGS)
! DESTDIR = $(PREFIX)/bin
#List of all object files created for Zoo
ZOOOBJS = addbfcrc.o addfname.o basename.o comment.o crcdefs.o \
***************
*** 67,73 ****
@echo "lint_turboc: Run lint under **IX for checking Turbo C/MSDOS code"
# install alpha zoo as "tzoo"
! install:
mv zoo $(DESTDIR)/tzoo
# install beta zoo as "bzoo"
--- 67,73 ----
@echo "lint_turboc: Run lint under **IX for checking Turbo C/MSDOS code"
# install alpha zoo as "tzoo"
! inst_test:
mv zoo $(DESTDIR)/tzoo
# install beta zoo as "bzoo"
***************
*** 75,82 ****
mv zoo $(DESTDIR)/bzoo
# install production zoo as "zoo"
! inst_prod:
! mv zoo $(DESTDIR)/zoo
# executable targets
TARGETS = zoo fiz
--- 75,83 ----
mv zoo $(DESTDIR)/bzoo
# install production zoo as "zoo"
! install:
! $(BSD_INSTALL_PROGRAM) $(TARGETS) $(DESTDIR)
! $(BSD_INSTALL_MAN) zoo.1 fiz.1 $(PREFIX)/man/man1
# executable targets
TARGETS = zoo fiz

View File

@ -0,0 +1,15 @@
--- ./ar.h.orig 1993-05-01 06:04:22.000000000 +0200
+++ ./ar.h 2011-12-22 14:00:55.000000000 +0100
@@ -15,10 +15,12 @@
/* uchar should be 8 bits or more */
/* typedef unsigned char uchar; -- already in zoo.h */
+#if !(defined(__FreeBSD__) && __FreeBSD__ < 3) && !defined(__OpenBSD__) && !defined(__NetBSD__)
typedef unsigned int uint; /* 16 bits or more */
#if !defined(__386BSD__) || !defined(_TYPES_H_)
typedef unsigned short ushort; /* 16 bits or more */
#endif
+#endif
typedef unsigned long ulong; /* 32 bits or more */
/* T_UINT16 must be #defined in options.h to be

View File

@ -0,0 +1,46 @@
--- ./bsd.c.orig 1993-05-01 06:21:53.000000000 +0200
+++ ./bsd.c 2011-12-22 14:00:55.000000000 +0100
@@ -69,8 +69,12 @@
}
/* Function gettz() returns the offset from GMT in seconds */
-long gettz()
+long gettz(t)
+long t;
{
+#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
+ return -localtime(&t)->tm_gmtoff;
+#else
#define SEC_IN_DAY (24L * 60L * 60L)
#define INV_VALUE (SEC_IN_DAY + 1L)
static long retval = INV_VALUE; /* cache, init to impossible value */
@@ -95,6 +99,7 @@
retval = -tm->tm_gmtoff;
#endif
return retval;
+#endif
}
/* Standard UNIX-compatible time routines */
@@ -103,15 +108,19 @@
/* Standard UNIX-specific file attribute routines */
#include "nixmode.i"
+#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
+#include <unistd.h>
+#else
#ifndef SEEK_CUR
# define SEEK_CUR 1
#endif
+#endif
/* Truncate a file. */
int zootrunc(f) FILE *f;
{
- extern long lseek();
- long seekpos;
+ extern off_t lseek();
+ off_t seekpos;
int fd = fileno(f);
seekpos = lseek(fd, 0L, SEEK_CUR);
if (seekpos >= 0)

View File

@ -0,0 +1,41 @@
--- ./makefile.orig 1991-07-16 17:52:08.000000000 +0200
+++ ./makefile 2011-12-22 14:00:55.000000000 +0100
@@ -18,13 +18,13 @@
MAKE = make # needed for some systems e.g. older BSD
-CC = cc
-CFLAGS =
+#CC = cc
+#CFLAGS =
MODEL =
EXTRA = -DBIG_MEM -DNDEBUG
LINTFLAGS = -DLINT
-OPTIM = -O
-DESTDIR = /usr/local/bin
+OPTIM = $(CFLAGS)
+DESTDIR = $(PREFIX)/bin
#List of all object files created for Zoo
ZOOOBJS = addbfcrc.o addfname.o basename.o comment.o crcdefs.o \
@@ -67,7 +67,7 @@
@echo "lint_turboc: Run lint under **IX for checking Turbo C/MSDOS code"
# install alpha zoo as "tzoo"
-install:
+inst_test:
mv zoo $(DESTDIR)/tzoo
# install beta zoo as "bzoo"
@@ -75,8 +75,9 @@
mv zoo $(DESTDIR)/bzoo
# install production zoo as "zoo"
-inst_prod:
- mv zoo $(DESTDIR)/zoo
+install:
+ $(BSD_INSTALL_PROGRAM) $(TARGETS) $(DESTDIR)
+ $(BSD_INSTALL_MAN) zoo.1 fiz.1 $(PREFIX)/man/man1
# executable targets
TARGETS = zoo fiz

View File

@ -1,5 +1,5 @@
--- misc.c.orig Tue Jul 16 17:52:54 1991
+++ misc.c Thu Apr 6 08:45:41 2006
--- ./misc.c.orig 1991-07-16 17:52:54.000000000 +0200
+++ ./misc.c 2011-12-22 14:02:23.000000000 +0100
@@ -135,11 +135,16 @@
char *fullpath (direntry)
struct direntry *direntry;
@ -18,3 +18,15 @@
return (result);
}
@@ -172,7 +177,11 @@
frd_zooh (header, zoo_file);
+#ifdef __LP64__
+ if ((int)(header->zoo_start + header->zoo_minus) != 0)
+#else
if ((header->zoo_start + header->zoo_minus) != 0L)
+#endif
prterror ('f', failed_consistency);
if (ver_too_high (header))
prterror ('f', wrong_version, header->major_ver, header->minor_ver);

View File

@ -0,0 +1,17 @@
--- ./misc2.c.orig 1991-07-16 17:53:02.000000000 +0200
+++ ./misc2.c 2011-12-22 14:00:55.000000000 +0100
@@ -314,10 +314,12 @@
{
long diff_tz;
long longtime;
+ long t;
if (direntry->tz == NO_TZ) /* none stored */
return;
- diff_tz = (long) direntry->tz * (3600/4) - gettz(); /* diff. in seconds */
- longtime = mstonix (direntry->date, direntry->time) + diff_tz; /* adj tz */
+ t = mstonix (direntry->date, direntry->time);
+ diff_tz = (long) direntry->tz * (3600/4) - gettz(t); /* diff. in seconds */
+ longtime = t + diff_tz; /* adj tz */
mstime (longtime, &direntry->date, &direntry->time);
}
#endif /* GETTZ */

View File

@ -0,0 +1,12 @@
--- ./nixtime.i.orig 1991-07-16 17:53:46.000000000 +0200
+++ ./nixtime.i 2011-12-22 14:00:55.000000000 +0100
@@ -52,7 +52,8 @@
long mstonix();
long gettz();
long utimbuf[2];
- utimbuf[0] = utimbuf[1] = gettz() + mstonix (date, time);
+ long t = mstonix (date, time);
+ utimbuf[0] = utimbuf[1] = t + gettz(t);
return (utime (path, utimbuf));
}

View File

@ -0,0 +1,18 @@
--- ./options.h.orig 1993-05-01 06:27:59.000000000 +0200
+++ ./options.h 2011-12-22 14:00:55.000000000 +0100
@@ -96,7 +96,6 @@
#define NIXTIME
#define NIXFNAME
#define NEEDCTYP
-#define NOENUM
#define REN_STDC
#define SETBUF
#define GETTZ
@@ -110,6 +109,7 @@
#define ANSI_PROTO
#define VOIDPTR void *
#else
+#define NOENUM
#define NOSTRCHR /* not really needed for 4.3BSD */
#define T_SIGNAL int
#define VARARGS

View File

@ -0,0 +1,19 @@
--- ./zooadd2.c.orig 1991-07-20 01:38:10.000000000 +0200
+++ ./zooadd2.c 2011-12-22 14:00:55.000000000 +0100
@@ -258,12 +258,15 @@
register struct direntry *direntry;
{
#ifdef GETTZ
+ long mstonix();
long gettz();
+ long t;
#endif
direntry->zoo_tag = ZOO_TAG;
direntry->type = 2; /* type is now 2 */
#ifdef GETTZ
- direntry->tz = gettz() / (15 * 60); /* seconds => 15-min units */
+ t = mstonix (direntry->date, direntry->time);
+ direntry->tz = gettz(t) / (15 * 60); /* seconds => 15-min units */
#else
direntry->tz = NO_TZ; /* timezone unknown */
#endif

View File

@ -1,6 +1,18 @@
--- zooext.c~ Sat May 1 05:58:50 1993
+++ zooext.c Sat Nov 12 14:04:17 2005
@@ -184,7 +184,8 @@
--- ./zooext.c.orig 1993-05-01 05:58:50.000000000 +0200
+++ ./zooext.c 2011-12-22 14:03:37.000000000 +0100
@@ -163,7 +163,11 @@
} else {
/* read header */
frd_zooh (&zoo_header, zoo_file);
+#ifdef __LP64__
+ if ((int)(zoo_header.zoo_start + zoo_header.zoo_minus) != 0) {
+#else
if ((zoo_header.zoo_start + zoo_header.zoo_minus) != 0L) {
+#endif
prterror ('w', failed_consistency);
bad_header++;
exit_status = 1;
@@ -184,7 +188,8 @@
this_file = STDOUT; /* standard output */
while (1) {

View File

@ -0,0 +1,14 @@
--- ./zoofns.h.orig 1993-05-01 05:57:35.000000000 +0200
+++ ./zoofns.h 2011-12-22 14:00:55.000000000 +0100
@@ -94,7 +94,11 @@
void fixslash PARMS ((char *));
void makelist PARMS ((int, char *[], char *[], int, char *, char *, char *, int *));
void memerr PARMS ((unsigned int));
+#ifdef STDARG
+void prterror(int level, char *format, ...);
+#else
void prterror PARMS ((int, char *, ...));
+#endif
void rootname PARMS ((char *, char *));
void skip_files PARMS ((ZOOFILE, unsigned int *, unsigned int *, int *,
char [], long *));

View File

@ -0,0 +1,16 @@
--- ./zoolist.c.orig 1991-07-20 00:57:27.000000000 +0200
+++ ./zoolist.c 2011-12-22 14:00:55.000000000 +0100
@@ -539,10 +539,12 @@
{
long gettz();
int diff_tz; /* timezone difference */
+ long t;
if (file_tz == NO_TZ) /* if no timezone stored ..*/
printf (" "); /* .. just pad with blanks */
else {
- diff_tz = (file_tz / 4) - (int) (gettz() / 3600);
+ time(&t);
+ diff_tz = (file_tz / 4) - (int) (gettz(t) / 3600);
if (diff_tz == 0)
printf (" "); /* print nothing if same */
else if (diff_tz > 0) /* else print signed difference */