Comentarios MiniFS










































Algunos comentarios del MiniFS que no están en los comentarios del código fuente:


Las funciones están escritas en el orden que se van a necesitar. Por ejemplo busca_file_puntero tiene que estar antes de mkdir o create_file, esto no es requisito cuando hay un .h. (si el prototipo de la función no está en el .h las funciones deben estar en el orden de ejecución correcto).

La cadena de caracteres comando se modifica en las funciones attrib y it, estas funciones tienen que separar en tokens.

Attrib (cambia atributo lectura/escritura de archivo)

Como separamos en tokens:

Necesitamos terminar en 0 las cadenas para que strchr o cualquier valuación de cadenas estandar de la biblioteca C se detenga en algún lado, entonces como el separador de tokens es un espacio, no se va a detener el strchr, entonces en lugar del espacio, tengo que poner un 0 para que se detenga ahí. Por otro lado necesitamos saber donde seguir después, porque una vez que tengo el 0 ya no sé donde termina la cadena, entonces primero usamos el último pedazo, osea tenemos un puntero a donde empieza el nombre del archivo, un 0 que le agregamos y avanzamos un lugar (un puntero a ese lugar, donde empieza el modificador), antes de ponerle 0 uso el modificador, lo leo, entonces ahora ya no nos importa el resto de la cadena, entonces le pongo el 0. Ahora usamos solo el primer token.

it (ingresar texto)

En it tambien se modifica comando: modificar comando tiene una consecuencia importante: no podemos poner it("it archivo1 este es el texto de archivo1") en la funcion prueba, porque eso asigna espacio a esa cadena en la parte de memoria reservada para el código fuente del programa, y el procedimiento estandar es no modificar el programa, por eso no podemos llamarla con una cadena constante (una cadena literal).

cd (cambiar de directorio)

De principio no vamos a usar todo comando, empezamos desde la posición 0, pero luego que pasa por evalua, adelantamos el puntero un poco (hasta el comienzo del nombre del directorio).

cd admite con espacio y sin espacio.

Permite buscar directorios o archivos aunque el nombre no este bien formado, porque no válida el nombre, osea por ejemplo permite buscar un nombre con más de 15 caracteres, mas de un punto, etc.(lo que no está permitido es crear directorios y archivos que tengan mal el nombre)

podemos probar: cd este es un directorio que no existe... nos var a decir el directorio no existe, no nos va a decir nombre inválido.

evalua

En evalua no modificamos comando, nos movemos dentro de la cadena con un puntero.

evalua llama a la función proc, pero como proc es un puntero a una función cualquiera, la funcion proc tiene que cumplir con ese prototipo, que es que tenga un solo argumento y que sea un char pointer, entonces todas las funciones que va a llamar evalua le tenemos que poner que tomen ese argumento, si no el compilador dice error no tiene los argumentos, osea por ejemplo el motivo de que crearsistema tenga un argumento es para poder llamarlo desde evalua.


La posibilidad de llamar directamente a las funciones con cadenas literales en la función prueba se podria evitar en los casos de que comando no se modifica, se podría poner const char, (const char quiere decir: la función no va a modificar esta cadena).

¿Cómo ordenamos el arbol de archivos y directorios?

Una manera de ordenar un arbol binario de busqueda es insertando los nuevos nodos al arbol de forma ordenada (ordenamiento por inserción), es de esta forma que lo hacemos en el minifs.

Cuando eliminamos un nodo, la función eliminar_1_file o eliminar_1_dir deja el arbol ordenado luego de eliminarlo.







































Comments