zoo timezone bug fix

Rahul Dhesi dhesi at bsu-cs.UUCP
Wed Feb 22 02:17:12 AEST 1989


I was sent the following bug fix for the zoo timezone bug.  It changes
the timezone field to a signed quantity.  I have not tested it.  It
looks like it should work.  It does not introduce any incompatibility.

This fix should be needed only if you are t hours east of GMT, such
that 0 < t < 12, and if GETTZ is defined at compilation time.  Thanks
to Thomas P.S. Olesen <mcvax!dkuug!dde!tpo> for this.

---------------------cut------------------------------------------
*** portable.c.ori
--- portable.c
**************
*** 20,25
  For machine-dependent declarations see files "machine.h" and "options.h". 
  
  For machine-dependent functions see file "machine.c"
  */
  
  #include "zooio.h"
--- 20,27 -----
  For machine-dependent declarations see files "machine.h" and "options.h". 
  
  For machine-dependent functions see file "machine.c"
+ CHANGES:
+    changed tz in direntry to signed char      (Thomas  P. Olesen   tpo at dde.dk)
  */
  
  #include "zooio.h"
**************
*** 496,502
     if (direntry->type == 2) { /* handle stuff relevant to type 2 */
        cursize = SIZ_DIRL;
        fixsize = SIZ_DIRL;
!       bytes[TZ_I] = direntry->tz;
        assert(direntry->namlen < 256 && direntry->namlen >= 0);
  		cursize += 2;        /* space for namlen and dirlen */
        if (direntry->namlen != 0) {
--- 498,504 -----
     if (direntry->type == 2) { /* handle stuff relevant to type 2 */
        cursize = SIZ_DIRL;
        fixsize = SIZ_DIRL;
!       bytes[TZ_I] = (uchar)direntry->tz;
        assert(direntry->namlen < 256 && direntry->namlen >= 0);
  		cursize += 2;        /* space for namlen and dirlen */
        if (direntry->namlen != 0) {
**************
*** 594,600
        assert(direntry->var_dir_len <= MAXDIRSIZE);
        if (direntry->var_dir_len > MAXDIRSIZE)
           direntry->var_dir_len = MAXDIRSIZE;
!       direntry->tz = bytes[TZ_I];   
        if (direntry->var_dir_len > 0)
           direntry->namlen = bytes[NAMLEN_I];
        if (direntry->var_dir_len > 1)
--- 596,602 -----
        assert(direntry->var_dir_len <= MAXDIRSIZE);
        if (direntry->var_dir_len > MAXDIRSIZE)
           direntry->var_dir_len = MAXDIRSIZE;
!       direntry->tz = (char)bytes[TZ_I];   
        if (direntry->var_dir_len > 0)
           direntry->namlen = bytes[NAMLEN_I];
        if (direntry->var_dir_len > 1)
*** zoo.h.orig
--- zoo.h
**************
*** 49,54
  The directory entry of each file will contain the minimum version number of
  Zoo needed to extract that file.  As far as possible, version 1.00 of Zoo
  will be able to extract files from future version archives.
  */
  
  #define H_TYPE	1				/* archive header type */
--- 49,57 -----
  The directory entry of each file will contain the minimum version number of
  Zoo needed to extract that file.  As far as possible, version 1.00 of Zoo
  will be able to extract files from future version archives.
+ -------------------------------------------------------------------------
+ CHANGES:
+    changed tz in direntry to signed char      (Thomas  P. Olesen   tpo at dde.dk)
  */
  
  #define H_TYPE	1				/* archive header type */
**************
*** 122,128
     char fname[FNAMESIZE]; 		/* filename */
  
     int var_dir_len;           /* length of variable part of dir entry */
!    uchar tz;                   /* timezone where file was archived */
     unsigned int dir_crc;      /* CRC of directory entry */
  
     /* fields for variable part of directory entry follow */
--- 125,131 -----
     char fname[FNAMESIZE]; 		/* filename */
  
     int var_dir_len;           /* length of variable part of dir entry */
!    char tz;                   /* timezone where file was archived */
     unsigned int dir_crc;      /* CRC of directory entry */
  
     /* fields for variable part of directory entry follow */
-- end of patch --
-- 
Rahul Dhesi         UUCP:  <backbones>!{iuvax,pur-ee}!bsu-cs!dhesi
                    ARPA:  bsu-cs!dhesi at iuvax.cs.indiana.edu



More information about the Comp.sources.bugs mailing list