delete trailing whitespace from control files
[debian/gzip] / zip.c
diff --git a/zip.c b/zip.c
index 090fbdfc9feb47be6ee4106df5f410427848acfa..be5c4b0b95267ddfaa67c3f439a87369d2e02f1c 100644 (file)
--- a/zip.c
+++ b/zip.c
@@ -1,11 +1,11 @@
 /* zip.c -- compress files to the gzip or pkzip format
 
 /* zip.c -- compress files to the gzip or pkzip format
 
-   Copyright (C) 1997, 1998, 1999, 2006, 2007 Free Software Foundation, Inc.
+   Copyright (C) 1997-1999, 2006-2007, 2009-2018 Free Software Foundation, Inc.
    Copyright (C) 1992-1993 Jean-loup Gailly
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    Copyright (C) 1992-1993 Jean-loup Gailly
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
+   the Free Software Foundation; either version 3, or (at your option)
    any later version.
 
    This program is distributed in the hope that it will be useful,
    any later version.
 
    This program is distributed in the hope that it will be useful,
    along with this program; if not, write to the Free Software Foundation,
    Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
 
    along with this program; if not, write to the Free Software Foundation,
    Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
 
-#ifdef RCSID
-static char rcsid[] = "$Id: zip.c,v 1.7 2007/03/20 05:09:51 eggert Exp $";
-#endif
-
 #include <config.h>
 #include <ctype.h>
 
 #include "tailor.h"
 #include "gzip.h"
 #include <config.h>
 #include <ctype.h>
 
 #include "tailor.h"
 #include "gzip.h"
-#include "crypt.h"
-
-#ifdef HAVE_UNISTD_H
-#  include <unistd.h>
-#endif
-#ifdef HAVE_FCNTL_H
-#  include <fcntl.h>
-#endif
 
 local ulg crc;       /* crc on uncompressed file data */
 off_t header_bytes;   /* number of bytes in gzip header */
 
 local ulg crc;       /* crc on uncompressed file data */
 off_t header_bytes;   /* number of bytes in gzip header */
@@ -63,12 +51,20 @@ int zip(in, out)
     put_byte(DEFLATED);      /* compression method */
 
     if (save_orig_name) {
     put_byte(DEFLATED);      /* compression method */
 
     if (save_orig_name) {
-       flags |= ORIG_NAME;
+        flags |= ORIG_NAME;
     }
     put_byte(flags);         /* general flags */
     }
     put_byte(flags);         /* general flags */
-    stamp = (0 <= time_stamp.tv_sec && time_stamp.tv_sec <= 0xffffffff
-            ? (ulg) time_stamp.tv_sec
-            : (ulg) 0);
+    if (time_stamp.tv_nsec < 0)
+      stamp = 0;
+    else if (0 < time_stamp.tv_sec && time_stamp.tv_sec <= 0xffffffff)
+      stamp = time_stamp.tv_sec;
+    else
+      {
+        /* It's intended that timestamp 0 generates this warning,
+           since gzip format reserves 0 for something else.  */
+        warning ("file timestamp out of range for gzip format");
+        stamp = 0;
+      }
     put_long (stamp);
 
     /* Write deflated file to zip file */
     put_long (stamp);
 
     /* Write deflated file to zip file */
@@ -82,29 +78,29 @@ int zip(in, out)
     put_byte(OS_CODE);            /* OS identifier */
 
     if (save_orig_name) {
     put_byte(OS_CODE);            /* OS identifier */
 
     if (save_orig_name) {
-       char *p = gzip_base_name (ifname); /* Don't save the directory part. */
-       do {
-           put_char(*p);
-       } while (*p++);
+        char *p = gzip_base_name (ifname); /* Don't save the directory part. */
+        do {
+            put_byte (*p);
+        } while (*p++);
     }
     header_bytes = (off_t)outcnt;
 
     (void)deflate();
 
     }
     header_bytes = (off_t)outcnt;
 
     (void)deflate();
 
-#if !defined(NO_SIZE_CHECK) && !defined(RECORD_IO)
-  /* Check input size (but not in VMS -- variable record lengths mess it up)
-   * and not on MSDOS -- diet in TSR mode reports an incorrect file size)
+#ifndef NO_SIZE_CHECK
+  /* Check input size
+   * (but not on MSDOS -- diet in TSR mode reports an incorrect file size)
    */
     if (ifile_size != -1L && bytes_in != ifile_size) {
    */
     if (ifile_size != -1L && bytes_in != ifile_size) {
-       fprintf(stderr, "%s: %s: file size changed while zipping\n",
-               program_name, ifname);
+        fprintf(stderr, "%s: %s: file size changed while zipping\n",
+                program_name, ifname);
     }
 #endif
 
     /* Write the crc and uncompressed size */
     put_long(crc);
     put_long((ulg)bytes_in);
     }
 #endif
 
     /* Write the crc and uncompressed size */
     put_long(crc);
     put_long((ulg)bytes_in);
-    header_bytes += 2*sizeof(long);
+    header_bytes += 2*4;
 
     flush_outbuf();
     return OK;
 
     flush_outbuf();
     return OK;
@@ -127,8 +123,7 @@ int file_read(buf, size)
     len = read_buffer (ifd, buf, size);
     if (len == 0) return (int)len;
     if (len == (unsigned)-1) {
     len = read_buffer (ifd, buf, size);
     if (len == 0) return (int)len;
     if (len == (unsigned)-1) {
-       read_error();
-       return EOF;
+        read_error();
     }
 
     crc = updcrc((uch*)buf, len);
     }
 
     crc = updcrc((uch*)buf, len);