Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include "estructuras.h"
- ///////////////////////////////////////////////////
- ////// FUNCIONES /////////////////////////////////
- //////////////////////////////////////////////////
- block agregar_inodo(block bloque, int id){
- inode *nodo;
- nodo = (inode*)malloc(sizeof(inode));
- nodo->second = (inode*)malloc(sizeof(inode));
- // nodo->next = (data*)malloc(sizeof(data));
- if (id== 6){
- nodo->id_node = -1;
- }
- else if (id > 6){
- nodo->id_node = id-1;
- }
- else{
- nodo->id_node = id;
- }
- nodo->second = NULL;
- nodo->next = NULL;
- if (bloque._li == NULL){
- bloque._li = nodo;
- }
- else{
- inode *aux;
- aux = (inode*)malloc(sizeof(inode));
- aux = bloque._li;
- while ( aux->second != NULL){
- aux = aux->second;
- }
- aux->second = nodo;
- };
- return bloque;
- };
- void recorrer_data(block bloque){
- inode *ptrNodo;
- ptrNodo = (inode*)malloc(sizeof(inode));
- ptrNodo = bloque._li;
- while ( ptrNodo->second != NULL){
- ptrNodo = ptrNodo->second;
- };
- printf("Id del nodo: %d \n", ptrNodo->id_node);
- };
- block list_free_inicio(block bloque){
- int i = 0 ;
- inode *ptrNodo;
- ptrNodo = (inode*)malloc(sizeof(inode));
- ptrNodo = bloque._li;
- for(; i < 10; i++){
- int j = 0;
- ptrNodo = bloque._li;
- for (; j < i; j++){
- ptrNodo = ptrNodo->second;
- if(ptrNodo->id_node == -1){
- ptrNodo = ptrNodo->second;
- };
- };
- bloque._sb.list_li_free[i] = ptrNodo;
- //printf("Repeticion N: %d \n", i);
- //printf("Id actual: %d \n", ptrNodo->id_node);
- //printf("ID del nodo dentro: %d \n", bloque._sb.list_li_free[i]->id_node);
- };
- return bloque;
- };
- block identificar_libres(block bloque){
- int i = 0;
- for(; i < 10 ; i++){
- if( bloque._sb.list_li_free[i]->next == NULL){
- bloque._sb.list_li_free[i]->id_node = 0; // id = 0 para nodos libres, 1 para nodos usados
- }
- else{
- bloque._sb.list_li_free[i]->id_node = 1;
- }
- //printf("valor: %d\n", bloque._sb.list_li_free[i]->id_node);
- }
- return bloque;
- };
- //////////////////////////////////////////////////////////
- //////////////////// P R I N T F /////////////////////////
- /////////////////////////////////////////////////////////
- void output(block bloque, int id){
- int cont = 0;
- inode *puntero;
- puntero = (inode*)malloc(sizeof(inode));
- puntero = bloque._li;
- while ( cont < id ){
- puntero = puntero->second;
- };
- printf("name: %s \n", puntero->next->filename);
- };
- block limpiar_inodos(block bloque, int cant){
- int i = 0;
- for (; i < cant ; i++){
- bloque._sb.list_li_free[i]->next = NULL;
- bloque._sb.list_li_free[i]->id_node = 0;
- };
- return bloque;
- };
- block asociar_datos(block bloque){
- int i = 0;
- FILE *binario;
- binario = fopen("disk.hdd","rb");
- fseek(binario,0,SEEK_END);
- int cantDatas = ftell(binario)/sizeof(data);
- rewind(binario);
- data *buffer;
- buffer = (data*)malloc(sizeof(data));
- for (; i < cantDatas; i++){
- fread(buffer, sizeof(data), 1 , binario);
- printf("BUFFER \nName: %s ID: %d \n",buffer->filename,buffer->id_data);
- /*
- if (bloque._sb.list_li_free[i]->id_node == 0){
- bloque._sb.list_li_free[i]->next = buffer;
- bloque = identificar_libres(bloque);
- printf("Nombre: %s \n", bloque._li->next->filename);
- };
- printf("Nombre: %s \n", bloque._li->next->filename);
- i++;
- */
- };
- fclose(binario);
- free(buffer);
- return bloque;
- };
- //////////////////////////////////////////////////////////
- //////////////////// M A I N /////////////////////////////
- /////////////////////////////////////////////////////////
- int main(){
- int i = 0;
- block bloque;
- bloque._li = NULL;
- // Creando la lista
- for (; i < 11; i++){
- bloque = agregar_inodo(bloque,i+1);
- //recorrer_data(bloque);
- };
- bloque = list_free_inicio(bloque); // Creando la lista libre
- bloque = identificar_libres(bloque); // Asignando 0's y 1's
- bloque = asociar_datos(bloque); // Asociar datos
- return 0;
- }
Add Comment
Please, Sign In to add comment