-
Notifications
You must be signed in to change notification settings - Fork 14
Preserve original file information #189
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Looking for "bin" folder seems a bit "tricky" to me... For tar files we should keep original executable permissions as this info is available. For zip files executable information could be available for UNIX systems but in current ZipEntry implementation that info seems to be not available.
if ((mode & 00100) > 0) { | ||
// Preserve execute permissions | ||
extractedFile.setExecutable(true, (mode & 00001) == 0); | ||
} | ||
break; | ||
case TarEntry.LINK: | ||
File linkFile = new File(destination, outFilename); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should be done too for link, no?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure.
For hard links It seems that is not necessary as It should keep original (linked) file permissions.
As for symbolic links, by default, It also seems that is not necessary (I checked with node-v6.9.4-linux-x64.tar.gz and npm symlink has all permissions -777-...). Surely we could/sould do something like:
Set<PosixFilePermission> perms = PosixFilePermissions.fromString("rwxr-xr--"); FileAttribute<Set<PosixFilePermission>> attr = PosixFilePermissions.asFileAttribute(perms); Files.createSymbolicLink(symLinkFile.toPath(), symTarget, attr);
but before that, we should check that current system is POSIX and "gess" permission pattern (in the example "rwxr-xr--") from entry attributes. (I'm not sure but I think that if system is not POSIX and you try to pass those attrs an Exception is thrown).
Have you thought on using Apache Commons Compress to avoid this low level implementation?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok thanks for your feedback. If it works for you, it's OK.
Have you thought on using Apache Commons Compress to avoid this low level implementation?
I would like to avoid having dependencies just to extract node.js. We will see in the future if we have so many problem, perhaps I will switch to appache commons compress.
Thanks @rubensa ! |
@rubensa so now embed node.js works for linux, is it OK? I would like create soon a release. |
Hello @angelozerr Thanks for your good work @angelozerr |
Thanks a lot @rubensa for your contribution! |
Looking for "bin" folder seems a bit "tricky" to me...
For tar files we should keep original executable permissions as this info is available.
For zip files executable information could be available for UNIX systems but in current ZipEntry implementation that info seems to be not available.