void AdministradorGeneral::inicializaciones(int cantidadEstacionamientos,int cantidadDeLugares) { for(int i = 1; i<=cantidadEstacionamientos; i++) { Lugares lugar(i); crearArchivosTemporales(cantidadDeLugares,i); lugar.crearMemoriaCompartidaPosiciones(cantidadDeLugares,i); lugar.crearVectorPosicionesLibres(cantidadDeLugares); this->lugares.push_back(lugar); } }
void crear_pe(char *nombre, char *path, int tamano, char fit,int unit){ printf("-------------CREANDO PARTICION-------------\n"); struct stat st = {0}; if(stat(path,&st)==-1){ printf("ERROR: el archivo especificado no existe.\n"); printf("-------------CREACION FALLIDA--------------\n\n"); return; } FILE *disco; disco = fopen(path,"r+b"); if(!disco){ printf("ERROR: el Disco no ha podido Abrirse.\n"); printf("-------------CREACION FALLIDA--------------\n\n"); return; } MBR leido; if(fread(&leido,sizeof(MBR),1,disco)!=1){ printf("ERROR:al cargar la data del disco\n"); printf("-------------CREACION FALLIDA--------------\n\n"); fclose(disco); return; } int tamano_real; switch(unit){ case 1: tamano_real=tamano*1024*1024; break; case 2: tamano_real=tamano*1024; break; case 3: tamano_real=tamano; break; } printf("-------------------DATOS-------------------\n"); printf("Nombre: %s\nPath: %s\nTamano: %i\nFit: %c\nUnit: %i\nTipo: Extendida\n",nombre,path,tamano_real,fit,unit); int posicion = lugar(leido,tamano_real); if(posicion==0){ printf("ERROR: ya no es posible crear particion devido a que ya se a sobrepadaso el numero de particiones posibles.\n"); printf("-------------CREACION FALLIDA--------------\n\n"); fclose(disco); return; } if(posicion==-1){ printf("ERROR: ya no es posible crear particion devido a que ya no espacio disponible.\n"); printf("-------------CREACION FALLIDA--------------\n\n"); fclose(disco); return; } if(name_exist(disco,leido,nombre)){ printf("ERROR: el nombre ya existen entre las particiones.\n"); printf("-------------CREACION FALLIDA--------------\n\n"); fclose(disco); return; } if(extendida_exist(leido)!=0){ printf("ERROR: ya existe una particion Extendida en el disco.\n"); fclose(disco); return; } particion partnueva; partnueva.part_status='s'; partnueva.part_type='e'; partnueva.part_fit=fit; switch(unit){ case 1: partnueva.part_size=tamano*1024*1024; break; case 2: partnueva.part_size=tamano*1024; break; case 3: partnueva.part_size=tamano; break; } strcpy(partnueva.part_name,nombre); switch(posicion){ case 1: partnueva.part_start=sizeof(MBR); leido.mbr_partition_1=partnueva; break; case 2: partnueva.part_start=leido.mbr_partition_1.part_start+leido.mbr_partition_1.part_size; leido.mbr_partition_2=partnueva; break; case 3: partnueva.part_start=leido.mbr_partition_2.part_start+leido.mbr_partition_2.part_size; leido.mbr_partition_3=partnueva; break; case 4: partnueva.part_start=leido.mbr_partition_3.part_start+leido.mbr_partition_3.part_size; leido.mbr_partition_4=partnueva; break; } fseek(disco,0,SEEK_SET); fwrite(&leido,sizeof(MBR),1,disco); EBR nuevoebr; nuevoebr.part_fit='n'; strcpy(nuevoebr.part_name,"-vacio-"); nuevoebr.part_next=-1; nuevoebr.part_status='n'; nuevoebr.part_size=0; nuevoebr.part_start=-1; switch(posicion){ case 1: nuevoebr.part_size=leido.mbr_partition_1.part_size-sizeof(EBR); fseek(disco,leido.mbr_partition_1.part_start,SEEK_SET); fwrite(&nuevoebr,sizeof(EBR),1,disco); break; case 2: nuevoebr.part_size=leido.mbr_partition_2.part_size-sizeof(EBR); fseek(disco,leido.mbr_partition_2.part_start,SEEK_SET); fwrite(&nuevoebr,sizeof(EBR),1,disco); break; case 3: nuevoebr.part_size=leido.mbr_partition_3.part_size-sizeof(EBR); fseek(disco,leido.mbr_partition_3.part_start,SEEK_SET); fwrite(&nuevoebr,sizeof(EBR),1,disco); break; case 4: nuevoebr.part_size=leido.mbr_partition_4.part_size-sizeof(EBR); fseek(disco,leido.mbr_partition_4.part_start,SEEK_SET); fwrite(&nuevoebr,sizeof(EBR),1,disco); break; } printf("-------------CREACION EXITOSA--------------\n"); fclose(disco); /* disco = fopen(path,"r+b"); if(!disco){ printf("ERROR: el Disco no ha podido Abrirse.\n"); return; } MBR master; if(fread(&master,sizeof(MBR),1,disco)!=1){ printf("ERROR:al cargar la data del disco\n"); fclose(disco); return; } printf("Particion 1:\n\tNombre:%s\n\tInicio: %i\n\tTamano: %i\n",master.mbr_partition_1.part_name,master.mbr_partition_1.part_start,master.mbr_partition_1.part_size); printf("Particion 2:\n\tNombre:%s\n\tInicio: %i\n\tTamano: %i\n",master.mbr_partition_2.part_name,master.mbr_partition_2.part_start,master.mbr_partition_2.part_size); printf("Particion 3:\n\tNombre:%s\n\tInicio: %i\n\tTamano: %i\n",master.mbr_partition_3.part_name,master.mbr_partition_3.part_start,master.mbr_partition_3.part_size); printf("Particion 4:\n\tNombre:%s\n\tInicio: %i\n\tTamano: %i\n",master.mbr_partition_4.part_name,master.mbr_partition_4.part_start,master.mbr_partition_4.part_size); fclose(disco);*/ }