if (offset != lseek(fd, offset, SEEK_SET)) {
perror("lseek()");
- goto err0;
+ return 1;
}
outfd = creat(filename, 0666);
if (outfd < 0) {
perror("creat()");
- goto err1;
+ return 1;
}
retry:
goto retry;
}
perror("malloc()");
- goto err0;
+ goto fail;
}
do {
if (n <= size)
if (err < 0) {
fprintf(stderr, "%s: read, size %#x, n %#x\n", __func__, size, n);
perror("read()");
- goto err2;
+ goto fail;
}
if (err < size) {
fprintf(stderr, "%s: short read, requested %#x, read %#x\n", __func__, size, err);
if (err < 0) {
fprintf(stderr, "%s: write, size %#x, n %#x\n", __func__, size, n);
perror("write()");
- goto err2;
+ goto fail;
}
if (err != size) {
fprintf(stderr, "Couldn't copy entire buffer to %s. (%d/%d bytes copied)\n", filename, err, size);
- goto err2;
+ goto fail;
}
n -= size;
} while (n > 0);
close(outfd);
printf("Copied %zu bytes from address 0x%.8llx in flash to %s\n", len, (unsigned long long)offset, filename);
return 0;
-
-err2:
+fail:
close(outfd);
-err1:
- if (buf != NULL)
- free(buf);
-err0:
+ free(buf);
return 1;
}