Soporte para bloques pequeños en leer y guardar, falta borrar pero como estoy quemado lo dejo para mañana. Ademas mañana supongo que tendre que arreglar los cambios que se produzcan en idx y los demas, si es que hay. Por ahora no funciona con la gui el tema de los bloques chicos asi que no se molesten en probarlo, pero si en revisarlo. Adios
* Muestro el tipo de archivo que se esta mirando en Ver Registros
* Agrego otro parametro a la GUI : el tamaño de bloque. Ahora
si el archivo es T1 o T3 la GUI obliga a pasar por parametro
el tamaño de registro que se desea para la creacion del archivo.
* Se inicializa bloque en \0's al crear un nuevo bloque en tipo1
* Ver registros ahora sirve tanto para tipo1 como para tipo3 (tipo1 no puede
modificar ni borrar hasta que borrar_registro sea implementada)
* Ver registros completo!!. Ya se puede :
- hace altas, bajas y modificaciones del registro actualmente selecciondo
- Resalta el registro actual dentro del bloque al que pertenece
- Tiene GUI autoexplicada
* Agrego leer_registro_raw en EMUFS y para tipo3
* En tipo3 hago que cuando se crea un nuevo bloque se lo pone
todo en 0 (asi la GUI se ve mejor). Tambien arreglo un bug
en el que al borrar se estaba haciendo un desplazamiento de mas.
* Agrego un msg de advertencia a la GUI si se compila con -DDEBUG, para prevenir
al usuario de redirigir el flujo stderr a un archivo por posibles problemas
entre curses y fprintf
* Mejoro parser de opciones
* Se agregan a tipo123 los metodos emufs_tipoX_modificar_registro
* Se ajustan punteros dentro de EMUFS en los inicializar
* TODO : Tipo1 modificar no anda por faltante de tipo1_borrar!!
(lo pongo para que no esten como yo 1 hora sin saber por que
se cuelga :-D)
* Se hace una reestructuracion de algunas funciones para facilitar la edicion
de registros desde distintos puntos.
* Ahora se pueden modificar registros desde "Ver Registros" (y cambia on-the-fly!)
y desde Articulos->Modificar
* Si se esta en "Ver registro" y se presiona "e" se abre la ventana para editar los datos
de ese registro :-) ... claro que no guarda nada, porque ahora recien voy a editar
los tipo1,2,3 para agregarle un modificar_registro que solo llama a borrar y luego
a agregar.
* Ver Registro ahora desplaza y resalta los registros, valida movimiento
* GUI ahora toma algo de marametros :
-h Muestra ayuda
archivo.xml tipo <-- genera articulos a partir del XML y el archivo es de tipo "tipo"
NADA <- trata de leer el archivo existente.
Miren los registros para distintos tipo de archivos. Claro que tipo1 y 2 ni
se notan que son distintos, pero el tipo3 si hay muchos ***** :-D
* Agrego '*' al espacio no utilizado en los campos de los articulos cuando
grabo en tipo3, asi en el Ver registro no se mete basura y se ve mucho
mas lindo.
* Ver Registros muestra el primer registro de articulos en pantalla (con scrol!! Ojo, no valido!!).
Los campos numericos los transforma en string y los pone entre ( y ) y ademas
pone el caracter | como separador de campos.
Alan Kennedy [Mon, 12 Apr 2004 03:48:18 +0000 (03:48 +0000)]
Normalizacion de nomenclatura en FSC.c y TIPO2.c, ergo cambios requeridos en emufs.c que lo utiliza directo en ver archivo. Also fix a tipo1.c y tipo3.c dado el cambio del tipo EMUFS_TYPE a EMUFS_Tipo, para que compilen.
Alan Kennedy [Sun, 11 Apr 2004 20:27:01 +0000 (20:27 +0000)]
- emufs.c: Utilizacion de emufs_tipo2_inicializar, idem a lo que hizo luca con su tipo.
- tipo2.c | .h: Added funcion emufs_tipo2_leer_registro, por lo cual el tipo 2 ya se encuentra terminado. Also Added inicializador de punteros a funciones para la estructura EMUFS*, mencionado arriba.
- tipo2_main.c: Se agregaron algunos tests de leer registro, espacio libre, etc.
- Uso tipos EMUFS_XXX en los nuevos emufs_idx_xxx().
- Vuelvo a agregar chequeo de error sobre emufs_did_get_last().
- Agrego algunas 'b' al fopen() para compatibilidad ANSI.
- Saco (*err) = 0; en funciones (para la polémica). Inicializo variable error en
la GUI para que ande.
Ricky, el ultimo punto es para que veas como habia pensado yo lo de los errores.
Si sigue sin convencerte, lo dejamos como vos queres, no tengo ganas de seguir
peleando por esta boludez.
* BUGFIX : error de typo
* Ahora la GUI puede abrir archivos existentes. Si gui se ejecuta sin
parámetros va a abrir el archivo existente. Si se ejecuta pasandole
el parametro articulos.xml genera desde 0 el archivo de articulos.
* Ahora la GUI maneja los articulos con tipo1 y las facturas con t3. Aun queda un pequeño fallo
en la recuperacion, que tal vez sea mio. Lookin' around!!
* Se inicializa otro err no inicializado.
* Se agrega un +1 al ejemplo de tipo1 a ver si con eso seguia andando y lo hace, la GUI no :(
Los Troll han avanzado sobre la ladera sur, la Puerta de Baldur se encuentra en problemas, a medida
que el temible GOTO inunda los campos de tipo1_main :-)
- Se agrega reporte de errores a emufs_did_get_last() y a emufs_did_get_last().
- Se crea una nueva funcion emufs_idx_get_new_id() para reemplazar la serie
emufs_tipoX_get_id().
- Se agrega una macro PERR() que cuando se compila con -DDEBUG imprime un
mensaje de debug por la salida de error (si se compila sin DEBUG no hace
nada).
- Se cambia nombre de emufs_idx_buscar_mayor_id() a
emufs_idx_buscar_mayor_id_libre() que es mas representativo (igual con
emufs_idx_get_new_id() ya practicamente no se usa directamente).
* BUGFIX : en tipo3 cuando pedia lugar estaba faltando agregar sizeof(EMUFS_REG_ID)
* CodeClean : se limpia un poco algunas cosas, se ajusta coding style.
Alan Kennedy [Sun, 11 Apr 2004 02:37:09 +0000 (02:37 +0000)]
- El archivo del tipo 2 ya mete registros y los borra (falta fixear el emufs_ifx_borrar_registro para que los borre de ese indice porque hasta ahora no me funciono ni pa atras (ahora me bajo el nuevo idx.c que subio luca a ver que onda..
- Cambios fsc.c: Implemente una funcion especifica para mi tipo2, emufs_fsc_agregar_gap la cual mete un gap dado el borrado de un registro en el .dat, y si encuentra un gap anterior Y/O posterior, hace los merges que tenga que hacer. Por ahora cuando hacer un merge y tiene que justificar el .fsc, lo hace reg por reg (leeeeentoooo), luego lo hare de a N Registros por vez, como hablaba con Luca hoy por icq...
- Se cambia el prototipo de la función grabar_registro() para que acepte como
último parámetro un puntero a int para guardar un código de error.
(actualice todo para que siga compilando, es transparente si no lo usan)
- Implemento casi todo tipo1_grabar_registro(). Falta hacer get_id() para
empezar a probarlo.
- Se hace que leer_registro() y leer_bloque() devuelvan un puntero al
fragmento de memoria alocada para almacenar el registro/bloque a leer.
Para reportar errores, reciben un puntero a un entero como parametro.
- Se corrige prototipo de emufs_tipo3_grabar_registro().
- Se arregla test3_main.c para que compile.
- Se agrega una constante EMUFS_NOT_FOUND (== (unsigned long) -1 == ULONG_MAX)
para que sea mas legible el codigo (para usar en vez del -1).
Alan Kennedy [Sat, 10 Apr 2004 19:18:49 +0000 (19:18 +0000)]
- Changed routine: emufs_idx_agregar, cambiando el orden de los parametros 2 y 3 que estan invertidos respecto de como se graban en el HD y podia llevar a llamadas erroneas. Chequeen sus llamadas porque probablemente lo tengan que invertir (sorry por la molestia, pero lo cambie para hacerlo homogeneo con el resto).
Quedo asi: int emufs_idx_agregar(EMUFS *emu, EMUFS_REG_ID n_IdReg, EMUFS_BLOCK_ID n_Location)
- Fixed EMUFS_REG_ID emufs_idx_buscar_mayor_id(EMUFS *emu), el cual andaba mal puese devolvia siempre ID 0, ya que comparaba todos los ID's encontrados contra el -1 pero definido en una variable EMUFS_REG_ID (unsigned long int), por lo que nunca encontraba anda mayor que eso, y luego al sumarle uno a ese maximo devolvia siempre 0. (En fin, ahora anda).
- Fixes en tipo2.c y tipo2_main.c. Ahora ya funcione como ayer mi proyecto.