mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-05-11 01:38:25 +02:00
git-svn-id: http://svn.ipfire.org/svn/ipfire/IPFire/source@16 ea5c0bd1-69bd-2848-81d8-4f18e57aeed8
This commit is contained in:
92
src/patches/bzip2-1.0.2-chmod.patch
Normal file
92
src/patches/bzip2-1.0.2-chmod.patch
Normal file
@@ -0,0 +1,92 @@
|
||||
--- bzip2-1.0.2/bzip2.c.nochmod 2005-05-10 16:19:45.000000000 +0200
|
||||
+++ bzip2-1.0.2/bzip2.c 2005-05-10 16:22:00.000000000 +0200
|
||||
@@ -312,6 +312,7 @@
|
||||
|
||||
static void copyFileName ( Char*, Char* );
|
||||
static void* myMalloc ( Int32 );
|
||||
+static int applySavedFileAttrToOutputFile ( int fd );
|
||||
|
||||
|
||||
|
||||
@@ -457,6 +458,10 @@
|
||||
ret = fflush ( zStream );
|
||||
if (ret == EOF) goto errhandler_io;
|
||||
if (zStream != stdout) {
|
||||
+ int fd = fileno ( zStream );
|
||||
+ if (fd < 0) goto errhandler_io;
|
||||
+ ret = applySavedFileAttrToOutputFile ( fd );
|
||||
+ if (ret != 0) goto errhandler_io;
|
||||
ret = fclose ( zStream );
|
||||
outputHandleJustInCase = NULL;
|
||||
if (ret == EOF) goto errhandler_io;
|
||||
@@ -567,6 +572,12 @@
|
||||
|
||||
closeok:
|
||||
if (ferror(zStream)) goto errhandler_io;
|
||||
+ if ( stream != stdout) {
|
||||
+ int fd = fileno ( stream );
|
||||
+ if (fd < 0) goto errhandler_io;
|
||||
+ ret = applySavedFileAttrToOutputFile ( fd );
|
||||
+ if (ret != 0) goto errhandler_io;
|
||||
+ }
|
||||
ret = fclose ( zStream );
|
||||
if (ret == EOF) goto errhandler_io;
|
||||
|
||||
@@ -1125,7 +1136,7 @@
|
||||
|
||||
|
||||
static
|
||||
-void applySavedMetaInfoToOutputFile ( Char *dstName )
|
||||
+void applySavedTimeInfoToOutputFile ( Char *dstName )
|
||||
{
|
||||
# if BZ_UNIX
|
||||
IntNative retVal;
|
||||
@@ -1134,16 +1145,26 @@
|
||||
uTimBuf.actime = fileMetaInfo.st_atime;
|
||||
uTimBuf.modtime = fileMetaInfo.st_mtime;
|
||||
|
||||
- retVal = chmod ( dstName, fileMetaInfo.st_mode );
|
||||
- ERROR_IF_NOT_ZERO ( retVal );
|
||||
-
|
||||
retVal = utime ( dstName, &uTimBuf );
|
||||
ERROR_IF_NOT_ZERO ( retVal );
|
||||
+# endif
|
||||
+}
|
||||
+
|
||||
+static
|
||||
+int applySavedFileAttrToOutputFile ( int fd )
|
||||
+{
|
||||
+# if BZ_UNIX
|
||||
+ IntNative retVal;
|
||||
+
|
||||
+ retVal = fchmod ( fd, fileMetaInfo.st_mode );
|
||||
+ if (retVal != 0)
|
||||
+ return retVal;
|
||||
|
||||
- retVal = chown ( dstName, fileMetaInfo.st_uid, fileMetaInfo.st_gid );
|
||||
+ (void) fchown ( fd, fileMetaInfo.st_uid, fileMetaInfo.st_gid );
|
||||
/* chown() will in many cases return with EPERM, which can
|
||||
be safely ignored.
|
||||
*/
|
||||
+ return 0;
|
||||
# endif
|
||||
}
|
||||
|
||||
@@ -1366,7 +1387,7 @@
|
||||
|
||||
/*--- If there was an I/O error, we won't get here. ---*/
|
||||
if ( srcMode == SM_F2F ) {
|
||||
- applySavedMetaInfoToOutputFile ( outName );
|
||||
+ applySavedTimeInfoToOutputFile ( outName );
|
||||
deleteOutputOnInterrupt = False;
|
||||
if ( !keepInputFiles ) {
|
||||
IntNative retVal = remove ( inName );
|
||||
@@ -1544,7 +1565,7 @@
|
||||
/*--- If there was an I/O error, we won't get here. ---*/
|
||||
if ( magicNumberOK ) {
|
||||
if ( srcMode == SM_F2F ) {
|
||||
- applySavedMetaInfoToOutputFile ( outName );
|
||||
+ applySavedTimeInfoToOutputFile ( outName );
|
||||
deleteOutputOnInterrupt = False;
|
||||
if ( !keepInputFiles ) {
|
||||
IntNative retVal = remove ( inName );
|
||||
Reference in New Issue
Block a user