|
|
1.1 ! root 1: static char ID[] = "@(#) copy.c: 1.1 3/16/82"; ! 2: #include <stdio.h> ! 3: #include <fcntl.h> ! 4: #include "define2.h" ! 5: #include "define3.h" ! 6: #include "sdp.h" ! 7: ! 8: #define CP01 "CP01 " ! 9: #define CP02 "CP02 " ! 10: #define CP03 "CP03 " ! 11: #define CP04 "CP04 " ! 12: #define CP05 "CP05 " ! 13: #define CP06 "CP06 " ! 14: #define CP07 "CP07 " ! 15: #define CP08 "CP08 " ! 16: #define CP09 "CP09 " ! 17: #define CP10 "CP10 " ! 18: #define CP11 "CP11 " ! 19: #define CP12 "CP12 " ! 20: #define CP13 "CP13 " ! 21: extern struct LIBFILE lib_file ; ! 22: extern struct LIBFILE *Glib_file ; ! 23: extern struct LIBMEM *Glib_mem ; ! 24: extern struct SPACE *rdSPACE() ; ! 25: extern int wtSPACE() ; ! 26: extern freeSPACE() ; ! 27: ! 28: sdp_copy(in_name,out_name,library) ! 29: char *in_name ; ! 30: char *out_name ; ! 31: struct LIBFILE *library ; ! 32: { ! 33: struct SPACE *sp ; ! 34: int in_fd ; ! 35: int out_fd ; ! 36: int n ; ! 37: int i ; ! 38: char *namebuf ; ! 39: char *databuf ; ! 40: int nameleng ; ! 41: ! 42: Glib_file = (library == NULL ) ? &lib_file : library ; ! 43: if ( (sp = rdSPACE(in_name)) == NULL ) ! 44: ERR_RET(CP01,ERROR) ! 45: if ( (databuf = (char *)ALLOC(sp->page_size)) == NULL ) ! 46: ERR_RET(CP02,ERROR) ! 47: nameleng = strlen(in_name) ; ! 48: if ( strlen(out_name) > strlen(in_name) ) ! 49: nameleng = strlen(out_name) ; ! 50: if ( (namebuf = (char *)ALLOC(nameleng+strlen(SUFFIX)+COUNT+1)) == NULL ) ! 51: ERR_RET(CP03,ERROR) ! 52: for(i=0; i<sp->numbfile; i++) ! 53: if(sp->fileinfo[i].desc != NOTMADE) ! 54: { ! 55: sprintf(namebuf,"%s%d",sp->head_name,i) ; ! 56: if((in_fd=MOPEN(namebuf,O_RDONLY)) == ERROR) ! 57: ERR_RET(CP04,ERROR) ! 58: sprintf(namebuf,"%s%s%d",out_name,SUFFIX,i) ; ! 59: if ( MCREATE(namebuf,sp->mode) == ERROR ) ! 60: ERR_RET(CP05,ERROR) ! 61: if ( (out_fd=MOPEN(namebuf,O_RDWR)) == ERROR ) ! 62: ERR_RET(CP06,ERROR) ! 63: while(1) ! 64: { ! 65: switch(n=MREAD(in_fd,databuf,sp->page_size)) ! 66: { ! 67: case 0 : ! 68: break ; ! 69: ! 70: case ERROR : ! 71: ERR_RET(CP07,ERROR) ! 72: ! 73: default : ! 74: if ( n != sp->page_size ) ! 75: ERR_RET(CP08,ERROR) ! 76: if ( MWRITE(out_fd,databuf,sp->page_size) == ERROR ) ! 77: ERR_RET(CP09,ERROR) ! 78: continue ; ! 79: } ! 80: break ; ! 81: } ! 82: if(MCLOSE(in_fd) == ERROR) ! 83: ERR_RET(CP10,ERROR) ! 84: if(MCLOSE(out_fd) == ERROR) ! 85: ERR_RET(CP11,ERROR) ! 86: } ! 87: sp->head_name = namebuf ; ! 88: sprintf(sp->head_name,"%s%s",out_name,SUFFIX) ; ! 89: sp->perms = WRTN ; ! 90: if ( MCREATE(sp->head_name,sp->mode) == ERROR ) ! 91: ERR_RET(CP12,ERROR) ! 92: if ( wtSPACE(sp) == ERROR ) ! 93: ERR_RET(CP13,ERROR) ! 94: freeSPACE(sp) ; ! 95: return(SUCCESS) ; ! 96: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.