summaryrefslogtreecommitdiff
path: root/ext/standard/fsock.c
diff options
context:
space:
mode:
authorAndi Gutmans <andi@php.net>1999-08-25 16:24:14 +0000
committerAndi Gutmans <andi@php.net>1999-08-25 16:24:14 +0000
commit7a9ad9d0c81ef11fa05a69c1819c4377c4b93cd0 (patch)
treecc331dbc4a72610fc52f79398c11daa349525dab /ext/standard/fsock.c
parentc5d640d8af3b16cebbb756a6c39b19d3bf7d7676 (diff)
downloadphp-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.c27
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;
}