Re: amrecover 2.5.1
* Jean-Louis Martineau <[EMAIL PROTECTED]> [20060921 14:33]: > Hi, > > Irix doesn't have the same return value for vsnprintf as linux have. > Could you try this patch. OK, that did it. I can restore now without an ich... thanks, jf PS Are these patches applied to the snapshots on iro.umontreal.ca? > > Jean-Louis > > Jean-Francois Malouin wrote: > >* Jean-Louis Martineau <[EMAIL PROTECTED]> [20060921 13:04]: > > > >>Jean-Francois, > >> > >>Could you send the amrecover..debug and > >>amindexd..debug files? > >> > > > >here they come attached. > >jf > > > > > >>Jean-Louis > >> > >>Jean-Francois Malouin wrote: > >> > >>>Hello, > >>> > >>>amanda-2.5.1 on irix-6.5.x using bsdtcp auth > >>>amrecover don't want to play ball: > >>> > >>>yorick 130# /opt/amanda/amanda10/sbin/amrecover > >>>AMRECOVER Version 2.5.1. Contacting server on yorick ... > >>>220 > >>>Setting restore date to today (2006-09-21) > >>>200 > >>>Scanning /holddisk/conf10/stk_180... > >>>200 > >>>200 > >>>Use the setdisk command to choose dump disk to recover > >>>amrecover> setdate 2006-09-20 > >>>200 > >>>amrecover> setdisk /data/nihpd/nihpd3/backup > >>>200 > >>>bad reply: missing date field > >>>oc!È > >>>amrecover> ls > >>>amrecover> pwd > >>>/data/nihpd/nihpd3/backup > >>>mrecover> listhost > >>>200- > >>>201- > >>>200 > >>>amrecover> listdisk > >>>200- > >>>201- > >>>[ large numbers of 201- lines ] > >>>200 > >>>amrecover> add . > >>>File . doesn't exist in directory > >>> > >>> > >>>Now I'm nervous! > >>>jf > >>> > >>> > > diff -u -r --show-c-function --exclude-from=amanda.diff > amanda-2.5.1.new/common-src/packet.c > amanda-2.5.1.new.amindexd/common-src/packet.c > --- amanda-2.5.1.new/common-src/packet.c 2006-05-25 06:44:35.0 > -0400 > +++ amanda-2.5.1.new.amindexd/common-src/packet.c 2006-09-21 > 14:26:08.0 -0400 > @@ -54,6 +54,7 @@ printf_arglist_function2(void pkt_init, > const char *, fmt) > { > va_list argp; > +int len; > > assert(pkt != NULL); > assert(strcmp(pkt_type2str(type), "BOGUS") != 0); > @@ -62,14 +63,16 @@ printf_arglist_function2(void pkt_init, > pkt->type = type; > pkt->packet_size = 1000; > pkt->body = alloc(pkt->packet_size); > -arglist_start(argp, fmt); > -while (vsnprintf(pkt->body, pkt->packet_size, fmt, argp) >= > - (int)(pkt->packet_size - 1)) { > +while(1) { > + arglist_start(argp, fmt); > + len = vsnprintf(pkt->body, pkt->packet_size, fmt, argp); > + arglist_end(argp); > + if (len < (int)(pkt->packet_size - 1)) > + break; > pkt->packet_size *= 2; > amfree(pkt->body); > pkt->body = alloc(pkt->packet_size); > } > -arglist_end(argp); > pkt->size = strlen(pkt->body); > } > > @@ -79,6 +82,7 @@ printf_arglist_function2(void pkt_init, > printf_arglist_function1(void pkt_cat, pkt_t *, pkt, const char *, fmt) > { > size_t len; > +int lenX; > va_list argp; > char * pktbody; > > @@ -87,19 +91,19 @@ printf_arglist_function1(void pkt_cat, p > > len = strlen(pkt->body); > > -arglist_start(argp, fmt); > -while (vsnprintf(pkt->body + len, pkt->packet_size - len, fmt,argp) >= > - (int)(pkt->packet_size - len - 1)) { > +while(1) { > + arglist_start(argp, fmt); > +lenX = vsnprintf(pkt->body + len, pkt->packet_size - len, fmt,argp); > + arglist_end(argp); > + if (lenX < (int)(pkt->packet_size - len - 1)) > + break; > pkt->packet_size *= 2; > pktbody = alloc(pkt->packet_size); > strncpy(pktbody, pkt->body, len); > pktbody[len] = '\0'; > amfree(pkt->body); > pkt->body = pktbody; > - arglist_end(argp); > - arglist_start(argp, fmt); > } > -arglist_end(argp); > pkt->size = strlen(pkt->body); > } > > diff -u -r --show-c-function --exclude-from=amanda.diff > amanda-2.5.1.new/server-src/amindexd.c > amanda-2.5.1.new.amindexd/server-src/amindexd.c > --- amanda-2.5.1.new/server-src/amindexd.c2006-07-25 14:27:57.0 > -0400 > +++ amanda-2.5.1.new.amindexd/server-src/amindexd.c 2006-09-21 > 13:47:19.0 -0400 > @@ -295,7 +295,7 @@ printf_arglist_function1(static void rep > len = vsnprintf(reply_buffer, reply_buffer_size, fmt, args); > arglist_end(args); > > - if (len > -1 && (size_t)len < reply_buffer_size) > + if (len > -1 && (size_t)len < reply_buffer_size-1) > break; > > reply_buffer_size *= 2; > @@ -334,7 +334,7 @@ printf_arglist_function1(static void lre > len = vsnprintf(reply_buffer, reply_buffer_size, fmt, args); > arglist_end(args); > > - if (len > -1 && (size_t)len < reply_buffer_size) > + if (len > -1 && (size_t)len < reply_buffer_size-1) > break; > > reply_buffer_size *= 2; > @@ -375,7 +375,7 @@ printf_arglist_function1(static void fas > len = vsnprintf(reply_buffer, rep
Re: amrecover 2.5.1
* Jean-Louis Martineau <[EMAIL PROTECTED]> [20060921 14:33]: > Hi, > > Irix doesn't have the same return value for vsnprintf as linux have. > Could you try this patch. Thanks Jean-Louis. I've applied the patch, recompiled and started a amrecover session. It seems to work but the restore hasn't completed yet. But I can see the history of the DLEs etc... I will confirm that it works when amrecover completes (should take an hour or so). jf > > Jean-Louis > > Jean-Francois Malouin wrote: > >* Jean-Louis Martineau <[EMAIL PROTECTED]> [20060921 13:04]: > > > >>Jean-Francois, > >> > >>Could you send the amrecover..debug and > >>amindexd..debug files? > >> > > > >here they come attached. > >jf > > > > > >>Jean-Louis > >> > >>Jean-Francois Malouin wrote: > >> > >>>Hello, > >>> > >>>amanda-2.5.1 on irix-6.5.x using bsdtcp auth > >>>amrecover don't want to play ball: > >>> > >>>yorick 130# /opt/amanda/amanda10/sbin/amrecover > >>>AMRECOVER Version 2.5.1. Contacting server on yorick ... > >>>220 > >>>Setting restore date to today (2006-09-21) > >>>200 > >>>Scanning /holddisk/conf10/stk_180... > >>>200 > >>>200 > >>>Use the setdisk command to choose dump disk to recover > >>>amrecover> setdate 2006-09-20 > >>>200 > >>>amrecover> setdisk /data/nihpd/nihpd3/backup > >>>200 > >>>bad reply: missing date field > >>>oc!È > >>>amrecover> ls > >>>amrecover> pwd > >>>/data/nihpd/nihpd3/backup > >>>mrecover> listhost > >>>200- > >>>201- > >>>200 > >>>amrecover> listdisk > >>>200- > >>>201- > >>>[ large numbers of 201- lines ] > >>>200 > >>>amrecover> add . > >>>File . doesn't exist in directory > >>> > >>> > >>>Now I'm nervous! > >>>jf > >>> > >>> > > diff -u -r --show-c-function --exclude-from=amanda.diff > amanda-2.5.1.new/common-src/packet.c > amanda-2.5.1.new.amindexd/common-src/packet.c > --- amanda-2.5.1.new/common-src/packet.c 2006-05-25 06:44:35.0 > -0400 > +++ amanda-2.5.1.new.amindexd/common-src/packet.c 2006-09-21 > 14:26:08.0 -0400 > @@ -54,6 +54,7 @@ printf_arglist_function2(void pkt_init, > const char *, fmt) > { > va_list argp; > +int len; > > assert(pkt != NULL); > assert(strcmp(pkt_type2str(type), "BOGUS") != 0); > @@ -62,14 +63,16 @@ printf_arglist_function2(void pkt_init, > pkt->type = type; > pkt->packet_size = 1000; > pkt->body = alloc(pkt->packet_size); > -arglist_start(argp, fmt); > -while (vsnprintf(pkt->body, pkt->packet_size, fmt, argp) >= > - (int)(pkt->packet_size - 1)) { > +while(1) { > + arglist_start(argp, fmt); > + len = vsnprintf(pkt->body, pkt->packet_size, fmt, argp); > + arglist_end(argp); > + if (len < (int)(pkt->packet_size - 1)) > + break; > pkt->packet_size *= 2; > amfree(pkt->body); > pkt->body = alloc(pkt->packet_size); > } > -arglist_end(argp); > pkt->size = strlen(pkt->body); > } > > @@ -79,6 +82,7 @@ printf_arglist_function2(void pkt_init, > printf_arglist_function1(void pkt_cat, pkt_t *, pkt, const char *, fmt) > { > size_t len; > +int lenX; > va_list argp; > char * pktbody; > > @@ -87,19 +91,19 @@ printf_arglist_function1(void pkt_cat, p > > len = strlen(pkt->body); > > -arglist_start(argp, fmt); > -while (vsnprintf(pkt->body + len, pkt->packet_size - len, fmt,argp) >= > - (int)(pkt->packet_size - len - 1)) { > +while(1) { > + arglist_start(argp, fmt); > +lenX = vsnprintf(pkt->body + len, pkt->packet_size - len, fmt,argp); > + arglist_end(argp); > + if (lenX < (int)(pkt->packet_size - len - 1)) > + break; > pkt->packet_size *= 2; > pktbody = alloc(pkt->packet_size); > strncpy(pktbody, pkt->body, len); > pktbody[len] = '\0'; > amfree(pkt->body); > pkt->body = pktbody; > - arglist_end(argp); > - arglist_start(argp, fmt); > } > -arglist_end(argp); > pkt->size = strlen(pkt->body); > } > > diff -u -r --show-c-function --exclude-from=amanda.diff > amanda-2.5.1.new/server-src/amindexd.c > amanda-2.5.1.new.amindexd/server-src/amindexd.c > --- amanda-2.5.1.new/server-src/amindexd.c2006-07-25 14:27:57.0 > -0400 > +++ amanda-2.5.1.new.amindexd/server-src/amindexd.c 2006-09-21 > 13:47:19.0 -0400 > @@ -295,7 +295,7 @@ printf_arglist_function1(static void rep > len = vsnprintf(reply_buffer, reply_buffer_size, fmt, args); > arglist_end(args); > > - if (len > -1 && (size_t)len < reply_buffer_size) > + if (len > -1 && (size_t)len < reply_buffer_size-1) > break; > > reply_buffer_size *= 2; > @@ -334,7 +334,7 @@ printf_arglist_function1(static void lre > len = vsnprintf(reply_buffer, reply_buffer_size, fmt, args); > arglist_end(args); > > - if (len > -1 && (size_t)len < reply_buffer_size) > + if (len > -1 && (size_t)len < reply_buffer_size-1) > break;
Re: amrecover 2.5.1
Hi, Irix doesn't have the same return value for vsnprintf as linux have. Could you try this patch. Jean-Louis Jean-Francois Malouin wrote: * Jean-Louis Martineau <[EMAIL PROTECTED]> [20060921 13:04]: Jean-Francois, Could you send the amrecover..debug and amindexd..debug files? here they come attached. jf Jean-Louis Jean-Francois Malouin wrote: Hello, amanda-2.5.1 on irix-6.5.x using bsdtcp auth amrecover don't want to play ball: yorick 130# /opt/amanda/amanda10/sbin/amrecover AMRECOVER Version 2.5.1. Contacting server on yorick ... 220 Setting restore date to today (2006-09-21) 200 Scanning /holddisk/conf10/stk_180... 200 200 Use the setdisk command to choose dump disk to recover amrecover> setdate 2006-09-20 200 amrecover> setdisk /data/nihpd/nihpd3/backup 200 bad reply: missing date field oc!È amrecover> ls amrecover> pwd /data/nihpd/nihpd3/backup mrecover> listhost 200- 201- 200 amrecover> listdisk 200- 201- [ large numbers of 201- lines ] 200 amrecover> add . File . doesn't exist in directory Now I'm nervous! jf diff -u -r --show-c-function --exclude-from=amanda.diff amanda-2.5.1.new/common-src/packet.c amanda-2.5.1.new.amindexd/common-src/packet.c --- amanda-2.5.1.new/common-src/packet.c2006-05-25 06:44:35.0 -0400 +++ amanda-2.5.1.new.amindexd/common-src/packet.c 2006-09-21 14:26:08.0 -0400 @@ -54,6 +54,7 @@ printf_arglist_function2(void pkt_init, const char *, fmt) { va_listargp; +int len; assert(pkt != NULL); assert(strcmp(pkt_type2str(type), "BOGUS") != 0); @@ -62,14 +63,16 @@ printf_arglist_function2(void pkt_init, pkt->type = type; pkt->packet_size = 1000; pkt->body = alloc(pkt->packet_size); -arglist_start(argp, fmt); -while (vsnprintf(pkt->body, pkt->packet_size, fmt, argp) >= - (int)(pkt->packet_size - 1)) { +while(1) { + arglist_start(argp, fmt); + len = vsnprintf(pkt->body, pkt->packet_size, fmt, argp); + arglist_end(argp); + if (len < (int)(pkt->packet_size - 1)) + break; pkt->packet_size *= 2; amfree(pkt->body); pkt->body = alloc(pkt->packet_size); } -arglist_end(argp); pkt->size = strlen(pkt->body); } @@ -79,6 +82,7 @@ printf_arglist_function2(void pkt_init, printf_arglist_function1(void pkt_cat, pkt_t *, pkt, const char *, fmt) { size_t len; +int lenX; va_listargp; char * pktbody; @@ -87,19 +91,19 @@ printf_arglist_function1(void pkt_cat, p len = strlen(pkt->body); -arglist_start(argp, fmt); -while (vsnprintf(pkt->body + len, pkt->packet_size - len, fmt,argp) >= - (int)(pkt->packet_size - len - 1)) { +while(1) { + arglist_start(argp, fmt); +lenX = vsnprintf(pkt->body + len, pkt->packet_size - len, fmt,argp); + arglist_end(argp); + if (lenX < (int)(pkt->packet_size - len - 1)) + break; pkt->packet_size *= 2; pktbody = alloc(pkt->packet_size); strncpy(pktbody, pkt->body, len); pktbody[len] = '\0'; amfree(pkt->body); pkt->body = pktbody; - arglist_end(argp); - arglist_start(argp, fmt); } -arglist_end(argp); pkt->size = strlen(pkt->body); } diff -u -r --show-c-function --exclude-from=amanda.diff amanda-2.5.1.new/server-src/amindexd.c amanda-2.5.1.new.amindexd/server-src/amindexd.c --- amanda-2.5.1.new/server-src/amindexd.c 2006-07-25 14:27:57.0 -0400 +++ amanda-2.5.1.new.amindexd/server-src/amindexd.c 2006-09-21 13:47:19.0 -0400 @@ -295,7 +295,7 @@ printf_arglist_function1(static void rep len = vsnprintf(reply_buffer, reply_buffer_size, fmt, args); arglist_end(args); - if (len > -1 && (size_t)len < reply_buffer_size) + if (len > -1 && (size_t)len < reply_buffer_size-1) break; reply_buffer_size *= 2; @@ -334,7 +334,7 @@ printf_arglist_function1(static void lre len = vsnprintf(reply_buffer, reply_buffer_size, fmt, args); arglist_end(args); - if (len > -1 && (size_t)len < reply_buffer_size) + if (len > -1 && (size_t)len < reply_buffer_size-1) break; reply_buffer_size *= 2; @@ -375,7 +375,7 @@ printf_arglist_function1(static void fas len = vsnprintf(reply_buffer, reply_buffer_size, fmt, args); arglist_end(args); - if (len > -1 && (size_t)len < reply_buffer_size) + if (len > -1 && (size_t)len < reply_buffer_size-1) break; reply_buffer_size *= 2; diff -u -r --show-c-function --exclude-from=amanda.diff amanda-2.5.1.new/server-src/logfile.c amanda-2.5.1.new.amindexd/server-src/logfile.c --- amanda-2.5.1.new/server-src/logfile.c 2006-06-01 10:54:39.0 -0400 +++ amanda-2.5.1.new.amindexd/server-src/logfile.c 2006-09-21 14:30:56.0 -0400 @@ -104,6 +104,7 @@ pri
Re: amrecover 2.5.1
* Jean-Louis Martineau <[EMAIL PROTECTED]> [20060921 13:04]: > Jean-Francois, > > Could you send the amrecover..debug and > amindexd..debug files? here they come attached. jf > > Jean-Louis > > Jean-Francois Malouin wrote: > >Hello, > > > >amanda-2.5.1 on irix-6.5.x using bsdtcp auth > >amrecover don't want to play ball: > > > >yorick 130# /opt/amanda/amanda10/sbin/amrecover > >AMRECOVER Version 2.5.1. Contacting server on yorick ... > >220 > >Setting restore date to today (2006-09-21) > >200 > >Scanning /holddisk/conf10/stk_180... > >200 > >200 > >Use the setdisk command to choose dump disk to recover > >amrecover> setdate 2006-09-20 > >200 > >amrecover> setdisk /data/nihpd/nihpd3/backup > >200 > >bad reply: missing date field > >oc!È > >amrecover> ls > >amrecover> pwd > >/data/nihpd/nihpd3/backup > >mrecover> listhost > >200- > >201- > >200 > >amrecover> listdisk > >200- > >201- > >[ large numbers of 201- lines ] > >200 > >amrecover> add . > >File . doesn't exist in directory > > > > > >Now I'm nervous! > >jf > > -- <° >< amrecover: debug 1 pid 5906786 ruid 0 euid 0: start at Thu Sep 21 12:21:38 2006 Could not open conf file "/opt/amanda/amanda10/etc/amanda/amanda-client.conf": No such file or directory Reading conf file "/opt/amanda/amanda10/etc/amanda/stk_180-conf10/amanda-client.conf". amrecover: debug 1 pid 5906786 ruid 0 euid 0: rename at Thu Sep 21 12:21:38 2006 security_getdriver(name=bsdtcp) returns 5ffb4ea8 security_handleinit(handle=10032b20, driver=5ffb4ea8 (BSDTCP)) security_streaminit(stream=1003e058, driver=5ffb4ea8 (BSDTCP)) amrecover: connect_port: Skip port 512: Owned by exec. amrecover: connect_port: Skip port 513: Owned by login. amrecover: connect_port: Skip port 514: Owned by shell. amrecover: connect_port: Skip port 515: Owned by printer. amrecover: connect_port: Try port 516: Available - amrecover: connected to 132.206.178.10.10116 amrecover: our side is 0.0.0.0.516 amrecover: try_socksize: send buffer size is 65536 amrecover: try_socksize: receive buffer size is 65536 security_streaminit(stream=10046098, driver=5ffb4ea8 (BSDTCP)) security_close(handle=10032b20, driver=5ffb4ea8 (BSDTCP)) security_stream_close(1003e058) add_glob (.) -> ^\.$ add_file: Looking for "\.[/]*$" add_file: Converted path="\.[/]*$" to path_on_disk="/\.[/]*$" add_file: (Failed) File . doesn't exist in directory add_glob (.) -> ^\.$ add_file: Looking for "\.[/]*$" add_file: Converted path="\.[/]*$" to path_on_disk="/\.[/]*$" add_file: (Failed) File . doesn't exist in directory security_stream_close(10046098) amrecover: pid 5906786 finish time Thu Sep 21 12:25:20 2006 amindexd: debug 1 pid 5033716 ruid 666 euid 666: start at Thu Sep 21 12:21:38 2006 amindexd: version 2.5.1 amindexd: < 220 amindexd: > FEATURES feff9ffeff7f amindexd: < 200 amindexd: > DATE 2006-09-21 amindexd: < 200 amindexd: > SCNF stk_180-conf10 amindexd: debug 1 pid 5033716 ruid 666 euid 666: rename at Thu Sep 21 12:21:38 2006 amindexd: < 200 amindexd: > HOST yorick amindexd: < 200 amindexd: > DATE 2006-09-20 amindexd: < 200 amindexd: > DISK /data/nihpd/nihpd3/backup append_to_tapelist(tapelist=0, label='stk_180-conf10-12', , file=1, isafile=0) dump_tapelist(1001f100): 1001f100->next = 0 1001f100->label= stk_180-conf10-12 1001f100->isafile = 0 1001f100->numfiles = 1 1001f100->files[0] = 1 1001f100 count = 1 amindexd: - 2006-09-20 1 stk_180-conf10-12 1 -1 append_to_tapelist(tapelist=0, label='stk_180-conf10-3', , file=24, isafile=0) dump_tapelist(10051db8): 10051db8->next = 0 10051db8->label= stk_180-conf10-3 10051db8->isafile = 0 10051db8->numfiles = 1 10051db8->files[0] = 24 10051db8 count = 1 amindexd: - 2006-09-19 1 stk_180-conf10-3 24 -1 append_to_tapelist(tapelist=0, label='stk_180-conf10-2', , file=8, isafile=0) dump_tapelist(10051df8): 10051df8->next = 0 10051df8->label= stk_180-conf10-2 10051df8->isafile = 0 10051df8->numfiles = 1 10051df8->files[0] = 8 10051df8 count = 1 amindexd: - 2006-09-18 0 stk_180-conf10-2 8 -1 amindexd: < 200 amindexd: > OISD / amindexd: uncompress command: /usr/sbin/gzip -dc '/opt/amanda/amanda10/usr/adm/amanda/stk_180-conf10/index/yorick/_data_nihpd_nihpd3_backup/20060920_1.gz' 2>/dev/null | (LC_ALL=C; export LC_ALL ; sort) > '/opt/amanda/amanda10/usr/adm/amanda/stk_180-conf10/index/yorick/_data_nihpd_nihpd3_backup/20060920_1' amindexd: f /opt/amanda/amanda10/usr/adm/amanda/stk_180-conf10/index/yorick/_data_nihpd_nihpd3_backup/20060920_1 amindexd: < 200 amindexd: > OLSD / amindexd: uncompress command: /usr/sbin/gzip -dc '/opt/amanda/amanda10/usr/adm/amanda/stk_180-conf10/index/yorick/_data_nihpd_nihpd3_backup/20060918_0.gz' 2>/dev/null | (LC_ALL=C; export LC_ALL ; sort) > '/opt/amanda/amanda10/usr/adm/amanda/stk_180-conf10/index/yorick/_data_nihpd_nihpd3_backup/20060918_0' amindexd: < 200- amindexd: < 201- amindexd: < 201- amindexd: < 201- amindex
Re: amrecover 2.5.1
Jean-Francois, Could you send the amrecover..debug and amindexd..debug files? Jean-Louis Jean-Francois Malouin wrote: Hello, amanda-2.5.1 on irix-6.5.x using bsdtcp auth amrecover don't want to play ball: yorick 130# /opt/amanda/amanda10/sbin/amrecover AMRECOVER Version 2.5.1. Contacting server on yorick ... 220 Setting restore date to today (2006-09-21) 200 Scanning /holddisk/conf10/stk_180... 200 200 Use the setdisk command to choose dump disk to recover amrecover> setdate 2006-09-20 200 amrecover> setdisk /data/nihpd/nihpd3/backup 200 bad reply: missing date field oc!È amrecover> ls amrecover> pwd /data/nihpd/nihpd3/backup mrecover> listhost 200- 201- 200 amrecover> listdisk 200- 201- [ large numbers of 201- lines ] 200 amrecover> add . File . doesn't exist in directory Now I'm nervous! jf
amrecover 2.5.1
Hello, amanda-2.5.1 on irix-6.5.x using bsdtcp auth amrecover don't want to play ball: yorick 130# /opt/amanda/amanda10/sbin/amrecover AMRECOVER Version 2.5.1. Contacting server on yorick ... 220 Setting restore date to today (2006-09-21) 200 Scanning /holddisk/conf10/stk_180... 200 200 Use the setdisk command to choose dump disk to recover amrecover> setdate 2006-09-20 200 amrecover> setdisk /data/nihpd/nihpd3/backup 200 bad reply: missing date field oc!È amrecover> ls amrecover> pwd /data/nihpd/nihpd3/backup mrecover> listhost 200- 201- 200 amrecover> listdisk 200- 201- [ large numbers of 201- lines ] 200 amrecover> add . File . doesn't exist in directory Now I'm nervous! jf