#include #include #include #include #ifdef __STDC__ #include #include #else #include #endif #define ARMAG "!\n" #define SARMAG 8 #define ARFMAG "`\n" struct ar_hdr { char ar_name[16], ar_date[12], ar_uid[6], ar_gid[6], ar_mode[8], ar_size[10], ar_fmag[2]; } arbuf; void fatal(char * str) { fprintf(stderr, "%s\n", str); exit(2); } void main(int argc, char ** argv) { char buf[128]; FILE * fd, * ifd; struct stat st; int ar, libarg=0, need_o = 0, got_o = 0; for(ar=1; ar 1 || need_o > got_o ) fatal("Err, what's the output gonna be called?"); if( (fd =fopen(argv[libarg], "wb")) == 0 ) fatal("Cannot open archive"); if( fwrite(ARMAG, 1, SARMAG, fd) != SARMAG) fatal("Cannot write magic"); for(ar=1; ar