uuencode: allow space instead of "`" as padding char. Closes 10046
No binary (build failed)
—
(log yok)
| @@ -47,10 +47,16 @@ static void FAST_FUNC read_stduu(FILE *src_stream, FILE *dst_stream, int flags U | |
| line = xmalloc_fgets_str_len(src_stream, "\n", &line_len); | |
| if (!line) | |
| break; | |
| - | /* Handle both Unix and MSDOS text, and stray trailing spaces */ |
| + | /* Handle both Unix and MSDOS text. |
| + | * Note: space should not be trimmed, some encoders use it instead of "`" |
| + | * for padding of last incomplete 4-char block. |
| + | */ |
| str_len = line_len; | |
| - | while (--str_len >= 0 && isspace(line[str_len])) |
| + | while (--str_len >= 0 |
| + | && (line[str_len] == '\n' || line[str_len] == '\r') |
| + | ) { |
| line[str_len] = '\0'; | |
| + | } |
| if (strcmp(line, "end") == 0) { | |
| return; /* the only non-error exit */ | |
| @@ -65,7 +71,7 @@ static void FAST_FUNC read_stduu(FILE *src_stream, FILE *dst_stream, int flags U | |
| encoded_len = line[0] * 4 / 3; | |
| /* Check that line is not too short. (we tolerate | |
| - | * overly _long_ line to accommodate possible extra '`'). |
| + | * overly _long_ line to accommodate possible extra "`"). |
| * Empty line case is also caught here. */ | |
| if (str_len <= encoded_len) { | |
| break; /* go to bb_error_msg_and_die("short file"); */ | |