dd: do not reuse local variables for unrelated values.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
ec2bef11a7
commit
4b1896cd2c
@ -201,7 +201,7 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
};
|
};
|
||||||
int exitcode = EXIT_FAILURE;
|
int exitcode = EXIT_FAILURE;
|
||||||
size_t ibs = 512, obs = 512;
|
size_t ibs = 512, obs = 512;
|
||||||
ssize_t n, w;
|
int i;
|
||||||
char *ibuf, *obuf;
|
char *ibuf, *obuf;
|
||||||
/* And these are all zeroed at once! */
|
/* And these are all zeroed at once! */
|
||||||
struct {
|
struct {
|
||||||
@ -223,10 +223,10 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
INIT_G();
|
INIT_G();
|
||||||
//fflush_all(); - is this needed because of NOEXEC?
|
//fflush_all(); - is this needed because of NOEXEC?
|
||||||
|
|
||||||
for (n = 1; argv[n]; n++) {
|
for (i = 1; argv[i]; i++) {
|
||||||
int what;
|
int what;
|
||||||
char *val;
|
char *val;
|
||||||
char *arg = argv[n];
|
char *arg = argv[i];
|
||||||
|
|
||||||
#if ENABLE_DESKTOP
|
#if ENABLE_DESKTOP
|
||||||
/* "dd --". NB: coreutils 6.9 will complain if they see
|
/* "dd --". NB: coreutils 6.9 will complain if they see
|
||||||
@ -300,7 +300,7 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
outfile = val;
|
outfile = val;
|
||||||
/*continue;*/
|
/*continue;*/
|
||||||
}
|
}
|
||||||
} /* end of "for (argv[n])" */
|
} /* end of "for (argv[i])" */
|
||||||
|
|
||||||
//XXX:FIXME for huge ibs or obs, malloc'ing them isn't the brightest idea ever
|
//XXX:FIXME for huge ibs or obs, malloc'ing them isn't the brightest idea ever
|
||||||
ibuf = obuf = xmalloc(ibs);
|
ibuf = obuf = xmalloc(ibs);
|
||||||
@ -347,7 +347,7 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
if (skip) {
|
if (skip) {
|
||||||
if (lseek(ifd, skip * ibs, SEEK_CUR) < 0) {
|
if (lseek(ifd, skip * ibs, SEEK_CUR) < 0) {
|
||||||
while (skip-- > 0) {
|
while (skip-- > 0) {
|
||||||
n = safe_read(ifd, ibuf, ibs);
|
ssize_t n = safe_read(ifd, ibuf, ibs);
|
||||||
if (n < 0)
|
if (n < 0)
|
||||||
goto die_infile;
|
goto die_infile;
|
||||||
if (n == 0)
|
if (n == 0)
|
||||||
@ -361,6 +361,8 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
while (!(flags & FLAG_COUNT) || (G.in_full + G.in_part != count)) {
|
while (!(flags & FLAG_COUNT) || (G.in_full + G.in_part != count)) {
|
||||||
|
ssize_t n;
|
||||||
|
|
||||||
n = safe_read(ifd, ibuf, ibs);
|
n = safe_read(ifd, ibuf, ibs);
|
||||||
if (n == 0)
|
if (n == 0)
|
||||||
break;
|
break;
|
||||||
@ -411,7 +413,7 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ENABLE_FEATURE_DD_IBS_OBS && oc) {
|
if (ENABLE_FEATURE_DD_IBS_OBS && oc) {
|
||||||
w = full_write_or_warn(obuf, oc, outfile);
|
ssize_t w = full_write_or_warn(obuf, oc, outfile);
|
||||||
if (w < 0) goto out_status;
|
if (w < 0) goto out_status;
|
||||||
if (w > 0) G.out_part++;
|
if (w > 0) G.out_part++;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user