1
0
mirror of https://github.com/php/php-src.git synced 2026-04-19 22:11:12 +02:00

- More virtual_cwd work

This commit is contained in:
Andi Gutmans
2000-04-01 18:21:03 +00:00
parent a73ba4b238
commit 57b398af1f
2 changed files with 25 additions and 3 deletions

View File

@@ -16,6 +16,8 @@ CWD_API int cwd_globals_id;
cwd_globals_struct cwd_globals;
#endif
cwd_state true_global_cwd_state;
#ifndef PHP_WIN32
#include <unistd.h>
#endif
@@ -108,9 +110,29 @@ static int php_is_file_ok(const cwd_state *state)
return (1);
}
void virtual_cwd_init()
static void cwd_globals_ctor(cwd_globals_struct *cwd_globals)
{
/* Initialize the true global cwd */
cwd_globals->cwd.cwd = (char *) malloc(true_global_cwd_state.cwd_length+1);
memcpy(cwd_globals->cwd.cwd, true_global_cwd_state.cwd, true_global_cwd_state.cwd_length+1);
cwd_globals->cwd.cwd_length = true_global_cwd_state.cwd_length;
}
void virtual_cwd_startup()
{
char cwd[1024]; /* Should probably use system define here */
char *result;
result = getcwd(cwd, sizeof(cwd));
if (!result) {
cwd[0] = '\0';
}
true_global_cwd_state.cwd = strdup(cwd);
true_global_cwd_state.cwd_length = strlen(cwd);
#ifdef ZTS
cwd_globals_id = ts_allocate_id(sizeof(cwd_globals_struct), (ts_allocate_ctor) cwd_globals_ctor, NULL);
#else
cwd_globals_ctor(&cwd_globals);
#endif
}
char *virtual_getcwd_ex(int *length)

View File

@@ -20,7 +20,7 @@ typedef struct _cwd_state {
typedef int (*verify_path_func)(const cwd_state *);
void virtual_cwd_init();
void virtual_cwd_startup();
char *virtual_getcwd_ex(int *length);
char *virtual_getcwd(char *buf, size_t size);
int virtual_chdir(char *path);