| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Александр Петросян (PAF) 27.05.2003 17:32
огромное спасибо за помощь.#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
const size_t READ_POST_CHUNK_SIZE=0x400*0x400; // 1M
size_t min(size_t a, size_t b) {
return a<b?a:b;
}
size_t read_post(char *buf, size_t max_bytes) {
size_t read_size=0;
do {
ssize_t chunk_size=read(fileno(stdin),
buf+read_size, min(READ_POST_CHUNK_SIZE, max_bytes-read_size));
if(chunk_size<=0)
break;
read_size+=chunk_size;
} while(read_size<max_bytes);
return read_size;
}
int main(){
char *content_length_cstr=getenv("CONTENT_LENGTH");
int content_length_int=content_length_cstr?atoi(getenv("CONTENT_LENGTH")):-1;
char buf[0x400*0x400*2];
memset(buf, 0, sizeof(buf));
size_t read_int=read_post(buf, sizeof(buf));
if(read_int>0)
buf[read_int]=0;
printf("content-type:text/plain\n\nlength=%d\ndata_len=%d\ndata='%s'",
content_length_int,
read_int,
buf);
return 0;
}