static int phar_open_loaded(char *fname, int fname_len, char *alias, int alias_len, int options, phar_archive_data** pphar, char **error TSRMLS_DC) /* {{{ */
{
phar_archive_data *phar;
+#ifdef PHP_WIN32
+ char *unixfname;
+#endif
if (error) {
*error = NULL;
}
+#ifdef PHP_WIN32
+ unixfname = estrndup(fname, fname_len);
+ phar_unixify_path_separators(unixfname, fname_len);
+ if (SUCCESS == phar_get_archive(&phar, unixfname, fname_len, alias, alias_len, error TSRMLS_CC)
+ && ((alias && fname_len == phar->fname_len
+ && !strncmp(unixfname, phar->fname, fname_len)) || !alias)
+ ) {
+ efree(unixfname);
+#else
if (SUCCESS == phar_get_archive(&phar, fname, fname_len, alias, alias_len, error TSRMLS_CC)
&& ((alias && fname_len == phar->fname_len
&& !strncmp(fname, phar->fname, fname_len)) || !alias)
) {
+#endif
/* logic above is as follows:
If an explicit alias was requested, ensure the filename passed in
matches the phar's filename.
}
return SUCCESS;
} else {
+#ifdef PHP_WIN32
+ efree(unixfname);
+#endif
if (pphar) {
*pphar = NULL;
}