Subject: Re: bug#47058: 28.0.50; Dired Z: insert-directory: Reading directory: No such file or directory, CrossLine_linux_x86

From: Gregory Heytings <[email-masked]>
Date: Tue, 21 Sep 2021 19:19:52 +0000

>> Would it not be easier to unconditionally untar the contents in a 
>> temporary directory, and to either move its contents to the current 
>> directory if it contains only one entry, or to rename it to a directory 
>> based on the tar file name when it contains more than one entry?
>
> Easier in what sense?
>

In the sense of "DWIM".

>> Something like:
>>
>> TMP=$(mktemp -d ./XXXXXXXX)
>> tar -C $TMP -x -z -f $FILE
>> if (($(ls $TMP | wc -l) == 1))
>> then
>>    mv $TMP/* .
>>    rmdir $TMP
>> else
>>    mv $TMP $(basename $FILE .tar.gz)
>> fi
>
> Wouldn't that remove the files that are in the directory but not in the 
> archive?
>

No, it does what I explained above:

If all files in the tar file are under one directory (e.g. 
emacs-27.2.tar.gz whose files are all in a emacs-27.2 directory), the 
files will be in that directory.

If on the contrary the tar file is "broken" and its files are under 
multiple directories or not in a directory (say foobar.tar.gz with three 
files "/foo", "/bar" and "/baz"), the files will be put in a directory 
"foobar".