jueves, 12 de enero de 2012

Petición abierta! Ayuda

Update: durante el día logre un algoritmo que escribe con formato, pero no he terminado de probarlo por lo que puede que tenga algun error, pero la estoy testeando. Ya soporta los formatos \n, \t, %s, %c, %d, %i y %x. Se que se me escapan algunos pero por eso la estoy ampliando.
Entonces en nuos tenemos las funciones printf (escribe texto sin formato), printk (escribe texto con formato) y dprintf(escribe texto sin formato en cualquier posición). Me falta hacer una función dprintk para escribir con formato en cualquier posición de la pantalla.
--------------------------------------------------------------------------------------------------------------------------------
Utilizo este medio para pedirle ayuda o mas bien un favor a los lectores de este blog. Quien pueda y sea tan amable ¿podría mejorar la función printf de nuos?
El código lo pueden descargar aquí o lo pueden ver en el ultimo release de nuos, aun que recomiendo el suministrado en este post porque esta algo mas comentado que el del release. Pues bien, ¿que hay que mejorar? Simplemente se necesita implementar una de las opciones mas usadas de la función: el formato.
¿Qué es el formato?
El formato es cuando almacenas un valor que puede variar, p.ej:

int a, b, c;
a = 5;
b = 6;
c = a+b; //c=11
printk("La suma entre %i y %i es igual a %i\n", a, b, c)

Esto muestra el mensaje "La suma entre 5 y 6 es igual a 11". Si bien esto se puede hacer de otra forma, p.ej:

int a, b, c;
a = 5;
b = 6;
c = a+b; //c=11
printk("La suma entre ");
printk(a);
printk(" y ");
printk(b);
printk(" es igual a ");
printk(c);
printk("\n");

...pero no es tan armonioso, ni estructurado, ni entendible, ni fácil de escribir. Cabe destacar que existen las funciones ntos(dest,src,base) y ntohex(dest,decnum)que sirven para convertir números, tanto decimales como hexadecimales, en cadenas de texto char *.  El principal problema y la razón de esta petición abierta es para crear la función printk, o mas bien la estructura que acepte formato. Recuerda que todos tus aportes serán atribuidos, tanto en el archivo fuente como en la wiki de nuos. Por favor, colabora con este proyecto open source.
Gracias a todos los que colaboren con el proyecto.
Puedes descargar el archivo fuente de la función aquí.

No hay comentarios.:

Publicar un comentario