case FNM_NOMATCH:
break;
default:
- errmsg("error matching glob: %s.\n", argv[i]);
+ tool_err(-1, "error matching glob: %s", argv[i]);
return 1;
}
}
of = fopen(stat->name, "wb");
if (!of) {
- errmsg("%s: fopen: %s\n",
- stat->name, strerror(errno));
+ tool_err(0, "%s: fopen", stat->name);
return -1;
}
unsigned char buf[1024];
rc = lbx_file_read(f, buf, sizeof buf);
- if (rc == 0) {
- if (lbx_file_eof(f))
- ret = 0;
- break;
- }
-
- if (fwrite(buf, rc, 1, of) != 1) {
- errmsg("%s: fwrite: %s\n", stat->name, strerror(errno));
- break;
+ if (rc > 0) {
+ /* Write out any data we got. */
+ if (fwrite(buf, rc, 1, of) != 1) {
+ tool_err(0, "%s: fwrite", stat->name);
+ break;
+ }
}
+ /* Now test for read errors */
if (rc < sizeof buf) {
- if (lbx_file_eof(f))
+ if (!lbx_file_eof(f))
+ tool_err(-1, "error reading archive: %s", lbx_errmsg());
+ else
ret = 0;
break;
}
}
if (fclose(of) == EOF) {
- errmsg("%s: fclose: %s\n", stat->name, strerror(errno));
+ tool_err(0, "%s: fclose", stat->name);
return -1;
}
file = lbx_file_open(lbx, i);
if (!file) {
- errmsg("%s: %s.\n", stat.name, lbx_errmsg());
+ tool_err(-1, "%s: %s", stat.name, lbx_errmsg());
continue;
}
lbx = lbx_open(&stdin_handle, &lbx_pipe_fops, NULL, "stdin");
if (!lbx) {
- errmsg("%s: %s.\n", file ? file : "stdin", lbx_errmsg());
+ tool_err(-1, "%s: %s", file ? file : "stdin", lbx_errmsg());
return EXIT_FAILURE;
}
rc = extract(lbx, verbose, &argv[optind]);
break;
default:
- errmsg("you must specify a mode.\n", 0);
+ tool_err(-1, "no mode specified");
}
lbx_close(lbx);