From 11a46551e79c5586558fd4f35480b75d122e9648 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Wed, 15 Feb 2012 20:06:47 +0000 Subject: [PATCH] Put the filename in more of the exceptions thrown --- includes/Cdb_PHP.php | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/includes/Cdb_PHP.php b/includes/Cdb_PHP.php index e1e6d28b35..4f72f5f276 100644 --- a/includes/Cdb_PHP.php +++ b/includes/Cdb_PHP.php @@ -82,6 +82,9 @@ class CdbFunctions { * CDB reader class */ class CdbReader_PHP extends CdbReader { + /** The filename */ + var $fileName; + /** The file handle */ var $handle; @@ -110,9 +113,10 @@ class CdbReader_PHP extends CdbReader { * @param $fileName string */ function __construct( $fileName ) { + $this->fileName = $fileName; $this->handle = fopen( $fileName, 'rb' ); if ( !$this->handle ) { - throw new MWException( 'Unable to open CDB file "' . $fileName . '"' ); + throw new MWException( 'Unable to open CDB file "' . $this->fileName . '".' ); } $this->findStart(); } @@ -160,7 +164,8 @@ class CdbReader_PHP extends CdbReader { protected function read( $length, $pos ) { if ( fseek( $this->handle, $pos ) == -1 ) { // This can easily happen if the internal pointers are incorrect - throw new MWException( __METHOD__.': seek failed, file may be corrupted.' ); + throw new MWException( + 'Seek failed, file "' . $this->fileName . '" may be corrupted.' ); } if ( $length == 0 ) { @@ -169,7 +174,8 @@ class CdbReader_PHP extends CdbReader { $buf = fread( $this->handle, $length ); if ( $buf === false || strlen( $buf ) !== $length ) { - throw new MWException( __METHOD__.': read from CDB file failed, file may be corrupted' ); + throw new MWException( + 'Read from CDB file failed, file "' . $this->fileName . '" may be corrupted.' ); } return $buf; } @@ -182,7 +188,8 @@ class CdbReader_PHP extends CdbReader { protected function unpack31( $s ) { $data = unpack( 'V', $s ); if ( $data[1] > 0x7fffffff ) { - throw new MWException( __METHOD__.': error in CDB file, integer too big' ); + throw new MWException( + 'Error in CDB file "' . $this->fileName . '", integer too big.' ); } return $data[1]; } @@ -270,13 +277,15 @@ class CdbWriter_PHP extends CdbWriter { $this->tmpFileName = $fileName . '.tmp.' . mt_rand( 0, 0x7fffffff ); $this->handle = fopen( $this->tmpFileName, 'wb' ); if ( !$this->handle ) { - throw new MWException( 'Unable to open CDB file for write "' . $fileName . '"' ); + throw new MWException( + 'Unable to open CDB file "' . $this->tmpFileName . '" for write.' ); } $this->hplist = array(); $this->numentries = 0; $this->pos = 2048; // leaving space for the pointer array, 256 * 8 if ( fseek( $this->handle, $this->pos ) == -1 ) { - throw new MWException( __METHOD__.': fseek failed' ); + throw new MWException( + 'fseek failed in file "' . $this->tmpFileName . '".' ); } } @@ -326,7 +335,7 @@ class CdbWriter_PHP extends CdbWriter { protected function write( $buf ) { $len = fwrite( $this->handle, $buf ); if ( $len !== strlen( $buf ) ) { - throw new MWException( 'Error writing to CDB file.' ); + throw new MWException( 'Error writing to CDB file "'.$this->tmpFileName.'".' ); } } @@ -337,7 +346,8 @@ class CdbWriter_PHP extends CdbWriter { protected function posplus( $len ) { $newpos = $this->pos + $len; if ( $newpos > 0x7fffffff ) { - throw new MWException( 'A value in the CDB file is too large' ); + throw new MWException( + 'A value in the CDB file "'.$this->tmpFileName.'" is too large.' ); } $this->pos = $newpos; } @@ -366,10 +376,10 @@ class CdbWriter_PHP extends CdbWriter { */ protected function addbegin( $keylen, $datalen ) { if ( $keylen > 0x7fffffff ) { - throw new MWException( __METHOD__.': key length too long' ); + throw new MWException( 'Key length too long in file "'.$this->tmpFileName.'".' ); } if ( $datalen > 0x7fffffff ) { - throw new MWException( __METHOD__.': data length too long' ); + throw new MWException( 'Data length too long in file "'.$this->tmpFileName.'".' ); } $buf = pack( 'VV', $keylen, $datalen ); $this->write( $buf ); @@ -444,7 +454,7 @@ class CdbWriter_PHP extends CdbWriter { // Write the pointer array at the start of the file rewind( $this->handle ); if ( ftell( $this->handle ) != 0 ) { - throw new MWException( __METHOD__.': Error rewinding to start of file' ); + throw new MWException( 'Error rewinding to start of file "'.$this->tmpFileName.'".' ); } $this->write( $final ); } -- 2.20.1