/*
- Copyright (C) 2000-2004 SKYRIX Software AG
+ Copyright (C) 2000-2005 SKYRIX Software AG
- This file is part of OpenGroupware.org.
+ This file is part of SOPE.
- OGo is free software; you can redistribute it and/or modify it under
+ SOPE is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
- OGo is distributed in the hope that it will be useful, but WITHOUT ANY
+ SOPE 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 Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public
- License along with OGo; see the file COPYING. If not, write to the
+ License along with SOPE; see the file COPYING. If not, write to the
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
*/
#include <NGObjWeb/WOResponse.h>
#include <NGObjWeb/WORequest.h>
#include "common.h"
+#include <string.h>
@implementation WOSimpleHTTPParser
static NSString *ContentLengthHeaderName = @"content-length";
-static NSString *stringForHeaderName(unsigned char *p) {
+static NSString *stringForHeaderName(char *p) { /* Note: arg is _not_ const */
/*
process header name
we try to be smart to avoid creation of NSString objects ...
*/
register unsigned len;
- register unsigned char c1;
+ register char c1;
if ((len = strlen(p)) == 0)
return @"";
{
unsigned char *t;
- for (t = p; *t != '\0'; t++)
+ for (t = (unsigned char *)p; *t != '\0'; t++)
*t = tolower(*t);
}
return [[NSString alloc] initWithCString:p];
if (heavyDebugOn)
printf("read header line: '%s'\n", self->lineBuffer);
- if (strlen(self->lineBuffer) == 0) {
+ if (strlen((char *)self->lineBuffer) == 0) {
/* found end of header */
break;
}
}
/* find key/value separator */
- if ((v = index(p, ':')) == NULL) {
+ if ((v = (unsigned char *)index((char *)p, ':')) == NULL) {
[self warnWithFormat:@"got malformed header line: '%s'",
self->lineBuffer];
continue;
if (*v != '\0') {
/* trim trailing spaces */
- for (idx = strlen(v) - 1; idx >= 0; idx--) {
+ for (idx = strlen((char *)v) - 1; idx >= 0; idx--) {
if ((v[idx] != ' ' && v[idx] != '\t'))
break;
}
}
- headerName = stringForHeaderName(p);
- headerValue = [[NSStringClass alloc] initWithCString:v];
+ headerName = stringForHeaderName((char *)p);
+ headerValue = [[NSStringClass alloc] initWithCString:(char *)v];
if (headerName == ContentLengthHeaderName)
- self->clen = atoi(v);
+ self->clen = atoi((char *)v);
if (headerName != nil || headerValue != nil) {
if (self->headers == nil)
// body. The current implementation is far from optimal and only added
// for Mono compatibility (and actually produces the same behaviour
// like with HTTP/1.0 ...)
- static unsigned char *contStatLine =
+ static char *contStatLine =
"HTTP/1.0 100 Continue\r\n"
"content-length: 0\r\n"
"\r\n";
- static unsigned char *failStatLine =
+ static char *failStatLine =
"HTTP/1.0 417 Expectation Failed\r\n"
"content-length: 0\r\n"
"\r\n";
- unsigned char *respline = NULL;
+ char *respline = NULL;
BOOL ok = YES;
[self debugWithFormat:@"process 100 continue on IO: %@", self->io];
{
/* sample line: "GET / HTTP/1.0" */
- unsigned char *p, *t;
+ char *p, *t;
/* parse method */
- p = self->lineBuffer;
+ p = (char *)self->lineBuffer;
if ((t = index(p, ' ')) == NULL) {
[self logWithFormat:@"got broken request line '%s'", self->lineBuffer];
return nil;
{
/* sample line: "HTTP/1.0 200 OK" */
- unsigned char *p, *t;
+ char *p, *t;
/* version */
- p = self->lineBuffer;
+ p = (char *)self->lineBuffer;
if ((t = index(p, ' ')) == NULL) {
[self logWithFormat:@"got broken response line '%s'", self->lineBuffer];
return nil;