/* Non-printable characters are not allowed */
for (s = p;s < p + len - 1; s++) {
if (!isprint((unsigned char)*s) && *s != '\t') {
- fprintf(stderr, "non-printing character 0x%02X\n", (unsigned char)(*s));
+ archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+ "Non-printable character 0x%02X", (unsigned char)(*s));
r = ARCHIVE_FATAL;
break;
}
} else if (u[0] == '\\') {
if (u[1] == '\n') {
/* Trim escaped newline. */
- /* Check if there's a '\r' before the '\n' for CRLF */
- if (u > mtree->line.s && u[-1] == '\r') {
- /* Escaped CRLF - remove '\r\\\n' (3 chars) */
- total_size -= 3;
- } else {
- /* Escaped LF - remove '\\\n' (2 chars) */
- total_size -= 2;
- }
+ total_size -= 2;
+ mtree->line.s[total_size] = '\0';
+ break;
+ } else if (u[1] == '\r' && u[2] == '\n') {
+ /* Trim escaped CRLF. */
+ total_size -= 3;
mtree->line.s[total_size] = '\0';
break;
} else if (u[1] != '\0') {