]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
(OS/2) Armor OS/2 against accidental deletion of files, too (patch by Daniel Kruse...
authorpweilbacher <pweilbacher@noemail.net>
Sat, 24 Jun 2006 12:38:59 +0000 (12:38 +0000)
committerpweilbacher <pweilbacher@noemail.net>
Sat, 24 Jun 2006 12:38:59 +0000 (12:38 +0000)
FossilOrigin-Name: f357efb373b8631dbe4455530d060020b070bea2

manifest
manifest.uuid
src/os.h
src/os_os2.c

index 809cb972a562cf52c06ddaaa5055c7007486ac3c..a5d18b75ed819171c8d01031706d8808c0efca0d 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C A\sfew\smore\stest\scases\sto\simprove\scoverage\sof\svirtual\stable\smodule\srelated\scode.\s(CVS\s3292)
-D 2006-06-24T11:51:33
+C (OS/2)\sArmor\sOS/2\sagainst\saccidental\sdeletion\sof\sfiles,\stoo\s(patch\sby\sDaniel\sKruse,\sverified\sby\sme)\s(CVS\s3293)
+D 2006-06-24T12:39:00
 F Makefile.in f839b470345d3cb4b0644068474623fe2464b5d3
 F Makefile.linux-gcc 2d8574d1ba75f129aba2019f0b959db380a90935
 F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
@@ -52,9 +52,9 @@ F src/loadext.c b08c5f5a57b78afd8cd0dd1677e98519e18db56f
 F src/main.c b71877c9c3cd491417fc7d4bbc785ddab411034c
 F src/md5.c c5fdfa5c2593eaee2e32a5ce6c6927c986eaf217
 F src/os.c 59f05de8c5777c34876607114a2fbe55ae578235
-F src/os.h ac2ccb4f48902c1611a7e1f171eb81d17e3b8eb2
+F src/os.h 3fd6a022bafd620fdfd779a51dccb42f31c97f75
 F src/os_common.h 108cd719c96a2b714b64e02aeabbd40684274e6a
-F src/os_os2.c 123cb394c069bc8c6a305830ffa2bc5f72e5b83a
+F src/os_os2.c 1cf00781716ae8f9ae1d886e819c55731249b3a8
 F src/os_os2.h e5f17dd69333632bbc3112881ea407c37d245eb3
 F src/os_test.c 49833426101f99aee4bb5f6a44b7c4b2029fda1c
 F src/os_test.h 903c93554c23d88f34f667f1979e4a1cee792af3
@@ -373,7 +373,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9
 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
 F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
-P 0c5f4ee39cb76747cf01398867fed2c7ae3edc84
-R 2d3154b85b2d1db6b9e65d6433ce4721
-U danielk1977
-Z c6c7a990fc60a21156c29c57e99dddc4
+P 255aa9121a2ef4fec7fa5523e52969acc96f4b40
+R 2b758788fcbcea37bf1aacb95194485d
+U pweilbacher
+Z dba44f16a572c90023dd1e7bf0447866
index a116f283f3de13d27b9ebb6fe05acde23f9ffc1f..8438a79a2fd577304b7a871ab6f45bd09db00c77 100644 (file)
@@ -1 +1 @@
-255aa9121a2ef4fec7fa5523e52969acc96f4b40
\ No newline at end of file
+f357efb373b8631dbe4455530d060020b070bea2
\ No newline at end of file
index 686250ea0c32d9e88bb9f80a3d9aec670cb4d01e..4433f5d0223a4db3ea42a82a8b83150c39fcaf24 100644 (file)
--- a/src/os.h
+++ b/src/os.h
@@ -28,7 +28,7 @@
 #     define OS_WIN 1
 #     define OS_UNIX 0
 #     define OS_OS2 0
-#   elif defined(_EMX_) || defined(_OS2) || defined(OS2) || defined(OS_OS2) || defined(__OS2__)
+#   elif defined(_EMX_) || defined(_OS2) || defined(OS2) || defined(_OS2_) || defined(__OS2__)
 #     define OS_WIN 0
 #     define OS_UNIX 0
 #     define OS_OS2 1
 #endif
 
 
+
+
 /*
 ** If using an alternative OS interface, then we must have an "os_other.h"
 ** header file available for that interface.  Presumably the "os_other.h"
index ee68d5817f0295913b2bf0d99434bef7d21d6215..3e5bac90f24ac5a859e789febd196b4dbde4e39a 100644 (file)
@@ -53,9 +53,11 @@ struct os2File {
 ** Delete the named file
 */
 int sqlite3Os2Delete( const char *zFilename ){
-  DosDelete( (PSZ)zFilename );
+  APIRET rc = NO_ERROR;
+
+  rc = DosDelete( (PSZ)zFilename );
   TRACE2( "DELETE \"%s\"\n", zFilename );
-  return SQLITE_OK;
+  return rc == NO_ERROR ? SQLITE_OK : SQLITE_IOERR;
 }
 
 /*
@@ -92,7 +94,7 @@ int sqlite3Os2OpenReadWrite(
   os2File  f;
   HFILE    hf;
   ULONG    ulAction;
-  APIRET   rc;
+  APIRET   rc = NO_ERROR;
 
   assert( *pld == 0 );
   rc = DosOpen( (PSZ)zFilename, &hf, &ulAction, 0L,
@@ -142,7 +144,7 @@ int sqlite3Os2OpenExclusive( const char *zFilename, OsFile **pld, int delFlag ){
   os2File  f;
   HFILE    hf;
   ULONG    ulAction;
-  APIRET   rc;
+  APIRET   rc = NO_ERROR;
 
   assert( *pld == 0 );
   rc = DosOpen( (PSZ)zFilename, &hf, &ulAction, 0L, FILE_NORMAL,
@@ -174,7 +176,7 @@ int sqlite3Os2OpenReadOnly( const char *zFilename, OsFile **pld ){
   os2File  f;
   HFILE    hf;
   ULONG    ulAction;
-  APIRET   rc;
+  APIRET   rc = NO_ERROR;
 
   assert( *pld == 0 );
   rc = DosOpen( (PSZ)zFilename, &hf, &ulAction, 0L,
@@ -262,18 +264,19 @@ int sqlite3Os2TempFileName( char *zBuf ){
 */
 int os2Close( OsFile **pld ){
   os2File *pFile;
-  if( pld && (pFile = (os2File*)*pld)!=0 ){
+  APIRET rc = NO_ERROR;
+  if( pld && (pFile = (os2File*)*pld) != 0 ){
     TRACE2( "CLOSE %d\n", pFile->h );
-    DosClose( pFile->h );
+    rc = DosClose( pFile->h );
     pFile->locktype = NO_LOCK;
     if( pFile->delOnClose != 0 ){
-        DosForceDelete( pFile->pathToDel );
+        rc = DosForceDelete( pFile->pathToDel );
     }
     *pld = 0;
     OpenCounter( -1 );
   }
 
-  return SQLITE_OK;
+  return rc == NO_ERROR ? SQLITE_OK : SQLITE_IOERR;
 }
 
 /*
@@ -295,7 +298,7 @@ int os2Read( OsFile *id, void *pBuf, int amt ){
 ** or some other error code on failure.
 */
 int os2Write( OsFile *id, const void *pBuf, int amt ){
-  APIRET rc=NO_ERROR;
+  APIRET rc = NO_ERROR;
   ULONG wrote;
   assert( id!=0 );
   SimulateIOError( SQLITE_IOERR );
@@ -314,7 +317,7 @@ int os2Write( OsFile *id, const void *pBuf, int amt ){
 ** Move the read/write pointer in a file.
 */
 int os2Seek( OsFile *id, i64 offset ){
-  APIRET rc;
+  APIRET rc = NO_ERROR;
   ULONG filePointer = 0L;
   assert( id!=0 );
   rc = DosSetFilePtr( ((os2File*)id)->h, offset, FILE_BEGIN, &filePointer );
@@ -328,7 +331,7 @@ int os2Seek( OsFile *id, i64 offset ){
 int os2Sync( OsFile *id, int dataOnly ){
   assert( id!=0 );
   TRACE3( "SYNC %d lock=%d\n", ((os2File*)id)->h, ((os2File*)id)->locktype );
-  return DosResetBuffer( ((os2File*)id)->h ) ? SQLITE_IOERR : SQLITE_OK;
+  return DosResetBuffer( ((os2File*)id)->h ) == NO_ERROR ? SQLITE_OK : SQLITE_IOERR;
 }
 
 /*
@@ -344,7 +347,7 @@ int sqlite3Os2SyncDirectory( const char *zDirname ){
 ** Truncate an open file to a specified size
 */
 int os2Truncate( OsFile *id, i64 nByte ){
-  APIRET rc;
+  APIRET rc = NO_ERROR;
   ULONG upperBits = nByte>>32;
   assert( id!=0 );
   TRACE3( "TRUNCATE %d %lld\n", ((os2File*)id)->h, nByte );
@@ -361,7 +364,7 @@ int os2Truncate( OsFile *id, i64 nByte ){
 ** Determine the current size of a file in bytes
 */
 int os2FileSize( OsFile *id, i64 *pSize ){
-  APIRET rc;
+  APIRET rc = NO_ERROR;
   FILESTATUS3 fsts3FileInfo;
   memset(&fsts3FileInfo, 0, sizeof(fsts3FileInfo));
   assert( id!=0 );
@@ -453,7 +456,7 @@ int sqlite3Os2IsDirWritable( char *zDirname ){
 */
 int os2Lock( OsFile *id, int locktype ){
   APIRET rc = SQLITE_OK;    /* Return code from subroutines */
-  APIRET res = 1;           /* Result of a windows lock call */
+  APIRET res = NO_ERROR;    /* Result of an OS/2 lock call */
   int newLocktype;       /* Set id->locktype to this value before exiting */
   int gotPendingLock = 0;/* True if we acquired a PENDING lock this time */
   FILELOCK  LockArea,
@@ -583,7 +586,7 @@ int os2Lock( OsFile *id, int locktype ){
 ** non-zero, otherwise zero.
 */
 int os2CheckReservedLock( OsFile *id ){
-  APIRET rc;
+  APIRET rc = NO_ERROR;
   os2File *pFile = (os2File*)id;
   assert( pFile!=0 );
   if( pFile->locktype>=RESERVED_LOCK ){
@@ -780,7 +783,7 @@ int sqlite3Os2RandomSeed( char *zBuf ){
   ** in the random seed.
   **
   ** When testing, initializing zBuf[] to zero is all we do.  That means
-  ** that we always use the same random number sequence.* This makes the
+  ** that we always use the same random number sequence. This makes the
   ** tests repeatable.
   */
   memset( zBuf, 0, 256 );