]> git.ipfire.org Git - people/ms/ipfire-3.x.git/blob - unzip/patches/unzip-6.0-close.patch
Change file layout of the makefiles.
[people/ms/ipfire-3.x.git] / unzip / patches / unzip-6.0-close.patch
1 diff -up unzip60/extract.c.close unzip60/extract.c
2 --- unzip60/extract.c.close 2009-03-14 02:32:52.000000000 +0100
3 +++ unzip60/extract.c 2009-11-19 08:17:23.481263496 +0100
4 @@ -1924,24 +1924,21 @@ static int extract_or_test_member(__G)
5
6 #ifdef VMS /* VMS: required even for stdout! (final flush) */
7 if (!uO.tflag) /* don't close NULL file */
8 - close_outfile(__G);
9 + error = close_outfile(__G);
10 #else
11 #ifdef DLL
12 if (!uO.tflag && (!uO.cflag || G.redirect_data)) {
13 if (G.redirect_data)
14 FINISH_REDIRECT();
15 else
16 - close_outfile(__G);
17 + error = close_outfile(__G);
18 }
19 #else
20 if (!uO.tflag && !uO.cflag) /* don't close NULL file or stdout */
21 - close_outfile(__G);
22 + error = close_outfile(__G);
23 #endif
24 #endif /* VMS */
25
26 - /* GRR: CONVERT close_outfile() TO NON-VOID: CHECK FOR ERRORS! */
27 -
28 -
29 if (G.disk_full) { /* set by flush() */
30 if (G.disk_full > 1) {
31 #if (defined(DELETE_IF_FULL) && defined(HAVE_UNLINK))
32 diff -up unzip60/unix/unix.c.close unzip60/unix/unix.c
33 --- unzip60/unix/unix.c.close 2009-01-24 00:31:26.000000000 +0100
34 +++ unzip60/unix/unix.c 2009-11-19 08:33:25.568389171 +0100
35 @@ -1096,10 +1096,41 @@ static int get_extattribs(__G__ pzt, z_u
36 #ifndef MTS
37
38 /****************************/
39 +/* Function CloseError() */
40 +/***************************/
41 +
42 +int CloseError(__G)
43 + __GDEF
44 +{
45 + int errval = PK_OK;
46 +
47 + if (fclose(G.outfile) < 0) {
48 + switch (errno) {
49 + case ENOSPC:
50 + /* Do we need this on fileio.c? */
51 + Info(slide, 0x4a1, ((char *)slide, "%s: write error (disk full?). Continue? (y/n/^C) ",
52 + FnFilter1(G.filename)));
53 + fgets(G.answerbuf, 9, stdin);
54 + if (*G.answerbuf == 'y') /* stop writing to this file */
55 + G.disk_full = 1; /* pass to next */
56 + else
57 + G.disk_full = 2; /* no: exit program */
58 +
59 + errval = PK_DISK;
60 + break;
61 +
62 + default:
63 + errval = PK_WARN;
64 + }
65 + }
66 + return errval;
67 +} /* End of CloseError() */
68 +
69 +/****************************/
70 /* Function close_outfile() */
71 /****************************/
72
73 -void close_outfile(__G) /* GRR: change to return PK-style warning level */
74 +int close_outfile(__G)
75 __GDEF
76 {
77 union {
78 @@ -1108,6 +1139,7 @@ void close_outfile(__G) /* GRR: chang
79 } zt;
80 ulg z_uidgid[2];
81 int have_uidgid_flg;
82 + int errval = PK_OK;
83
84 have_uidgid_flg = get_extattribs(__G__ &(zt.t3), z_uidgid);
85
86 @@ -1141,16 +1173,16 @@ void close_outfile(__G) /* GRR: chang
87 Info(slide, 0x201, ((char *)slide,
88 "warning: symbolic link (%s) failed: mem alloc overflow\n",
89 FnFilter1(G.filename)));
90 - fclose(G.outfile);
91 - return;
92 + errval = CloseError(G.outfile, G.filename);
93 + return errval ? errval : PK_WARN;
94 }
95
96 if ((slnk_entry = (slinkentry *)malloc(slnk_entrysize)) == NULL) {
97 Info(slide, 0x201, ((char *)slide,
98 "warning: symbolic link (%s) failed: no mem\n",
99 FnFilter1(G.filename)));
100 - fclose(G.outfile);
101 - return;
102 + errval = CloseError(G.outfile, G.filename);
103 + return errval ? errval : PK_WARN;
104 }
105 slnk_entry->next = NULL;
106 slnk_entry->targetlen = ucsize;
107 @@ -1174,10 +1206,10 @@ void close_outfile(__G) /* GRR: chang
108 "warning: symbolic link (%s) failed\n",
109 FnFilter1(G.filename)));
110 free(slnk_entry);
111 - fclose(G.outfile);
112 - return;
113 + errval = CloseError(G.outfile, G.filename);
114 + return errval ? errval : PK_WARN;
115 }
116 - fclose(G.outfile); /* close "link" file for good... */
117 + errval = CloseError(G.outfile, G.filename); /* close "link" file for good... */
118 slnk_entry->target[ucsize] = '\0';
119 if (QCOND2)
120 Info(slide, 0, ((char *)slide, "-> %s ",
121 @@ -1188,7 +1220,7 @@ void close_outfile(__G) /* GRR: chang
122 else
123 G.slink_head = slnk_entry;
124 G.slink_last = slnk_entry;
125 - return;
126 + return errval;
127 }
128 #endif /* SYMLINKS */
129
130 @@ -1201,7 +1233,7 @@ void close_outfile(__G) /* GRR: chang
131 #endif
132
133 #if (defined(NO_FCHOWN))
134 - fclose(G.outfile);
135 + errval = CloseError(G.outfile, G.filename);
136 #endif
137
138 /* if -X option was specified and we have UID/GID info, restore it */
139 @@ -1227,7 +1259,7 @@ void close_outfile(__G) /* GRR: chang
140 }
141
142 #if (!defined(NO_FCHOWN) && defined(NO_FCHMOD))
143 - fclose(G.outfile);
144 + errval = CloseError(G.outfile, G.filename);
145 #endif
146
147 #if (!defined(NO_FCHOWN) && !defined(NO_FCHMOD))
148 @@ -1239,7 +1271,7 @@ void close_outfile(__G) /* GRR: chang
149 if (fchmod(fileno(G.outfile), filtattr(__G__ G.pInfo->file_attr)))
150 perror("fchmod (file attributes) error");
151
152 - fclose(G.outfile);
153 + errval = CloseError(G.outfile, G.filename);
154 #endif /* !NO_FCHOWN && !NO_FCHMOD */
155
156 /* skip restoring time stamps on user's request */
157 @@ -1267,6 +1299,7 @@ void close_outfile(__G) /* GRR: chang
158 #endif
159 #endif /* NO_FCHOWN || NO_FCHMOD */
160
161 + return errval;
162 } /* end function close_outfile() */
163
164 #endif /* !MTS */
165 diff -up unzip60/unzpriv.h.close unzip60/unzpriv.h
166 --- unzip60/unzpriv.h.close 2009-04-20 01:59:26.000000000 +0200
167 +++ unzip60/unzpriv.h 2009-11-19 08:19:08.610388618 +0100
168 @@ -2604,7 +2604,7 @@ char *GetLoadPath OF((__GPRO));
169 int SetFileSize OF((FILE *file, zusz_t filesize)); /* local */
170 #endif
171 #ifndef MTS /* macro in MTS */
172 - void close_outfile OF((__GPRO)); /* local */
173 + int close_outfile OF((__GPRO)); /* local */
174 #endif
175 #ifdef SET_SYMLINK_ATTRIBS
176 int set_symlnk_attribs OF((__GPRO__ slinkentry *slnk_entry)); /* local */