socsvn commit: r254259 - soc2013/dpl/head/contrib/bzip2
dpl at FreeBSD.org
dpl at FreeBSD.org
Sat Jul 6 21:57:34 UTC 2013
Author: dpl
Date: Sat Jul 6 21:57:33 2013
New Revision: 254259
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=254259
Log:
Cleaning bugs in compressStream/uncompressStream.
Modified:
soc2013/dpl/head/contrib/bzip2/bzip2.c
Modified: soc2013/dpl/head/contrib/bzip2/bzip2.c
==============================================================================
--- soc2013/dpl/head/contrib/bzip2/bzip2.c Sat Jul 6 21:11:01 2013 (r254258)
+++ soc2013/dpl/head/contrib/bzip2/bzip2.c Sat Jul 6 21:57:33 2013 (r254259)
@@ -75,9 +75,8 @@
# include <sys/times.h>
# define PATH_SEP '/'
-# define MY_LSTAT fstatat
-# define MY_STAT fstatat
-# define MY_STATS stat
+# define MY_LSTAT lstat
+# define MY_STAT stat
# define MY_S_ISREG S_ISREG
# define MY_S_ISDIR S_ISDIR
@@ -114,7 +113,6 @@
# undef MY_STAT
# define MY_LSTAT stat
# define MY_STAT stat
-# define MY_STATS stat
# undef SET_BINARY_MODE
# define SET_BINARY_MODE(fd) \
do { \
@@ -148,7 +146,6 @@
# define PATH_SEP '\\'
# define MY_LSTAT _stat
# define MY_STAT _stat
-# define MY_STATS _stat
# define MY_S_ISREG(x) ((x) & _S_IFREG)
# define MY_S_ISDIR(x) ((x) & _S_IFDIR)
@@ -732,7 +729,7 @@
void cleanUpAndFail ( Int32 ec )
{
IntNative retVal;
- struct MY_STATS statBuf;
+ struct MY_STAT statBuf;
if ( srcMode == SM_F2F
&& opMode != OM_TEST
@@ -743,7 +740,7 @@
January 2002. (JRS 06-Jan-2002: other changes in 1.0.2 mean
this is less likely to happen. But to be ultra-paranoid, we
do the check anyway.) */
- retVal = MY_STAT ( IN_FILENO, inName, &statBuf, 0 );
+ retVal = MY_STAT ( inName, &statBuf );
if (retVal == 0) {
if (noisy)
fprintf ( stderr,
@@ -1023,12 +1020,12 @@
if in doubt, return True
--*/
static
-Bool notAStandardFile (int fd, Char* name )
+Bool notAStandardFile ( Char* name )
{
IntNative i;
- struct MY_STATS statBuf;
+ struct MY_STAT statBuf;
- i = MY_LSTAT ( fd, name, &statBuf, AT_SYMLINK_NOFOLLOW );
+ i = MY_LSTAT ( name, &statBuf );
if (i != 0) return True;
if (MY_S_ISREG(statBuf.st_mode)) return False;
return True;
@@ -1040,12 +1037,12 @@
rac 11/21/98 see if file has hard links to it
--*/
static
-Int32 countHardLinks ( int fd, Char* name )
+Int32 countHardLinks ( Char* name )
{
IntNative i;
- struct MY_STATS statBuf;
+ struct MY_STAT statBuf;
- i = MY_LSTAT ( fd, name, &statBuf, AT_SYMLINK_NOFOLLOW );
+ i = MY_LSTAT ( name, &statBuf );
if (i != 0) return 0;
return (statBuf.st_nlink - 1);
}
@@ -1076,7 +1073,7 @@
*/
#if BZ_UNIX
static
-struct MY_STATS fileMetaInfo;
+struct MY_STAT fileMetaInfo;
#endif
static
@@ -1085,23 +1082,29 @@
# if BZ_UNIX
IntNative retVal;
/* Note use of stat here, not lstat. */
- retVal = MY_STAT( fd, srcName, &fileMetaInfo, 0 );
+ retVal = MY_STAT( srcName, &fileMetaInfo );
ERROR_IF_NOT_ZERO ( retVal );
# endif
}
static
-void applySavedTimeInfoToOutputFile ( Char *dstName )
+void applySavedTimeInfoToOutputFile ( int fd )
{
# if BZ_UNIX
IntNative retVal;
- struct utimbuf uTimBuf;
+/* struct utimbuf uTimBuf;*/
+ struct timeval fdTime[2];
- uTimBuf.actime = fileMetaInfo.st_atime;
- uTimBuf.modtime = fileMetaInfo.st_mtime;
-
- retVal = utime ( dstName, &uTimBuf );
+ fdTime[0].tv_sec = fileMetaInfo.st_atime;
+ fdTime[0].tv_usec = 0;
+ fdTime[1].tv_sec = fileMetaInfo.st_mtime;
+ fdTime[1].tv_usec = 0;
+
+/* uTimBuf.actime = fileMetaInfo.st_atime;*/
+/* uTimBuf.modtime = fileMetaInfo.st_mtime;*/
+ printf("fd:%d\n", fd);
+ retVal = futimes ( fd, fdTime );
ERROR_IF_NOT_ZERO ( retVal );
# endif
}
@@ -1184,7 +1187,7 @@
FILE *outStr;
#endif
Int32 n, i;
- struct MY_STATS statBuf;
+ struct MY_STAT statBuf;
deleteOutputOnInterrupt = False;
@@ -1207,6 +1210,12 @@
break;
}
+ if (verbosity >= 1) {
+ fprintf ( stderr, " %s: ", inName );
+ pad ( inName );
+ fflush ( stderr );
+ }
+
if ( srcMode != SM_I2O && containsDubiousChars ( inName ) ) {
if (noisy)
fprintf ( stderr, "%s: There are no files matching `%s'.\n",
@@ -1231,7 +1240,7 @@
}
}
if ( srcMode == SM_F2F || srcMode == SM_F2O ) {
- MY_STAT( IN_FILENO, inName, &statBuf, 0);
+ MY_STAT( inName, &statBuf );
if ( MY_S_ISDIR(statBuf.st_mode) ) {
fprintf( stderr,
"%s: Input file %s is a directory.\n",
@@ -1240,7 +1249,7 @@
return;
}
}
- if ( srcMode == SM_F2F && !forceOverwrite && notAStandardFile ( inName, IN_FILENO )) {
+ if ( srcMode == SM_F2F && !forceOverwrite && notAStandardFile ( inName )) {
if (noisy)
fprintf ( stderr, "%s: Input file %s is not a normal file.\n",
progName, inName );
@@ -1258,7 +1267,7 @@
}
}
if ( srcMode == SM_F2F && !forceOverwrite &&
- (n=countHardLinks ( IN_FILENO, inName )) > 0) {
+ (n=countHardLinks ( inName )) > 0) {
fprintf ( stderr, "%s: Input file %s has %d other link%s.\n",
progName, inName, n, n > 1 ? "s" : "" );
setExit(1);
@@ -1332,12 +1341,6 @@
break;
}
- if (verbosity >= 1) {
- fprintf ( stderr, " %s: ", inName );
- pad ( inName );
- fflush ( stderr );
- }
-
# if CAPSICUM
/* Fork and compress in sandbox. */
if ( (forkpid = fork()) == -1 ){
@@ -1364,10 +1367,10 @@
deleteOutputOnInterrupt = True;
compressStream ( inStr, outStr );
outputHandleJustInCase = NULL;
-
+
/*--- If there was an I/O error, we won't get here. ---*/
if ( srcMode == SM_F2F ) {
- applySavedTimeInfoToOutputFile ( outName );
+ applySavedTimeInfoToOutputFile ( OUT_FILENO );
deleteOutputOnInterrupt = False;
if ( !keepInputFiles ) {
IntNative retVal = remove ( inName );
@@ -1396,7 +1399,7 @@
Int32 n, i;
Bool magicNumberOK;
Bool cantGuess;
- struct MY_STATS statBuf;
+ struct MY_STAT statBuf;
deleteOutputOnInterrupt = False;
@@ -1439,7 +1442,7 @@
return;
}
if ( srcMode == SM_F2F || srcMode == SM_F2O ) {
- MY_STAT(IN_FILENO, inName, &statBuf, 0);
+ MY_STAT( inName, &statBuf );
if ( MY_S_ISDIR(statBuf.st_mode) ) {
fprintf( stderr,
"%s: Input file %s is a directory.\n",
@@ -1448,7 +1451,7 @@
return;
}
}
- if ( srcMode == SM_F2F && !forceOverwrite && notAStandardFile ( inName, IN_FILENO )) {
+ if ( srcMode == SM_F2F && !forceOverwrite && notAStandardFile ( inName )) {
if (noisy)
fprintf ( stderr, "%s: Input file %s is not a normal file.\n",
progName, inName );
@@ -1473,7 +1476,7 @@
}
}
if ( srcMode == SM_F2F && !forceOverwrite &&
- (n=countHardLinks ( IN_FILENO, inName ) ) > 0) {
+ (n=countHardLinks ( inName ) ) > 0) {
fprintf ( stderr, "%s: Input file %s has %d other link%s.\n",
progName, inName, n, n > 1 ? "s" : "" );
setExit(1);
@@ -1576,7 +1579,7 @@
/*--- If there was an I/O error, we won't get here. ---*/
if ( magicNumberOK ) {
if ( srcMode == SM_F2F ) {
- applySavedTimeInfoToOutputFile ( outName );
+ applySavedTimeInfoToOutputFile ( OUT_FILENO );
deleteOutputOnInterrupt = False;
if ( !keepInputFiles ) {
IntNative retVal = remove ( inName );
@@ -1619,7 +1622,7 @@
FILE *inStr;
# endif
Bool allOK;
- struct MY_STATS statBuf;
+ struct MY_STAT statBuf;
deleteOutputOnInterrupt = False;
@@ -1647,7 +1650,7 @@
return;
}
if ( srcMode != SM_I2O ) {
- MY_STAT(inName, IN_FILENO, &statBuf, 0);
+ MY_STAT( inName, &statBuf );
if ( MY_S_ISDIR(statBuf.st_mode) ) {
fprintf( stderr,
"%s: Input file %s is a directory.\n",
More information about the svn-soc-all
mailing list