Skip to content

Commit 3caa2b2

Browse files
committed
detect permissions for addFile
1 parent 1c3aa16 commit 3caa2b2

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

src/main/java/org/codehaus/plexus/archiver/AbstractArchiver.java

+18-2
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040

4141
import org.codehaus.plexus.archiver.manager.ArchiverManager;
4242
import org.codehaus.plexus.archiver.manager.NoSuchArchiverException;
43+
import org.codehaus.plexus.components.io.attributes.PlexusIoResourceAttributeUtils;
4344
import org.codehaus.plexus.components.io.attributes.PlexusIoResourceAttributes;
4445
import org.codehaus.plexus.components.io.attributes.SimpleResourceAttributes;
4546
import org.codehaus.plexus.components.io.functions.ResourceAttributeSupplier;
@@ -364,9 +365,20 @@ public void addFileSet(@Nonnull final FileSet fileSet) throws ArchiverException
364365

365366
@Override
366367
public void addFile(@Nonnull final File inputFile, @Nonnull final String destFileName) throws ArchiverException {
367-
final int fileMode = getOverrideFileMode();
368+
int permissions;
369+
if (forcedFileMode > 0) {
370+
permissions = forcedFileMode;
371+
} else {
372+
permissions = PlexusIoResourceAttributes.UNKNOWN_OCTAL_MODE;
373+
try {
374+
permissions = PlexusIoResourceAttributeUtils.getFileAttributes(inputFile)
375+
.getOctalMode();
376+
} catch (IOException ioe) {
377+
// ignore
378+
}
379+
}
368380

369-
addFile(inputFile, destFileName, fileMode);
381+
addFile(inputFile, destFileName, permissions);
370382
}
371383

372384
@Override
@@ -462,6 +474,10 @@ public void addFile(@Nonnull final File inputFile, @Nonnull String destFileName,
462474
permissions = getOverrideFileMode();
463475
}
464476

477+
if (umask > 0 && permissions != PlexusIoResourceAttributes.UNKNOWN_OCTAL_MODE) {
478+
permissions &= ~umask;
479+
}
480+
465481
try {
466482
// do a null check here, to avoid creating a file stream if there are no filters...
467483
ArchiveEntry entry = ArchiveEntry.createFileEntry(destFileName, inputFile, permissions, getDirectoryMode());

0 commit comments

Comments
 (0)