|
|
1.1 ! root 1: static char sccsid[] = "@(#)receive.c 4.1 (Berkeley) 10/2/82"; ! 2: ! 3: /* ! 4: receive.c ! 5: ! 6: take the file sent by "store.c" and write it locally ! 7: */ ! 8: # include "defs.h" ! 9: ! 10: /* global variables */ ! 11: struct daemonparms netd; ! 12: ! 13: main(argc,argv) ! 14: char **argv; { ! 15: FILE *fp; ! 16: char *p, save[40]; ! 17: int i, n; ! 18: char buf[BUFSIZ]; ! 19: long length; ! 20: debugflg = DBV; ! 21: setupdaemon(argc,argv); ! 22: putchar('!'); ! 23: for(;;){ ! 24: initseqno(); ! 25: while((i = nread(buf,20)) == BROKENREAD); ! 26: if(i != 20){ ! 27: printf("Didn't read file name\n"); ! 28: exit(EX_USAGE); ! 29: } ! 30: for(p=buf; *p && *p != '\n' && *p != ' '; p++); ! 31: *p = 0; ! 32: printf("Creating file %s ",buf); ! 33: fp = fopen(buf,"w"); ! 34: if(fp == NULL){ ! 35: fp = fopen(buf,"w"); ! 36: exit(EX_OSFILE); ! 37: } ! 38: strcpy(save,buf); ! 39: while((i = nread(buf,10)) == BROKENREAD); ! 40: if(i != 10){ ! 41: printf("Didn't read length right\n"); ! 42: exit(EX_SOFTWARE); ! 43: } ! 44: length = atol(buf+1); ! 45: printf("length %ld\n",length); ! 46: while(length > 0){ ! 47: i = min(length,512); ! 48: while((n = nread(buf,i)) == BROKENREAD); ! 49: length -= n; ! 50: fwrite(buf,1,n,fp); ! 51: } ! 52: fclose(fp); ! 53: printf("Finished file %s\n",save); ! 54: } ! 55: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.