Commit: 3168b7b0574eff976dfb63aac43822db493b721a Author: krakjoe <joe.watk...@live.co.uk> Tue, 12 Nov 2013 12:38:04 +0000 Parents: 9e47ce64acb74509a1c396f2b234a1b474028ce4 Branches: PHP-5.6
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=3168b7b0574eff976dfb63aac43822db493b721a Log: more windows Changed paths: M phpdbg_list.c Diff: diff --git a/phpdbg_list.c b/phpdbg_list.c index fe14b1d..9f2c6a2 100644 --- a/phpdbg_list.c +++ b/phpdbg_list.c @@ -20,8 +20,10 @@ #include <stdio.h> #include <string.h> #include <sys/stat.h> -#include <sys/mman.h> -#include <unistd.h> +#ifndef _WIN32 +# include <sys/mman.h> +# include <unistd.h> +#endif #include <fcntl.h> #include "phpdbg.h" #include "phpdbg_list.h" @@ -30,14 +32,19 @@ void phpdbg_list_file(const char *filename, long count, long offset TSRMLS_DC) / { unsigned char *mem, *pos, *last_pos, *end_pos; struct stat st; - int fd, all_content = (count == 0); +#ifndef _WIN32 + int fd; +#else + HANDLE fd, map; +#endif + int all_content = (count == 0); unsigned int line = 0, displayed = 0; if (VCWD_STAT(filename, &st) == -1) { printf("[Failed to stat file %s]\n", filename); return; } - +#ifndef _WIN32 if ((fd = VCWD_OPEN(filename, O_RDONLY)) == -1) { printf("[Failed to open file %s to list]\n", filename); return; @@ -45,7 +52,29 @@ void phpdbg_list_file(const char *filename, long count, long offset TSRMLS_DC) / last_pos = mem = mmap(0, st.st_size, PROT_READ, MAP_SHARED, fd, 0); end_pos = mem + st.st_size; +#else + fd = CreateFile(filename, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); + if (fd == INVALID_HANDLE_VALUE) { + printf("[Failed to open file!]\n"); + return; + } + + map = CreateFileMapping(fd, NULL, PAGE_EXECUTE_READ, 0, 0, 0); + if (map == NULL) { + printf("[Failed to map file!]\n"); + CloseHandle(fd); + return; + } + last_pos = mem = (char*) MapViewOfFile(map, FILE_MAP_READ, 0, 0, 0); + if (mem == NULL) { + printf("[Failed to map file in memory]\n"); + CloseHandle(map); + CloseHandle(fd); + return; + } + end_pos = mem + st.st_size; +#endif while (1) { pos = memchr(last_pos, '\n', end_pos - last_pos); @@ -70,9 +99,14 @@ void phpdbg_list_file(const char *filename, long count, long offset TSRMLS_DC) / } } +#ifndef _WIN32 munmap(mem, st.st_size); -out: close(fd); +#else + UnmapViewOfFile(mem); + CloseHandle(map); + CloseHandle(fd); +#endif } /* }}} */ void phpdbg_list_function(const zend_function *fbc TSRMLS_DC) /* {{{ */ @@ -88,3 +122,4 @@ void phpdbg_list_function(const zend_function *fbc TSRMLS_DC) /* {{{ */ phpdbg_list_file(ops->filename, ops->line_end - ops->line_start + 1, ops->line_start TSRMLS_CC); } /* }}} */ + -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php