fileio: add READ_FULL_FILE_UNHEX flag
Similar to READ_FULL_FILE_UNBASE64, read data is decoded with unhexmem().
This commit is contained in:
+7
-3
@@ -279,7 +279,8 @@ int read_full_stream_full(
|
||||
|
||||
assert(f);
|
||||
assert(ret_contents);
|
||||
assert(!(flags & READ_FULL_FILE_UNBASE64) || ret_size);
|
||||
assert(!FLAGS_SET(flags, READ_FULL_FILE_UNBASE64 | READ_FULL_FILE_UNHEX));
|
||||
assert(!(flags & (READ_FULL_FILE_UNBASE64 | READ_FULL_FILE_UNHEX)) || ret_size);
|
||||
|
||||
n_next = LINE_MAX; /* Start size */
|
||||
|
||||
@@ -356,9 +357,12 @@ int read_full_stream_full(
|
||||
n_next = MIN(n * 2, READ_FULL_BYTES_MAX);
|
||||
}
|
||||
|
||||
if (flags & READ_FULL_FILE_UNBASE64) {
|
||||
if (flags & (READ_FULL_FILE_UNBASE64 | READ_FULL_FILE_UNHEX)) {
|
||||
buf[l++] = 0;
|
||||
r = unbase64mem_full(buf, l, flags & READ_FULL_FILE_SECURE, (void **) ret_contents, ret_size);
|
||||
if (flags & READ_FULL_FILE_UNBASE64)
|
||||
r = unbase64mem_full(buf, l, flags & READ_FULL_FILE_SECURE, (void **) ret_contents, ret_size);
|
||||
else
|
||||
r = unhexmem_full(buf, l, flags & READ_FULL_FILE_SECURE, (void **) ret_contents, ret_size);
|
||||
goto finalize;
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ typedef enum {
|
||||
typedef enum {
|
||||
READ_FULL_FILE_SECURE = 1 << 0,
|
||||
READ_FULL_FILE_UNBASE64 = 1 << 1,
|
||||
READ_FULL_FILE_UNHEX = 1 << 2,
|
||||
} ReadFullFileFlags;
|
||||
|
||||
int write_string_stream_ts(FILE *f, const char *line, WriteStringFileFlags flags, struct timespec *ts);
|
||||
|
||||
Reference in New Issue
Block a user