Mauricio Silveira wrote: > terry white wrote: > > ... ciao: > > > > : on "10-20-2006" "Mauricio Silveira" writ: > > : I'm wondering if there's any way to get tar to stop immediately after > > : the extraction of a file on compressed tar files. eg: I pack a big tgz > > > > 'man tar' offers: > > > > -T, --files-from F > > get names to extract or create from file F > > > > > > : when I run "tar xf file.tgz --occurrence index.txt" > > > > HOWEVER , i'm using a gnu flavour 'tar', which does "not" list > > '--occurrence' as an option, so, the suggestion above may not apply .. > I know 1.13 doesn't have this option (at least on command line help). > > I did some research on the source code for tar 1.15.1 and found a place > to insert a simple exit() when using "--occurrence filename" to force > tar to quit on a "match". > > I think this is the way tar should behave... compressed or non > compressed files, tar actions behavior should be the same. The issue isn't compressed vs non-compressed. tar doesn't read compressed files, ever; if you use -z, -j, or --use-compress-program, tar spawns a child process to perform [de]compression. tar itself only ever reads or writes uncompressed archives. The issue is reading an archive from a file vs reading it from a pipe or socket. In the latter case, it *intentionally* reads the entire stream to avoid causing abnormal termination in the process which is producing the data (e.g. gzip, in the case of -x). > I think I should send tar this issue as a bug... as far as tar waits for > its child "compress program" pipe to end. If you read any of what I wrote, you will realise that it isn't a bug, it's quite intentional behaviour. > --- list.c.org 2006-10-20 15:09:17.000000000 -0200 > +++ list.c 2006-10-20 15:07:51.000000000 -0200 > @@ -199,6 +199,7 @@ > } > while (!all_names_found (¤t_stat_info)); > > + exit(EXIT_SUCCESS); > close_archive (); > names_notfound (); /* print names not found */ > } This "fix" is wrong on so many levels. If you don't want to drain the pipe, then don't drain the pipe, as I explained last time. There's no reason to bypass the rest of the termination process, all of which is there for one reason or another. -- Glynn Clements <glynn@xxxxxxxxxxxxxxxxxx> - To unsubscribe from this list: send the line "unsubscribe linux-admin" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html