Exemple #1
0
int main(int argc, char **argv) {
    bmount(argv[1]);
    
    char text [2048]= "Empieza con un prólogo en el que se burla de la erudición pedantesca y con unos poemas cómicos, a manera de preliminares, compuestos en alabanza de la obra por el propio autor, quien lo justifica diciendo que no encontró a nadie que quisiera alabar una obra tan extravagante como esta, como sabemos por una carta de Lope de Vega. En efecto, se trata, como dice el cura, de una escritura desatada libre de normativas que mezcla lo lírico, épico, trágico, cómico y donde se entremeten en el desarrollo historias de varios géneros, como por ejemplo: Grisóstomo y la pastora Marcela, la novela de El curioso impertinente, la historia del cautivo, el discurso sobre las armas y las letras, el de la Edad de Oro, la primera salida de don Quijote solo y la segunda con su inseparable escudero Sancho Panza (la segunda parte narra la tercera y postrera salida La novela comienza describiéndonos a un tal Alonso Quijano, hidalgo pobre, que enloquece leyendo libros de caballerías y se cree un caballero medieval. Decide armarse como tal en una venta, que él ve como castillo. Le suceden toda suerte de cómicas aventuras en las que el personaje principal, impulsado en el fondo por la bondad y el idealismo, busca «desfacer agravios» y ayudar a los desfavorecidos y desventurados. Profesa un amor platónico a una tal Dulcinea del Toboso; que es, en realidad, una moza labradora «de muy buen parecer»: Aldonza Lorenzo. El cura y el barbero del lugar someten la biblioteca de don Quijote a un expurgo, y queman parte de los libros que le han hecho tanto mal.Don Quijote lucha contra unos gigantes, que no son otra cosa que molinos de viento";
    
/*
    int ninodo = reservar_inodo('f', '6');
    printf("\t- Reserva primer inodo: %d\n", ninodo);
    mi_write_f(ninodo, "Esto es la prueba numero 1\0", 5120, 27);
*/

    int ninodo = reservar_inodo('f', '6');
    printf("\t- Reserva inodo: %d\n", ninodo);
    
    mi_write_f(ninodo, text, 409604096, strlen(text));

    //ninodo = reservar_inodo('f', '6');
    // printf("\t- Reserva segundo inodo: %d\n", ninodo);
    //    mi_write_f(ninodo, "Esto es la segunda prueba\0", 256000, 26);

    // ninodo = reservar_inodo('f', '6');
    //  printf("\t- Reserva tercer inodo: %d\n", ninodo);
    //    mi_write_f(ninodo, "Esto es la prueba numero 3\0", 30721024, 27);

    // ninodo = reservar_inodo('f', '6');
    // printf("\t- Reserva cuarto inodo: %d\n", ninodo);
    //    mi_write_f(ninodo, "Esto es la cuarta prueba\0", 71680000, 25);

    bumount();
    return ninodo;
}
Exemple #2
0
int main(int argc, char **argv){
	
	if(argc!=3){
		
		printf("\nmi_mkfs: Error debe escribir: $ ./mi_mkfs <nombre_fichero> <cantidad_bloques>\n");
		
		return -1;
	}
	
	//cantidad_bloques
	unsigned int numBloques = atoi(argv[2]);
	//cantidad_inodos
	unsigned int ninodos = numBloques/4;

	if(numBloques==0){
		printf("\nmi_mkfs: El nº de bloques debe ser mayor a 0.\n");
		
		return -1;
	}
		
	//ETAPA 1:
	unsigned char buf[BLOCKSIZE];
	//Rellenamos de 0's el buffer.
	memset(buf,0,BLOCKSIZE);
	
	//Montamos el dispositivo.
	printf("\nmi_mkfs: Montando el dispositivo...\n");	
	bmount(argv[1]);//nombre_fichero
	printf("\nmi_mkfs: El dispositivo se ha montado con éxito.\n");
	printf("\nmi_mkfs: Realizando escritura...\n");
		
	
	//ETAPA 1:
	//Escribimos todos los bloques en el dispositivo.
	for(int i=0; i<numBloques; i++){
		bwrite(i,buf);
	}
	
	if(initSB(numBloques,ninodos)<0)return -1;
	if(initMB()<0)return -1;
	if(initAI(ninodos)<0)return -1;

	//Se escribe el directorio raíz = inodo raíz.
	reservar_inodo('d',7);

	//Desmontamos el dispositivo.
	printf("\nmi_mkfs: Desmontando el dispositivo...\n");
	bumount();
	
	printf("\nmi_mkfs: Dispositivo desmontado con éxito.\n");

	return 0;
}
Exemple #3
0
int main(int argc, char **argv){

	if(argc!=3){
		printf("Número de argumentos incorrecto \n");
		return -1;
	}

	unsigned int n_bloques = atoi(argv[2]);	//Número de bloques del FS

	unsigned char buf[blocksize];

	memset(buf,0,blocksize);

	bmount(argv[1]);	//Monta Disco
	int i;

	for (i=0; i<n_bloques-1; i++){	//Llena bloques con 0s
		bwrite(i,buf);
	}
	memset(buf,1,blocksize);

	bwrite(n_bloques,buf);


	int block = n_bloques/4;//Para el cáculo de inodos
	if(initSB(n_bloques, block)==-1){	//Inicializa SB
		printf("Error al escribir superbloque");
	}else{
		printf("Superbloque escrito \n");
	}

	if(initMB(n_bloques)==-1){	//Inicializa MB
		printf("Error al escribir mapa de bits");
	}else{
		printf("Mapa de bits escrito \n");
	}

	int n = tamAI(block);

	if (initAI(n)==-1){	//Inicializa AI
		printf("Error al escribir el array de inodes");
	}else{
		printf("Array de inodes escrito \n");
	}
	int inodoraiz = reservar_inodo('d',7);

	printf("Sistema de ficheros creado correctamente \n");	
	
	bumount();	//Desmonta disco

	return 0;
}
Exemple #4
0
int main(int argc, char **argv){
	int descriptor,bytesEscribir,sz;
	unsigned int offset,ninodo,bytesWritten, bytesEscritos, longitudFichero;
	FILE *fptr;
	if(argc<4){
		printf("Syntax error, not enough argumentes, file mi_escribir.c\n"
			"Correct Order:\n"
			"Argument 1: File System Name\n"
			"Argument 2: offset\n"
			"Argument 3: input text to write in file\n");
		return -1;
	}
	descriptor = bmount(argv[1]);
	bytesEscritos = 0;
	ninodo=reservar_inodo('f',6);
	//ninodo = 1;
	printf("#El inodo creado es: %d\n",ninodo);
    offset = atoi(argv[2]);
    if ((fptr=fopen(argv[3],"r"))==NULL){
       printf("Error! opening file");
       exit(1);         /* Program exits if file pointer returns NULL. */
   	}
   	fseek(fptr, 0L, SEEK_END);
	sz = ftell(fptr);
	fseek(fptr, 0L, SEEK_SET);
	unsigned char input[sz];
	fscanf(fptr,"%[^\n]",input);
	fclose(fptr);
	//We write all the file, in one take, to the FS
    bytesWritten=mi_write_f(ninodo,input,offset,sz);
    if(bytesWritten<0){
    	printf("Error al escribir en el fichero");
    }
	if(bumount(descriptor)<0) exit(1);
	return 0;
}
Exemple #5
0
int main(int argc, char **argv){

	
	if(argc<3){
		printf("\nescribir: Error debe escribir: $ ./escribir <nombre_fichero> <offset> <inodo(opcinal)>\n");
		printf("*Si no indica el inodo el sistema se encargará de reservar un inodo nuevo.\n");
		return -1;
	}
	struct INODO inodo;
	int ninodo;
	char ruta[128];
	long nbytes;
	long offset = atoi(argv[2]);
	printf("\nescribir: Escribe la ruta del fichero: ");
	scanf("%s",ruta);
	FILE *fichero = fopen(ruta,"r");
	fseek(fichero, 0, SEEK_END); // Colocar el cursor al final del fichero
	nbytes = ftell(fichero); // Tamaño en bytes
	printf("\nescribir: El tamaño del fichero es: %ld\n",nbytes);
	char entrada[nbytes];
	fseek(fichero,0,0);
	fscanf(fichero,"%s",entrada);
	fclose(fichero);
	
	//Montamos el dispositivo.
	printf("\nescribir: Montando el dispositivo...\n");	
	bmount(argv[1]);//nombre_fichero
	printf("\nescribir: El dispositivo se ha montado con éxito.\n");
	
	//Si el inodo se pasa como argumento
	if(argc == 4){
		ninodo = atoi(argv[3]);
	}else{
		//Reservamos el inodo.
		ninodo = reservar_inodo('f',6);
	}

	inodo = leer_inodo(ninodo);
	
	//IMPRIMIR INODO 
	printf("\nNº INODO %i:\n",ninodo);
	printf("Tipo: %c\n",inodo.tipo);
	printf("Permisos: %i\n",inodo.permisos);
	printf("Nº enlaces: %i\n",inodo.nlinks);
	printf("Bytes lógicos: %i\n",inodo.tamEnBytesLog);
	printf("Bloques ocupados: %i\n",inodo.numBloquesOcupados);
	//ESCRITURA 
	if(mi_write_f(ninodo,entrada,offset,nbytes)!=nbytes){
		printf("\nescribir: ERROR, no se ha escrito en el fichero correctamente.\n");
		return -1;
	}
	//LECTURA 
	printf("\nescribir:Se ha leído lo siguiente con el offset %ld:\n",offset);
	if(mi_read_f(ninodo,entrada,offset,nbytes)!=nbytes){
		printf("\nescribir: ERROR, no se ha leído en el fichero correctamente.\n");
		return -1;
	}
	write(1,entrada,nbytes);
	printf("\n\nInodo Actualizado:\n");
	inodo = leer_inodo(ninodo);
	//IMPRIMIR INODO
	printf("\nNº INODO %i:\n",ninodo);
	printf("Tipo: %c\n",inodo.tipo);
	printf("Permisos: %i\n",inodo.permisos);
	printf("Nº enlaces: %i\n",inodo.nlinks);
	printf("Bytes lógicos: %i\n",inodo.tamEnBytesLog);
	printf("Bloques ocupados: %i\n",inodo.numBloquesOcupados);
	
	//Desmontamos el dispositivo.
	printf("\nescribir: Desmontando el dispositivo...\n\n");
	bumount();
	printf("\nescribir: Dispositivo desmontado con éxito.\n");
	
	return 0;
}