author | Jiri Kukacka <jiri.kukacka@oracle.com> |
Wed, 03 Dec 2014 06:13:04 -0800 | |
changeset 3540 | 4f3892464f83 |
permissions | -rw-r--r-- |
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 |