Новости | 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; }