mirror of
https://github.com/php/php-src.git
synced 2024-11-30 05:13:56 +08:00
92 lines
3.7 KiB
C
92 lines
3.7 KiB
C
/*
|
|
+----------------------------------------------------------------------+
|
|
| Muscat/Empower 1.5 Module for PHP version 4.0 |
|
|
+----------------------------------------------------------------------+
|
|
| Copyright (c) 2000 Ananova Ltd |
|
|
| http://www.ananova.com |
|
|
| Ananova Ltd, PO Box 36, Leeds, LS11 5ZA, United Kingdom |
|
|
+----------------------------------------------------------------------+
|
|
| This program is free software; you can redistribute it and/or |
|
|
| modify it under the terms of the GNU General Public License |
|
|
| as published by the Free Software Foundation; either version 2 |
|
|
| of the License, or (at your option) any later version. |
|
|
| |
|
|
| This program is distributed in the hope that it will be useful, |
|
|
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
|
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
|
| GNU General Public License for more details. |
|
|
| |
|
|
| You should have received a copy of the GNU General Public License |
|
|
| along with this program; if not, write to the Free Software |
|
|
| Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
|
|
| MA 02111-1307, USA. |
|
|
| |
|
|
| A copy is availble at http://www.gnu.org/copyleft/gpl.txt |
|
|
+----------------------------------------------------------------------+
|
|
| Author: Sam Liddicott <sam@ananova.com> |
|
|
+----------------------------------------------------------------------+
|
|
*/
|
|
|
|
|
|
#include "php.h"
|
|
#include "php_ini.h"
|
|
#include "php_muscat.h"
|
|
|
|
#if HAVE_MUSCAT
|
|
#include "muscat_net.h"
|
|
|
|
int _net_muscat_close(struct MuscatNet_handle *handle) {
|
|
|
|
}
|
|
|
|
int _net_muscat_give(struct MuscatNet_handle *handle, char* string) {
|
|
Z_TYPE(handle->muscat_response)=' ';
|
|
SOCK_WRITEL(string,strlen(string),handle->socketd);
|
|
SOCK_WRITEL("\n",1,handle->socketd);
|
|
}
|
|
|
|
int _net_muscat_get(struct MuscatNet_handle * handle) {
|
|
char *buf;
|
|
char *end;
|
|
size_t ammount;
|
|
int clen;
|
|
int rlen;
|
|
|
|
if (Z_TYPE(handle->muscat_response) == 'P') return GIVING;
|
|
|
|
// we can use bcom ourselves!!!
|
|
// read in the 6 byte header...
|
|
if (end=php_sock_fgets((char *)&(handle->muscat_response.bcom), 6, handle->socketd)==NULL) {
|
|
ammount=(char *) end - (char *) (&(handle->muscat_response.bcom)) +1;
|
|
return 1; // NEED TO RAISE ERROR HERE
|
|
}
|
|
ammount=strlen((char *)&(handle->muscat_response.bcom));
|
|
if (handle->muscat_response.bcom[5]!=' ') {
|
|
printf("%s 5 was not space but [%d]\n",&handle->muscat_response.bcom,handle->muscat_response.bcom[5]);
|
|
return 1; // NEED TO RAISE ERROR HERE
|
|
}
|
|
handle->muscat_response.bcom[5]=0;
|
|
Z_TYPE(handle->muscat_response)=handle->muscat_response.bcom[0];
|
|
// now read bcom[1-4] and turn to an int
|
|
clen=atoi(&(handle->muscat_response.bcom[1]))+1;
|
|
|
|
// now read length bytes in!
|
|
buf=emalloc(clen+1);
|
|
memset(buf,0,clen+1);
|
|
|
|
if (end=php_sock_fgets(buf, clen, handle->socketd)==NULL) {
|
|
ammount=(char *) end - (char *) (&(handle->muscat_response.bcom)) +1;
|
|
}
|
|
handle->muscat_response.p=buf;
|
|
handle->muscat_response.length=strlen(buf);
|
|
return 0;
|
|
}
|
|
|
|
void _net_discard(struct MuscatNet_handle * handle) {
|
|
while(Z_TYPE(handle->muscat_response)!='P') {
|
|
if (0!=_net_muscat_get(handle)) break;
|
|
}
|
|
}
|
|
|
|
#endif /* HAVE_MUSCAT */
|