/*========================================================================\ | | | Porción 1.0.1 por Dámaso D. Estévez (ANSI C) | | Programa de distribución, copiado y modificación libre | | Amiga: Sólo desde CLI/SHELL° | | | | Parámetros: | | | | Nombre del fichero a extraer (camino completo) | | Nombre fichero a crear (camino completo) | | Byte de inicio | | Byte final | | | | | | Utilidad: Este programa extrae una copia de un trozo de un fichero, | | a partir del 'Byte de inicio' hasta el 'Byte final' (su | | tamaño por lo tanto es [Byte final-Byte inicio]) a otro fi- | | chero. Util para romper ficheros muy grandes y acomodarlos | | en los espacios libres que queramos/tengamos. | | | | ° Bajo KickStart 2.0 o superior al ejecutarlo desde el WorkBench pre- | | senta la sintaxis. En versiones anteriores posiblemente produzca un | | gurú. | | | \=========================================================================*/ #include #include char Nome[]="Porción"; char Vers[]="1.0.1"; char Prog[]="Dámaso D. Estévez"; char Data[]=__DATE__; /* Línea sólo para Amiga. Eliminar para otras plataformas */ char VersionCBM[]="$VER: Porción 1.0.1 por Dámaso D. Estévez"; main(argc,argv) int argc; char *argv[]; { FILE *fichin; FILE *fichout; long a; char car; if(argc) { printf("\n%s %s por %s (%s) - Dominio Público\n\n",Nome,Vers,Prog,Data); if(argc<1 || argc>5) { printf("\t¡Error en el nº de argumentos!\n\n"); } if(argc!=5) { printf("SINTAXIS (sólo CLI/SHELL): "); printf("%s [FileIn FileOut ByteStart ByteEnd]\n\n",argv[0],argv[0]); exit(0); } } if((fichin=fopen(argv[1],"rb"))==NULL) { printf(" ¡No puedo abrir para leer el fichero %s!\n\nFIN DEL PROGRAMA\n\n",argv[1]); exit(1); } if((fichout=fopen(argv[2],"wb"))==NULL) { printf(" ¡No puedo abrir para escribir el fichero %s!\n\nFIN DEL PROGRAMA\n\n",argv[2]); fclose(fichin); exit(1); } a=atol(argv[3]); if(fseek(fichin,a,SEEK_SET)) { printf(" ¡Error al leer el byte nº %s!\n\nFIN DEL PROGRAMA\n\n",argv[3]); fclose(fichout); fclose(fichin); exit(2); } /* En la versión 1.0 ... [...] a!=(atol(argv[4]))) { */ while (!feof(fichin) && a<=(atol(argv[4]))) { car=getc(fichin); putc(car,fichout); a++; } printf("Todo correcto: FIN DEL PROGRAMA\n\n"); fclose(fichout); fclose(fichin); exit(0); }