Another attempt at untangling the logic so the compiler can follow it and not
generate pointless warnings.
This commit is contained in:
parent
a94554d010
commit
29d94b907f
@ -142,41 +142,40 @@ int uudecode_main(int argc, char **argv)
|
|||||||
/* Search for the start of the encoding */
|
/* Search for the start of the encoding */
|
||||||
while ((line = bb_get_chomped_line_from_file(src_stream)) != NULL) {
|
while ((line = bb_get_chomped_line_from_file(src_stream)) != NULL) {
|
||||||
int (*decode_fn_ptr)(FILE * src, FILE * dst);
|
int (*decode_fn_ptr)(FILE * src, FILE * dst);
|
||||||
char *line_ptr = NULL;
|
char *line_ptr;
|
||||||
|
FILE *dst_stream;
|
||||||
|
int mode;
|
||||||
|
int ret;
|
||||||
|
|
||||||
if (strncmp(line, "begin-base64 ", 13) == 0) {
|
if (strncmp(line, "begin-base64 ", 13) == 0) {
|
||||||
line_ptr = line + 13;
|
line_ptr = line + 13;
|
||||||
decode_fn_ptr = read_base64;
|
decode_fn_ptr = read_base64;
|
||||||
} else if (strncmp(line, "begin ", 6) == 0) {
|
} else if (strncmp(line, "begin ", 6) == 0) {
|
||||||
line_ptr = line + 6;
|
line_ptr = line + 6;
|
||||||
decode_fn_ptr = read_stduu;
|
decode_fn_ptr = read_stduu;
|
||||||
|
} else {
|
||||||
|
free(line);
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (line_ptr) {
|
mode = strtoul(line_ptr, NULL, 8);
|
||||||
FILE *dst_stream;
|
if (outname == NULL) {
|
||||||
int mode;
|
outname = strchr(line_ptr, ' ');
|
||||||
int ret;
|
if ((outname == NULL) || (*outname == '\0')) {
|
||||||
|
break;
|
||||||
mode = strtoul(line_ptr, NULL, 8);
|
|
||||||
if (outname == NULL) {
|
|
||||||
outname = strchr(line_ptr, ' ');
|
|
||||||
if ((outname == NULL) || (*outname == '\0')) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
outname++;
|
|
||||||
}
|
}
|
||||||
if (strcmp(outname, "-") == 0) {
|
outname++;
|
||||||
dst_stream = stdout;
|
}
|
||||||
} else {
|
if (strcmp(outname, "-") == 0) {
|
||||||
dst_stream = xfopen(outname, "w");
|
dst_stream = stdout;
|
||||||
chmod(outname, mode & (S_IRWXU | S_IRWXG | S_IRWXO));
|
} else {
|
||||||
}
|
dst_stream = xfopen(outname, "w");
|
||||||
free(line);
|
chmod(outname, mode & (S_IRWXU | S_IRWXG | S_IRWXO));
|
||||||
ret = decode_fn_ptr(src_stream, dst_stream);
|
|
||||||
bb_fclose_nonstdin(src_stream);
|
|
||||||
return(ret);
|
|
||||||
}
|
}
|
||||||
free(line);
|
free(line);
|
||||||
|
ret = decode_fn_ptr(src_stream, dst_stream);
|
||||||
|
bb_fclose_nonstdin(src_stream);
|
||||||
|
return(ret);
|
||||||
}
|
}
|
||||||
bb_error_msg_and_die("No `begin' line");
|
bb_error_msg_and_die("No `begin' line");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user