IF_DESKTOP(long long) int bz_write(bz_stream *strm, void* rbuf, ssize_t rlen, void *wbuf) { int n, n2, ret; strm->avail_in = rlen; strm->next_in = rbuf; while (1) { strm->avail_out = IOBUF_SIZE; strm->next_out = wbuf; ret = BZ2_bzCompress(strm, rlen ? BZ_RUN : BZ_FINISH); if (ret != BZ_RUN_OK /* BZ_RUNning */ && ret != BZ_FINISH_OK /* BZ_FINISHing, but not done yet */ && ret != BZ_STREAM_END /* BZ_FINISHed */ ) { bb_error_msg_and_die("internal error %d", ret); } n = IOBUF_SIZE - strm->avail_out; if (n) { n2 = full_write(STDOUT_FILENO, wbuf, n); if (n2 != n) { if (n2 >= 0) errno = 0; /* prevent bogus error message */ bb_perror_msg(n2 >= 0 ? "short write" : bb_msg_write_error); return -1; } } if (ret == BZ_STREAM_END) break; if (rlen && strm->avail_in == 0) break; } return 0 IF_DESKTOP( + strm->total_out ); }
int cmp_main(int argc UNUSED_PARAM, char **argv) { FILE *fp1, *fp2, *outfile = stdout; const char *filename1, *filename2 = "-"; IF_DESKTOP(off_t skip1 = 0, skip2 = 0;) off_t char_pos = 0; int line_pos = 1; /* Hopefully won't overflow... */ const char *fmt; int c1, c2; unsigned opt; int retval = 0; xfunc_error_retval = 2; /* 1 is returned if files are different. */ opt_complementary = "-1" IF_DESKTOP(":?4") IF_NOT_DESKTOP(":?2") ":l--s:s--l"; opt = getopt32(argv, opt_chars); argv += optind; filename1 = *argv; fp1 = xfopen_stdin(filename1); if (*++argv) { filename2 = *argv; #if ENABLE_DESKTOP if (*++argv) { skip1 = XATOOFF(*argv); if (*++argv) { skip2 = XATOOFF(*argv);