#include "csapp.h" /* Read in all data from stdin and write it out in a reverse order --- using only system APIs, so no malloc() for fread() or fwrite() */ int main() { char *in, *out; int got = 0, done = 0, n, i,curr_sz = 4096; char *tmp; in = mmap(NULL,curr_sz,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0); n = 0; do { if(curr_sz == n) { curr_sz *= 2; tmp = mmap(NULL,curr_sz,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0); memcpy(tmp,in,n); in = tmp; } got = Read(0, in+n, curr_sz-n); n += got; } while(got != 0); out = mmap(NULL,n,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0); for (i = 0; i < n; i++) out[n-1-i] = in[i]; while(done < n) { done += Write(1, out+done, n-done); } return 0; }