]> granicus.if.org Git - php/commitdiff
Fix chdir() under Windows 9x/ME
authorZeev Suraski <zeev@php.net>
Thu, 3 May 2001 15:50:37 +0000 (15:50 +0000)
committerZeev Suraski <zeev@php.net>
Thu, 3 May 2001 15:50:37 +0000 (15:50 +0000)
TSRM/tsrm_virtual_cwd.c

index b93c5e51eb6de976071f758bc31fa7c8aee801af..80e09e5decd0c860e483da889d3c059da1fdcbf6 100644 (file)
@@ -364,10 +364,14 @@ CWD_API int virtual_file_ex(cwd_state *state, const char *path, verify_path_func
                        }
                } else if (!IS_DIRECTORY_CURRENT(ptr, ptr_length)) {
                        state->cwd = (char *) realloc(state->cwd, state->cwd_length+ptr_length+1+1);
-                       state->cwd[state->cwd_length] = DEFAULT_SLASH;
-                       memcpy(&state->cwd[state->cwd_length+1], ptr, ptr_length+1);
-                       state->cwd_length += (ptr_length+1);
-               }
+#ifdef TSRM_WIN32
+                       /* Windows 9x will consider C:\\Foo as a network path. Avoid it. */
+                       if (state->cwd[state->cwd_length-1]!=DEFAULT_SLASH) {
+                               state->cwd[state->cwd_length++] = DEFAULT_SLASH;
+                       }
+#endif
+                       memcpy(&state->cwd[state->cwd_length], ptr, ptr_length+1);
+                       state->cwd_length += ptr_length;                }
                ptr = tsrm_strtok_r(NULL, TOKENIZER_STRING, &tok);
        }