diff options
author | Andi Gutmans <andi@php.net> | 1999-08-25 16:24:14 +0000 |
---|---|---|
committer | Andi Gutmans <andi@php.net> | 1999-08-25 16:24:14 +0000 |
commit | 7a9ad9d0c81ef11fa05a69c1819c4377c4b93cd0 (patch) | |
tree | cc331dbc4a72610fc52f79398c11daa349525dab /ext/standard/fsock.c | |
parent | c5d640d8af3b16cebbb756a6c39b19d3bf7d7676 (diff) | |
download | php-git-7a9ad9d0c81ef11fa05a69c1819c4377c4b93cd0.tar.gz |
Make fopen() work with URL's in Win32
Diffstat (limited to 'ext/standard/fsock.c')
-rw-r--r-- | ext/standard/fsock.c | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/ext/standard/fsock.c b/ext/standard/fsock.c index c23ae5eef9..3a653af83f 100644 --- a/ext/standard/fsock.c +++ b/ext/standard/fsock.c @@ -74,8 +74,8 @@ extern int le_fp; #define FREE_SOCK if(socketd >= 0) close(socketd); efree(sock); if (key) efree(key) -#define SEARCHCR \ - p = memchr(READPTR(sock), '\n', MIN(TOREAD(sock), maxlen - 1)); +#define SEARCHCR() \ + p = memchr(READPTR(sock), '\n', MIN(TOREAD(sock), maxlen)); #if WIN32|WINNT #define EWOULDBLOCK WSAEWOULDBLOCK @@ -598,17 +598,22 @@ char *_php3_sock_fgets(char *buf, size_t maxlen, int socket) size_t amount = 0; SOCK_FIND(sock, socket); - SEARCHCR; + if (maxlen==0) { + buf[0] = 0; + return buf; + } + + SEARCHCR(); if(!p) { if(sock->is_blocked) { - while(!p && !sock->eof && TOREAD(sock) < maxlen - 1) { + while(!p && !sock->eof && TOREAD(sock) < maxlen) { _php3_sock_read_internal(sock); - SEARCHCR; + SEARCHCR(); } } else { _php3_sock_read(sock); - SEARCHCR; + SEARCHCR(); } } @@ -619,7 +624,7 @@ char *_php3_sock_fgets(char *buf, size_t maxlen, int socket) amount = TOREAD(sock); } - amount = MIN(amount, maxlen - 1); + amount = MIN(amount, maxlen); if(amount > 0) { memcpy(buf, READPTR(sock), amount); @@ -693,14 +698,12 @@ size_t _php3_sock_fread(char *ptr, size_t size, int socket) /* }}} */ /* {{{ module start/shutdown functions */ - /* {{{ _php3_sock_destroy */ -#ifndef ZTS -static int _php3_msock_destroy(int *data) + /* {{{ php_msock_destroy */ +int php_msock_destroy(int *data) { close(*data); return 1; } -#endif /* }}} */ /* {{{ php3_minit_fsock */ @@ -708,7 +711,7 @@ PHP_MINIT_FUNCTION(fsock) { #ifndef ZTS zend_hash_init(&PG(ht_fsock_keys), 0, NULL, NULL, 1); - zend_hash_init(&PG(ht_fsock_socks), 0, NULL, (int (*)(void *))_php3_msock_destroy, 1); + zend_hash_init(&PG(ht_fsock_socks), 0, NULL, (int (*)(void *))php_msock_destroy, 1); #endif return SUCCESS; } |