RFR: 8173970: jar tool should have a way to extract to a directory
Peter Levart
peter.levart at gmail.com
Tue Jun 29 07:16:16 UTC 2021
A word about "compatibility" with other jdk tools...
jar is a specific tool. It was initially conceived to be user-friendly
with users that are already familiar with tar tool:
"The syntax for the jar command resembles the syntax for the tar command."
Mixing-in behaviors not consistent with tar will make it a strange
hybrid. Trying to find common ground with other JDK tools will make it
less flexible.
Regards, Peter
On 29/06/2021 09:05, Peter Levart wrote:
>
> Hi,
>
> On 29/03/2021 12:46, Jaikiran Pai wrote:
>>> Given the support of -C/-dir is new and -P is there for backwards
>>> compatibility then I see the choices are:
>>>
>>> * Issue an error when -P and -C/-dir are specified together with -x
>>> * Silently ignore the -P option
>>> * Ignore -C/-dir and the behavior is if -xfP was specified.
>>>
>>>
>>> I am leaning towards an error given this is a new feature when -P
>>> and -C/-dir are specified with -x
>>
>> That sounds reasonable to me. I'll update the PR accordingly to take
>> this into account.
>>
>> -Jaikiran
>>
>
> If we are trying to follow the semantics of tar -C option (gnutar and
> other Unix tar(s)) then I think -P may be combined with -C when
> extracting. The manpage for gnutar says:
>
> -C, --directory=DIR
> Change to DIR before performing any operations. This
> option is order-sensitive, i.e. it affects all options that follow.
>
> ...the meaning is that relative paths from archive get extracted
> relative to current dir (possibly modified by -C) and that absolute
> paths get extracted to their absolute positions (i.e. not affected by
> current dir). The -C option (as implemented by tar) is also useful
> when gathering files/dirs from different base paths into common
> archive structure. Say you have the following (relative)
> directory/file structure:
>
> dir1/subdir1/a.txt
> dir1/subdir1/b.txt
> dir1/file1.txt
> dir2/subdir2/a.txt
> dir2/subdir2/b.txt
> dir2/file2.txt
>
> The command:
>
> tar -cf archive.tar -C dir1 . -C ../dir2 .
>
> ...will create archive.tar with the following content (notice the 2nd
> -C option is dependent on the 1st: -C literally changes the current
> directory before executing further options):
>
> ./
> ./subdir1/
> ./subdir1/a.txt
> ./subdir1/b.txt
> ./file1.txt
> ./
> ./subdir2/
> ./subdir2/a.txt
> ./subdir2/b.txt
> ./file2.txt
>
>
> When extracting, -C may be used to scatter different relative archive
> files/dirs into different base paths. For example, the archive.tar
> from above can be extracted into original directory structure with the
> following command (empty dir1 and dir2 have to be already present):
>
> tar -xf archive.tar -C dir1 ./file1.txt ./subdir1 -C ../dir2
> ./file2.txt ./subdir2
>
>
> So here's a hint about the behavior of multiple -C options: if the
> option is -C, it should follow tar -C behavior.
>
>
> Regards, Peter
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20210629/e6304551/attachment.htm>
More information about the compiler-dev
mailing list