コード例 #1
0
int comprueba(char * path_original, char * path_final) {
	// Comprueba que los dos archivos enviados en los path sean identicos

	// Es normal que de como resultado "Byte del fallo: 54" porque es donde
	// empieza el archivo y termina el encabezado

	int resultado = 0, i = 0, tamanio = tamanio_archivo(path_original);
	FILE *original = fopen(path_original, "rb");
	FILE *final = fopen(path_final, "rb");
	char c_original, c_final;

	while (!feof(original) && resultado == 0 && i < tamanio) {
		c_original = fgetc(original);
		c_final = fgetc(final);
		i++;
		if (c_original != c_final) {
			resultado = 1;
			printf("Byte del fallo: %d \n", i);
		}
	}

	fclose(original);
	fclose(final);

	return resultado;

}
コード例 #2
0
void conseguirArchivoFinal(int socket_FS){
	uint32_t tamanioRuta;
	recibir(socket_FS,&tamanioRuta,sizeof(uint32_t));
	char* ruta = malloc(tamanioRuta);
	recibir(socket_FS,ruta,tamanioRuta);
	uint32_t tamanioNombre;
	recibir(socket_FS,&tamanioNombre,sizeof(uint32_t));
	char* nombre = malloc(tamanioNombre);
	recibir(socket_FS,nombre,tamanioNombre);

	int fd_archivo = open(nombre,O_RDONLY);
	char* mapeo;
	int tamanioArchivo = tamanio_archivo(fd_archivo);

	if( (mapeo = mmap(NULL, tamanioArchivo, PROT_READ, MAP_SHARED, fd_archivo, 0 )) == MAP_FAILED){
	//Si no se pudo ejecutar el MMAP, imprimir el error y aborta;
		printf("Error con MMAP");
		abort();
		}

	char idProceso = 'N';
	char idOperacion = 'T';
	int tamanioEnvio = tamanioArchivo + 1;

	enviar(socket_FS,&idProceso,sizeof(char));
	enviar(socket_FS,&idOperacion,sizeof(char));
	enviar(socket_FS,&tamanioRuta,sizeof(uint32_t));
	enviar(socket_FS,ruta,tamanioRuta);
	enviar(socket_FS,&tamanioEnvio,sizeof(uint32_t));
	enviar(socket_FS,mapeo,tamanioEnvio);
	close(fd_archivo);
	munmap(mapeo,tamanioEnvio);
}
コード例 #3
0
void conseguirBloqueYEnviar(int socket){
	int tamanio;
	recv(socket,&tamanio,sizeof(int),0);
	char* nombre = malloc(tamanio);
	recv(socket,nombre,tamanio,0);


	int fd_archivo = open(nombre,O_RDONLY);
	char* bloqueConseguido;
	int tamanioArchivo = tamanio_archivo(fd_archivo);

	if( (bloqueConseguido = mmap(NULL, tamanioArchivo, PROT_READ, MAP_SHARED, fd_archivo, 0 )) == MAP_FAILED){
		//Si no se pudo ejecutar el MMAP, imprimir el error y aborta;
		printf("Error con MMAP");
		abort();
	}

	int tamanioEnvio = tamanioArchivo+1;
	enviar(socket,&tamanioEnvio,sizeof(uint32_t));
	enviar(socket,bloqueConseguido,tamanioEnvio);

	free(nombre);
	close(fd_archivo);
	munmap(bloqueConseguido,tamanioEnvio);
}
コード例 #4
0
void conseguirYEnviarLoQuePideElFS(socket_FS){
	uint32_t tamanio;
	char* nombreArchivo;
	recibir(socket_FS,&tamanio,sizeof(uint32_t));
	recibir(socket_FS,nombreArchivo,tamanio);

	int fd_archivo = open(nombreArchivo,O_RDONLY); //agregar al archivo de config!!
	char* mapeo;
	uint32_t tamanioArchivo = tamanio_archivo(fd_archivo);

	if( (mapeo = mmap(NULL, tamanioArchivo, PROT_READ, MAP_SHARED, fd_archivo, 0 )) == MAP_FAILED){
		//Si no se pudo ejecutar el MMAP, imprimir el error y aborta;
		printf("Error con MMAP");
		abort();
	}

//	char idProceso = 'N';
//	char idOperacion = 'A';

//	enviar(socket_FS,&idProceso,sizeof(char));
//	enviar(socket_FS,&idOperacion,sizeof(char));
	enviar(socket_FS,&tamanioArchivo,sizeof(uint32_t));
	enviar(socket_FS,mapeo,tamanioArchivo);
	munmap(mapeo,tamanioArchivo);
}
コード例 #5
0
void cifrador_archivo(int accion, char * path_origen, char * path_destino, ECRYPT_ctx * ctx){

	FILE * archivo_origen;
	FILE * archivo_destino;

	// Abro los archivos y verifico que existan
	archivo_origen = fopen(path_origen, "rb");
	archivo_destino = fopen(path_destino, "wb");

	if (!archivo_origen) {
		printf("Imposible arbrir el archivo!");
		system("exit");
	}

	if (!archivo_destino) {
		printf("Imposible arbrir el archivo!");
		system("exit");
	}

	char * extension = conseguir_extension(path_origen);

	if (strcmp(extension, "BMP") == 0) {
		long int encabezado = 53;
		long int total_archivo = tamanio_archivo(path_origen);

		copiar_texto_claro( archivo_origen, archivo_destino, encabezado);
		cifrador(accion, archivo_origen, archivo_destino, ctx, total_archivo - encabezado);

	} else if(strcmp(extension, "WAV") == 0){
		long int encabezado = 44;
		long int total_archivo = tamanio_archivo(path_origen);

		copiar_texto_claro( archivo_origen, archivo_destino, encabezado);
		cifrador(accion, archivo_origen, archivo_destino, ctx, total_archivo - encabezado);
	}

	fclose(archivo_destino);
	fclose(archivo_origen);
	free(ctx);

}
コード例 #6
0
char* mapearAMemoriaElEspacioDeDatos(char* path){

	char* mapeo;
	int fd_archivo = open(path,O_RDONLY);
	int tamanioArchivo = tamanio_archivo(fd_archivo);

	if( (mapeo = mmap(NULL, tamanioArchivo, PROT_READ, MAP_SHARED, fd_archivo, 0 )) == MAP_FAILED){
		//Si no se pudo ejecutar el MMAP, imprimir el error y aborta;
		printf("Error con MMAP");
		abort();
	}

	return mapeo;
}