Marc,
It's a bug that can only be seen with the bsd auth.
Attached patch fix it, can you try it?
Jean-Louis
Jean-Louis Martineau wrote:
Marc Muehlfeld wrote:
/bin/tar: This does not look like a tar archive
/bin/tar: Skipping to next header
/bin/tar: Archive contains obsolescent base-64 headers
/bin/tar: Read 7944 bytes from -
It has nothing to do with umlauts.
I suspect a bug in the handling of the bsd auth in amrecover.
Can you try the bsdtcp auth?
You need to setup an inetd/xinetd entry on the server and run
amrecover with '-oauth=bsdtcp'
Jean-Louis
diff --git a/recover-src/extract_list.c b/recover-src/extract_list.c
index baac507..3f8cbae 100644
--- a/recover-src/extract_list.c
+++ b/recover-src/extract_list.c
@@ -96,6 +96,9 @@ static char *dump_device_name = NULL;
static char *errstr;
static char *amidxtaped_line = NULL;
extern char *localhost;
+static char header_buf[32768];
+static int header_size = 0;
+
/* global pid storage for interrupt handler */
pid_t extract_restore_child_pid = -1;
@@ -2106,6 +2109,7 @@ writer_intermediary(
ctl_data.bsu = NULL;
ctl_data.bytes_read = 0;
+ header_size = 0;
security_stream_read(amidxtaped_streams[DATAFD].fd,
read_amidxtaped_data, &ctl_data);
@@ -2687,7 +2691,18 @@ read_amidxtaped_data(
GPtrArray *errarray;
g_option_t g_options;
data_path_t data_path_set = DATA_PATH_AMANDA;
+ int to_move;
+
+ to_move = MIN(32768-header_size, size);
+ memcpy(header_buf+header_size, buf, to_move);
+ header_size += to_move;
+ if (header_size < 32768) {
+ security_stream_read(amidxtaped_streams[DATAFD].fd,
+ read_amidxtaped_data, cookie);
+ return;
+ }
+ assert (to_move == size);
/* parse the file header */
fh_init(&ctl_data->file);
parse_file_header(buf, &ctl_data->file, (size_t)size);