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

(-)buffer.c (-1 / +17 lines)
Lines 1254-1259 close_archive () Link Here
1254
  if (f_verify)
1254
  if (f_verify)
1255
    verify_volume ();
1255
    verify_volume ();
1256
1256
1257
#ifndef __MSDOS__
1258
  /*
1259
   * closing the child's pipe before reading EOF guarantees that it
1260
   * will be unhappy - SIGPIPE, or exit 1.
1261
   * Either way it can screw us, so play nice.
1262
   */
1263
  if (childpid && ar_reading) {
1264
      char buf[BUFSIZ];
1265
      
1266
      while ((c = read(archive, buf, sizeof(buf))) > 0)
1267
	  continue;
1268
  }
1269
#endif
1270
      
1257
  if ((c = rmtclose (archive)) < 0)
1271
  if ((c = rmtclose (archive)) < 0)
1258
    msg_perror ("Warning: can't close %s(%d,%d)", ar_files[cur_ar_file], archive, c);
1272
    msg_perror ("Warning: can't close %s(%d,%d)", ar_files[cur_ar_file], archive, c);
1259
1273
Lines 1291-1299 close_archive () Link Here
1291
		   */
1305
		   */
1292
		  /* Do nothing. */
1306
		  /* Do nothing. */
1293
		}
1307
		}
1294
	      else if (WEXITSTATUS (status))
1308
	      else if (WEXITSTATUS (status)) {
1295
		msg ("child returned status %d",
1309
		msg ("child returned status %d",
1296
		     WEXITSTATUS (status));
1310
		     WEXITSTATUS (status));
1311
		  exit (EX_BADARCH);
1312
	      }
1297
	    }
1313
	    }
1298
	}
1314
	}
1299
    }
1315
    }

Return to bug 30876