// NC-Split (c) 1996-99 Denis Unger #include #include #include const char Version[]="$VER: NC-Split 1.10"; int main(int argc, char *argv[]){ char suffix[10]; char zfile[FILENAME_MAX],qfile[FILENAME_MAX]; int i,wait=false; int splitsize; int quellsize; long int read,write,anz; char *buffer; FILE *quelle,*ziel; printf("NC-Split 1.1 (c) 1996-99 Denis Unger\n\n"); //Argmente in Kleinbuchstaben umwandeln // if(argc>0) strlwr(argv[1]); // if(argc>4) strlwr(argv[5]); if (argc<2) { printf("Syntax: s|l Anzahl|Groesse [wait]\n"); exit(0); } if (argc==6) if (!stricmp(argv[5],"wait")) wait=true; if (!stricmp(argv[1],"s")) { if(argc<5 || argc>6) { printf("Falscher Aufruf !!!\n"); } else { splitsize=atoi(argv[4]); if (splitsize<=0) printf("Splitgroesse ist ungueltig\n"); else { quelle=fopen(argv[2],"rb"); if (!quelle) printf("Fehler beim Oeffnen der Quelldatei %s\n",argv[2]); else { buffer=new char[splitsize]; if (buffer!=0) { fseek(quelle,0,SEEK_END); quellsize=ftell(quelle); fseek(quelle,0,SEEK_SET); anz=quellsize/splitsize; if(quellsize%splitsize!=0) anz++; //Rest printf("%d Dateien werden erzeugt\n\n",anz); read=splitsize; for(i=1;i<=anz;i++) { printf("Erzeuge File %d\n",i); read=fread(buffer,1,splitsize,quelle); strcpy(zfile,argv[3]); //sonst wird name immer länger strcat(zfile,"."); if(wait) { printf("Taste druecken ..."); getchar(); } sprintf(suffix,"%3d",i); if(suffix[0]==32) suffix[0]='0'; if(suffix[1]==32) suffix[1]='0'; ziel=fopen(strcat(zfile,suffix),"wb"); if(ziel) { write=fwrite(buffer,1,read,ziel); fclose(ziel); if(write!=read) { printf("Datentraeger voll oder Fehler beim Schreiben.\n"); break; } } else printf("Fehler beim Oeffnen von Zieldatei %s \n",argv[3]); } fclose(quelle); delete buffer; } else printf("Puffer konnte nicht allokiert werden\n"); } } } } if (!stricmp(argv[1],"l")) { anz=atoi(argv[4]); ziel=fopen(argv[3],"w"); if (ziel) { //Größe ermitteln strcpy(qfile,argv[2]); quelle=fopen(strcat(qfile,".001"),"r"); if(quelle) { fseek(quelle,0,SEEK_END); quellsize=ftell(quelle); fseek(quelle,0,SEEK_SET); fclose(quelle); buffer=new char[quellsize]; if (buffer){ for(i=1;i<=anz;i++) { printf("Linke File %d\n",i); strcpy(qfile,argv[2]); strcat(qfile,"."); if(wait) { printf("Taste druecken ..."); getchar();} sprintf(suffix,"%3d",i); if(suffix[0]==32) suffix[0]='0'; if(suffix[1]==32) suffix[1]='0'; quelle=fopen(strcat(qfile,suffix),"r"); if(quelle) { read=fread(buffer,1,quellsize,quelle); write=fwrite(buffer,1,read,ziel); if(!write) { printf("Datentraeger voll oder Fehler beim Schreiben\n"); break;} fclose(quelle); } else printf("Quellfile %s konnte nicht geoeffnet werden.\n",qfile); } } else printf("Puffer konnte nicht allokiert werden\n"); } else printf("Quellfile %s konnte nicht geoeffent werden\n",qfile); fclose(ziel); } else printf("Zielfile %s konnte nicht geoeffnet werden\n",argv[3]); } return 0; }