/* reverse filename -- reverses a file in place */ #include #include #include #include #include #include /* Print error message and die */ void error(char* msg) { perror(msg); exit(1); } /* File name in argv[1] */ int main(int argc, char** argv) { char *buf; /* Array holding file content */ int size, fd; /* size of buf, file descriptor */ char *p1, *p2; /* Read file into buf */ if (argc<2) error("no filename"); fd=open(argv[1],O_RDWR); if (fd==-1) error(argv[1]); size=lseek(fd,0,SEEK_END); /* get size */ if (size==-1) error("lseek"); buf=(char*)malloc(size); if (buf==0) error("out of memory"); if (lseek(fd,0,SEEK_SET)) error("lseek"); if (read(fd,buf,size)!=size) error("read"); /* Reverse buf */ for (p1=buf,p2=buf+size-1; p1