[PATCH] untar: Make behavior similar to GNU or BSD tar

Chris Johns chrisj at rtems.org
Tue Dec 7 04:10:54 UTC 2021


On 3/12/21 11:50 pm, Christian Mauderer wrote:
> RTEMS untar implementation had problems with overwriting or integrating
> archives into existing directory structures. This patch adapts the
> behavior to mimic that of a GNU tar or BSD tar and extends the tar01
> test to check for the behavior. That is:
> 
> * If a directory structure exists, the files from the archive will be
>   integrated. Existing files are overwritten.

What currently happens?

> * If a file exists and the archive contains a directory with the same
>   name, the file is removed and a directory is created. In the above
>   example: if l1/l2 is a file it will be overwritten with a new
>   directory.

OK

> * If a directory exists and the archive contains a file with the same
>   name, the directory will be replaced if it is empty. If it contains
>   files, the result is an error.
> 
> * An archive also can contain only a file without the parent
>   directories. If in that case one of the parent directories exists as a
>   file extracting the archive results in an error. In the example: if
>   l1/l2 is a file and the archive doesn't contain the directories but
>   only the file l1/l2/x.txt that would be an error.
> 
> * In case of an error, it is possible that the archive has been
>   partially extracted.

And what was there is not recoverable.

Functionally this is not a big change and so I am left wondering why the
original developer(s) did not do this?

I think the changes make sense and I do not think it will break any applications
I know of that use this code.

Chris


More information about the devel mailing list