components/zip/patches/03-s_is-fix.patch
author Jiri Kukacka <jiri.kukacka@oracle.com>
Wed, 03 Dec 2014 06:13:04 -0800
changeset 3540 4f3892464f83
permissions -rw-r--r--
19936161 zip incorrectly treats S_IF* as bitmasks, not values
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3540
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
     1
# developed in house, fed back, already fixed in development version.
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
     2
# reported to http://www.info-zip.org/zip-bug.html
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
     3
# patch fixes usage of S_IF* using macros instead of incorrect access as if
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
     4
# it was bitmask.
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
     5
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
     6
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
     7
--- zip30/unix/unix.c.old       2008-06-18 21:26:18.000000000 -0700
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
     8
+++ zip30/unix/unix.c   2014-11-19 10:02:32.388243582 -0800
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
     9
@@ -140,7 +140,7 @@
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    10
   }
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    11
 
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    12
   /* Live name--use if file, recurse if directory */
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    13
-#ifdef OS390
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    14
+#if defined(S_ISREG) && defined(S_ISLINK)
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    15
   if (S_ISREG(s.st_mode) || S_ISLNK(s.st_mode))
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    16
 #else
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    17
 #  ifdef S_IFLNK
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    18
@@ -154,7 +154,7 @@
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    19
     if ((m = newname(n, 0, caseflag)) != ZE_OK)
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    20
       return m;
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    21
   }
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    22
-#ifdef OS390
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    23
+#ifdef S_ISDIR
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    24
   else if (S_ISDIR(s.st_mode))
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    25
 #else
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    26
   else if ((s.st_mode & S_IFDIR) == S_IFDIR)
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    27
@@ -202,7 +202,7 @@
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    28
     }
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    29
     free((zvoid *)p);
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    30
   } /* (s.st_mode & S_IFDIR) */
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    31
-#ifdef OS390
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    32
+#ifdef S_ISFIFO
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    33
   else if (S_ISFIFO(s.st_mode))
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    34
 #else
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    35
   else if ((s.st_mode & S_IFIFO) == S_IFIFO)
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    36
@@ -418,12 +418,20 @@
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    37
     *a = ((ulg)legacy_modes << 16) | !(s.st_mode & S_IWRITE);
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    38
     }
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    39
 #endif
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    40
+#ifdef S_ISDIR
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    41
+    if (S_ISDIR(s.st_mode)) {
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    42
+#else
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    43
     if ((s.st_mode & S_IFMT) == S_IFDIR) {
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    44
+#endif
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    45
       *a |= MSDOS_DIR_ATTR;
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    46
     }
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    47
   }
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    48
   if (n != NULL)
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    49
+#ifdef S_ISDIR
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    50
+    *n = S_ISDIR(s.st_mode) ? s.st_size : -1L;
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    51
+#else
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    52
     *n = (s.st_mode & S_IFMT) == S_IFREG ? s.st_size : -1L;
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    53
+#endif
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    54
   if (t != NULL) {
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    55
     t->atime = s.st_atime;
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    56
     t->mtime = s.st_mtime;
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    57
--- zip30/fileio.c.old  2008-05-28 17:13:24.000000000 -0700
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    58
+++ zip30/fileio.c      2014-11-19 10:36:59.461855532 -0800
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    59
@@ -1114,6 +1114,9 @@
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    60
 /* Return true if the attributes are those of a symbolic link */
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    61
 {
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    62
 #ifndef QDOS
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    63
+#ifdef S_ISLNK
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    64
+  return S_ISLNK(a >> 16);
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    65
+#else
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    66
 #ifdef S_IFLNK
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    67
 #ifdef __human68k__
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    68
   int *_dos_importlnenv(void);
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    69
@@ -1125,6 +1128,7 @@
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    70
 #else /* !S_IFLNK */
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    71
   return (int)a & 0;    /* avoid warning on unused parameter */
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    72
 #endif /* ?S_IFLNK */
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    73
+#endif /* ?S_ISLNK */
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    74
 #else
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    75
   return 0;
4f3892464f83 19936161 zip incorrectly treats S_IF* as bitmasks, not values
Jiri Kukacka <jiri.kukacka@oracle.com>
parents:
diff changeset
    76
 #endif