View | Details | Raw Unified | Return to bug 22442
Collapse All | Expand All

(-)split.c (-6 / +25 lines)
Lines 62-68 Link Here
62
long	 numlines;			/* Line count to split on. */
62
long	 numlines;			/* Line count to split on. */
63
int	 file_open;			/* If a file open. */
63
int	 file_open;			/* If a file open. */
64
int	 ifd = -1, ofd = -1;		/* Input/output file descriptors. */
64
int	 ifd = -1, ofd = -1;		/* Input/output file descriptors. */
65
char	 bfr[MAXBSIZE];			/* I/O buffer. */
65
char	 *bfr;				/* I/O buffer. */
66
char	 fname[MAXPATHLEN];		/* File name prefix. */
66
char	 fname[MAXPATHLEN];		/* File name prefix. */
67
regex_t	 rgx;
67
regex_t	 rgx;
68
int	 pflag;
68
int	 pflag;
Lines 176-186 Link Here
176
	int dist, len;
176
	int dist, len;
177
	char *C;
177
	char *C;
178
178
179
	if((bfr = (char *)malloc(bytecnt)) == NULL)
180
		err(EX_OSERR, "malloc");
181
179
	for (bcnt = 0;;)
182
	for (bcnt = 0;;)
180
		switch ((len = read(ifd, bfr, MAXBSIZE))) {
183
		switch ((len = read(ifd, bfr, bytecnt))) {
181
		case 0:
184
		case 0:
185
			free(bfr);
182
			exit(0);
186
			exit(0);
183
		case -1:
187
		case -1:
188
			free(bfr);
184
			err(EX_IOERR, "read");
189
			err(EX_IOERR, "read");
185
			/* NOTREACHED */
190
			/* NOTREACHED */
186
		default:
191
		default:
Lines 195-216 Link Here
195
				    len -= bytecnt, C += bytecnt) {
200
				    len -= bytecnt, C += bytecnt) {
196
					newfile();
201
					newfile();
197
					if (write(ofd,
202
					if (write(ofd,
198
					    C, (int)bytecnt) != bytecnt)
203
					    C, (int)bytecnt) != bytecnt) {
204
						free(bfr);
199
						err(EX_IOERR, "write");
205
						err(EX_IOERR, "write");
206
					}
200
				}
207
				}
201
				if (len != 0) {
208
				if (len != 0) {
202
					newfile();
209
					newfile();
203
					if (write(ofd, C, len) != len)
210
					if (write(ofd, C, len) != len) {
211
						free(bfr);
204
						err(EX_IOERR, "write");
212
						err(EX_IOERR, "write");
213
					}
205
				} else
214
				} else
206
					file_open = 0;
215
					file_open = 0;
207
				bcnt = len;
216
				bcnt = len;
208
			} else {
217
			} else {
209
				bcnt += len;
218
				bcnt += len;
210
				if (write(ofd, bfr, len) != len)
219
				if (write(ofd, bfr, len) != len) {
220
					free(bfr);
211
					err(EX_IOERR, "write");
221
					err(EX_IOERR, "write");
222
				}
212
			}
223
			}
213
		}
224
		}
225
	free(bfr);
214
}
226
}
215
227
216
/*
228
/*
Lines 227-232 Link Here
227
	if ((infp = fdopen(ifd, "r")) == NULL)
239
	if ((infp = fdopen(ifd, "r")) == NULL)
228
		err(EX_NOINPUT, "fdopen");
240
		err(EX_NOINPUT, "fdopen");
229
241
242
	if((bfr = (char *)malloc(MAXBSIZE)) == NULL)
243
		err(EX_OSERR, "malloc");
244
230
	/* Process input one line at a time */
245
	/* Process input one line at a time */
231
	while (fgets(bfr, sizeof(bfr), infp) != NULL) {
246
	while (fgets(bfr, sizeof(bfr), infp) != NULL) {
232
		const int len = strlen(bfr);
247
		const int len = strlen(bfr);
Lines 254-262 Link Here
254
			newfile();
269
			newfile();
255
270
256
		/* Write out line */
271
		/* Write out line */
257
		if (write(ofd, bfr, len) != len)
272
		if (write(ofd, bfr, len) != len) {
273
			free(bfr);
258
			err(EX_IOERR, "write");
274
			err(EX_IOERR, "write");
275
		}
259
	}
276
	}
277
278
	free(bfr);
260
279
261
	/* EOF or error? */
280
	/* EOF or error? */
262
	if (ferror(infp))
281
	if (ferror(infp))

Return to bug 22442