You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
165 lines
4.8 KiB
165 lines
4.8 KiB
Index: ar.h |
|
--- ar.h.orig 1993-05-01 06:04:22.000000000 +0200 |
|
+++ ar.h 2004-05-27 21:08:48.000000000 +0200 |
|
@@ -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 |
|
Index: bsd.c |
|
--- bsd.c.orig 1993-05-01 06:21:53.000000000 +0200 |
|
+++ bsd.c 2004-05-27 21:08:48.000000000 +0200 |
|
@@ -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) |
|
Index: misc2.c |
|
--- misc2.c.orig 1991-07-16 17:53:02.000000000 +0200 |
|
+++ misc2.c 2004-05-27 21:08:48.000000000 +0200 |
|
@@ -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 */ |
|
Index: nixtime.i |
|
--- nixtime.i.orig 1991-07-16 17:53:46.000000000 +0200 |
|
+++ nixtime.i 2004-05-27 21:08:48.000000000 +0200 |
|
@@ -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)); |
|
} |
|
|
|
Index: options.h |
|
--- options.h.orig 1993-05-01 06:27:59.000000000 +0200 |
|
+++ options.h 2004-05-27 21:08:48.000000000 +0200 |
|
@@ -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 |
|
Index: zooadd2.c |
|
--- zooadd2.c.orig 1991-07-20 01:38:10.000000000 +0200 |
|
+++ zooadd2.c 2004-05-27 21:08:48.000000000 +0200 |
|
@@ -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 |
|
Index: zoofns.h |
|
--- zoofns.h.orig 1993-05-01 05:57:35.000000000 +0200 |
|
+++ zoofns.h 2004-05-27 21:08:48.000000000 +0200 |
|
@@ -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 *)); |
|
Index: zoolist.c |
|
--- zoolist.c.orig 1991-07-20 00:57:27.000000000 +0200 |
|
+++ zoolist.c 2004-05-27 21:08:48.000000000 +0200 |
|
@@ -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 */
|
|
|