Guest User

Untitled

a guest
Dec 11th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.90 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "estructuras.h"
  4.  
  5. ///////////////////////////////////////////////////
  6. ////// FUNCIONES /////////////////////////////////
  7. //////////////////////////////////////////////////
  8.  
  9. block agregar_inodo(block bloque, int id){
  10.     inode *nodo;
  11.     nodo = (inode*)malloc(sizeof(inode));
  12.     nodo->second = (inode*)malloc(sizeof(inode));
  13. //  nodo->next = (data*)malloc(sizeof(data));
  14.     if (id== 6){
  15.         nodo->id_node = -1;
  16.     }
  17.     else if (id > 6){
  18.         nodo->id_node = id-1;
  19.     }
  20.     else{
  21.         nodo->id_node = id;
  22.     }
  23.     nodo->second = NULL;
  24.     nodo->next = NULL;
  25.     if (bloque._li == NULL){
  26.         bloque._li = nodo;
  27.     }
  28.     else{
  29.         inode *aux;
  30.         aux = (inode*)malloc(sizeof(inode));
  31.         aux = bloque._li;
  32.         while ( aux->second != NULL){
  33.             aux = aux->second;
  34.         }
  35.         aux->second = nodo;
  36.     };
  37.     return bloque;
  38. };
  39.  
  40. void recorrer_data(block bloque){
  41.     inode *ptrNodo;
  42.     ptrNodo = (inode*)malloc(sizeof(inode));
  43.     ptrNodo = bloque._li;
  44.     while ( ptrNodo->second != NULL){
  45.         ptrNodo = ptrNodo->second;
  46.     };
  47.     printf("Id del nodo: %d \n", ptrNodo->id_node);
  48. };
  49.  
  50. block list_free_inicio(block bloque){
  51.     int i = 0 ;
  52.     inode *ptrNodo;
  53.     ptrNodo = (inode*)malloc(sizeof(inode));
  54.     ptrNodo = bloque._li;
  55.     for(; i < 10; i++){
  56.         int j = 0;
  57.         ptrNodo = bloque._li;
  58.         for (; j < i; j++){
  59.             ptrNodo = ptrNodo->second;
  60.             if(ptrNodo->id_node == -1){
  61.                 ptrNodo = ptrNodo->second;
  62.             };
  63.         };
  64.         bloque._sb.list_li_free[i] = ptrNodo;
  65.         //printf("Repeticion N: %d \n", i);
  66.         //printf("Id actual: %d \n", ptrNodo->id_node);
  67.         //printf("ID del nodo dentro: %d \n", bloque._sb.list_li_free[i]->id_node);
  68.     };
  69.     return bloque;
  70. };
  71.  
  72. block identificar_libres(block bloque){
  73.     int  i = 0;
  74.     for(; i < 10 ; i++){
  75.        
  76.         if( bloque._sb.list_li_free[i]->next == NULL){ 
  77.             bloque._sb.list_li_free[i]->id_node = 0;        // id = 0 para nodos libres, 1 para nodos usados
  78.         }
  79.        
  80.         else{
  81.             bloque._sb.list_li_free[i]->id_node = 1;
  82.         }
  83.         //printf("valor: %d\n", bloque._sb.list_li_free[i]->id_node);
  84.     }
  85.     return bloque;
  86. };
  87.  
  88. //////////////////////////////////////////////////////////
  89. //////////////////// P R I N T F /////////////////////////
  90. /////////////////////////////////////////////////////////
  91.  
  92.  
  93. void output(block bloque, int id){
  94.     int cont = 0;
  95.     inode *puntero;
  96.     puntero = (inode*)malloc(sizeof(inode));
  97.     puntero = bloque._li;
  98.     while ( cont < id ){
  99.         puntero = puntero->second;
  100.     };
  101.     printf("name: %s \n", puntero->next->filename);
  102.    
  103. };
  104.  
  105. block limpiar_inodos(block bloque, int cant){
  106.     int i = 0;
  107.     for (; i < cant ; i++){
  108.         bloque._sb.list_li_free[i]->next = NULL;
  109.         bloque._sb.list_li_free[i]->id_node = 0;
  110.     };
  111.     return bloque;
  112. };
  113.  
  114. block asociar_datos(block bloque){
  115.     int i = 0;
  116.     FILE *binario;
  117.     binario = fopen("disk.hdd","rb");
  118.     fseek(binario,0,SEEK_END);
  119.     int cantDatas = ftell(binario)/sizeof(data);
  120.     rewind(binario);
  121.     data *buffer;
  122.     buffer = (data*)malloc(sizeof(data));
  123.     for (; i < cantDatas; i++){
  124.         fread(buffer, sizeof(data), 1 , binario);
  125.         printf("BUFFER \nName: %s ID: %d \n",buffer->filename,buffer->id_data);
  126.         /*
  127.          if (bloque._sb.list_li_free[i]->id_node == 0){
  128.             bloque._sb.list_li_free[i]->next = buffer;
  129.             bloque = identificar_libres(bloque);
  130.             printf("Nombre: %s \n", bloque._li->next->filename);
  131.         };
  132.         printf("Nombre: %s \n", bloque._li->next->filename);
  133.         i++;
  134.         */
  135.     };
  136.     fclose(binario);
  137.     free(buffer);
  138.     return bloque;
  139. };
  140.  
  141. //////////////////////////////////////////////////////////
  142. //////////////////// M A I N /////////////////////////////
  143. /////////////////////////////////////////////////////////
  144.  
  145. int main(){
  146.     int i = 0;
  147.     block bloque;
  148.     bloque._li = NULL;
  149.    
  150.     // Creando la lista
  151.     for (; i < 11; i++){
  152.         bloque = agregar_inodo(bloque,i+1);
  153.         //recorrer_data(bloque);
  154.     };
  155.    
  156.     bloque = list_free_inicio(bloque); // Creando la lista libre
  157.     bloque = identificar_libres(bloque); // Asignando 0's y 1's
  158.     bloque = asociar_datos(bloque); // Asociar datos
  159.    
  160.     return 0;
  161. }
Add Comment
Please, Sign In to add comment