#Hola a todos,
Hoy voy a comentarles acerca de una librería hecha en C y C++ para el tratamiento de archivos de configuración, tal como sería un archivo XML o properties.
A primera vista les puede parecer un tanto complicada la forma de crear sus archivos de configuración, pero en la programación es bastante cómoda y se torna fácil
.
Un fragmento de lo que puede ser un archivo de configuración válido.
// An example configuration file that stores information about a store.
// Basic store information:
name = “Books, Movies & More”;
// Store inventory:
inventory =
{
books = ( { title = “Treasure Island”;
author = “Robert Louis Stevenson”;
price = 29.99;
qty = 5; },
{ title = “Snow Crash”;
author = “Neal Stephenson”;
price = 9.99;
qty = 8; }
);
…
O puede ser, como ya comenté, tipo properties, por ejemplo:
###########################################################
# Rodrigo Ramos Godínez #
# Archivo de configuración de ejemplo #
# mail: crackduoro@gmail.com #
###########################################################
version = “1.0″;
nombre = “Rodrigo”;
nick = “lyonn”;
apellido = “Ramos”;
edad = 21;
Es un ejemplo bastante sencillo el archivo de configuración, pero al final si buscan la forma de llave-valor les podrá resultar muy útil.
En programación podemos verificar que el archivo esté bien formado =P y eso es bastante bueno ya que nos evitará muchos dolores de cabeza posteriores.
Un ejemplito para dejar más claro como se obtendría primero que sea válido el archivo de configuración, después obtenemos dos llaves y las mandamos por pantalla.
#include <stdlib.h>
#include <stdio.h>
#include <libconfig.h>
int main(int argc, char *argv[]) {
config_t config;
config_setting_t *setting;
const char *str;
config_init(&config);
//Verificamos que el archivo de configuración se encuentre y que esté bien formado
if (!config_read_file(&config, “config_files/config.cfg”))
{
fprintf(stderr,”%s, %d -%s\n”, config_error_file(&config), config_error_line(&config), config_error_text(&config));
config_destroy(&config);
return (EXIT_FAILURE);
}
//Obtenemos el valor de la llave
if (config_lookup_string(&config, “nombre”, &str))
printf(“%s \n”, str);
else
fprintf(stderr, “No hay un nombre disponible”);
//Otro valor de una llave
if (config_lookup_string(&config, “apellido”, &str))
printf(“%s \n”, str);
else
fprintf(stderr, “No hay apellido disponible”);
return (EXIT_SUCCESS);
}
Bien, ahora solo falta compilar…Hay de dos formas posibles, la primera es que la librería config esté en /usr/lib o especificar el path completo, ambos como flags (-l, -I,) a gcc.
Ejemplo 1:
gcc $SOURCE -o $OUTPUT -lconfig
Ejemplo 2:
gcc $SOURCE -o $OUTPUT -I./usr/local/lib/libconfig.so.9
Y pues a ya está, a usarlo como mejor vaya con sus necesidades.
Para descargar, ver más documentación de la lib (API), etc pueden consultar la siguiente liga
Espero que les sirva en algún momento de la vida esta información, muy reducida, pero está….
echo $SALUDOS;