- MFH: locateName should not change the state/error, can be used to test

an entry
This commit is contained in:
Pierre Joye 2006-08-13 23:43:11 +00:00
parent 8d07735332
commit 284ce40c4a
2 changed files with 22 additions and 9 deletions

View file

@ -1153,6 +1153,7 @@ ZIPARCHIVE_METHOD(locateName)
char *name;
int name_len;
long flags = 0;
long idx = -1;
if (!this) {
RETURN_FALSE;
@ -1169,7 +1170,18 @@ ZIPARCHIVE_METHOD(locateName)
RETURN_FALSE;
}
RETURN_LONG((long)zip_name_locate(intern, (const char *)name, flags))
idx = (long)zip_name_locate(intern, (const char *)name, flags);
if (idx<0) {
/* reset the error */
if (intern->error.str) {
_zip_error_fini(&intern->error);
}
_zip_error_init(&intern->error);
RETURN_FALSE;
} else {
RETURN_LONG(idx);
}
}
/* }}} */

View file

@ -31,15 +31,16 @@ if (!$zip->open($file)) {
exit('failed');
}
echo $zip->locateName('entry1.txt') . "\n";
echo $zip->locateName('eNtry2.txt') . "\n";
echo $zip->locateName('eNtry2.txt', ZIPARCHIVE::FL_NOCASE) . "\n";
echo $zip->locateName('enTRy2d.txt', ZIPARCHIVE::FL_NOCASE|ZIPARCHIVE::FL_NODIR) . "\n";
var_dump($zip->locateName('entry1.txt'));
var_dump($zip->locateName('eNtry2.txt'));
var_dump($zip->locateName('eNtry2.txt', ZIPARCHIVE::FL_NOCASE));
var_dump($zip->locateName('enTRy2d.txt', ZIPARCHIVE::FL_NOCASE|ZIPARCHIVE::FL_NODIR));
$zip->close();
?>
--EXPECTF--
0
-1
1
2
int(0)
bool(false)
int(1)
int(2)