21
struct stat st;
22
void *from_buf = NULL, *data_buf = NULL, *out_buf = NULL;
23
unsigned long from_size, data_size, out_size;
24
- int ret = 1;
24
26
- if (argc != 5 || (strcmp(argv[1], "-d") && strcmp(argv[1], "-p"))) {
27
- fprintf(stderr, "usage: %s\n", usage_str);
28
- return 1;
29
- }
25
+ if (argc != 5 || (strcmp(argv[1], "-d") && strcmp(argv[1], "-p")))
26
+ usage(usage_str);
27
31
- fd = open(argv[2], O_RDONLY);
32
- if (fd < 0 || fstat(fd, &st)) {
33
- perror(argv[2]);
34
- return 1;
35
- }
28
+ fd = xopen(argv[2], O_RDONLY);
29
+ if (fstat(fd, &st) < 0)
30
+ die_errno("fstat(%s)", argv[2]);
31
from_size = st.st_size;
32
from_buf = xmalloc(from_size);
38
- if (read_in_full(fd, from_buf, from_size) < 0) {
39
- perror(argv[2]);
40
- close(fd);
41
- goto cleanup;
42
- }
33
+ if (read_in_full(fd, from_buf, from_size) < 0)
34
+ die_errno("read(%s)", argv[2]);
35
close(fd);
36
45
- fd = open(argv[3], O_RDONLY);
46
- if (fd < 0 || fstat(fd, &st)) {
47
- perror(argv[3]);
48
- goto cleanup;
49
- }
37
+ fd = xopen(argv[3], O_RDONLY);
38
+ if (fstat(fd, &st) < 0)
39
+ die_errno("fstat(%s)", argv[3]);
40
data_size = st.st_size;
41
data_buf = xmalloc(data_size);
52
- if (read_in_full(fd, data_buf, data_size) < 0) {
53
- perror(argv[3]);
54
- close(fd);
55
- goto cleanup;
56
- }
42
+ if (read_in_full(fd, data_buf, data_size) < 0)
43
+ die_errno("read(%s)", argv[3]);
44
close(fd);
45
46
if (argv[1][1] == 'd')
51
out_buf = patch_delta(from_buf, from_size,
52
data_buf, data_size,
53
&out_size);
67
- if (!out_buf) {
68
- fprintf(stderr, "delta operation failed (returned NULL)\n");
69
- goto cleanup;
70
- }
54
+ if (!out_buf)
55
+ die("delta operation failed (returned NULL)");
56
72
- fd = open (argv[4], O_WRONLY|O_CREAT|O_TRUNC, 0666);
73
- if (fd < 0 || write_in_full(fd, out_buf, out_size) < 0) {
74
- perror(argv[4]);
75
- goto cleanup;
76
- }
57
+ fd = xopen(argv[4], O_WRONLY|O_CREAT|O_TRUNC, 0666);
58
+ if (write_in_full(fd, out_buf, out_size) < 0)
59
+ die_errno("write(%s)", argv[4]);
60
78
- ret = 0;
79
-cleanup:
61
free(from_buf);
62
free(data_buf);
63
free(out_buf);
64
84
- return ret;
65
+ return 0;
66
}