Newsgroup: it.comp.lang.c
Titolo: file di testo per le opzioni

Mi sapreste indicare qualche esempio di programma che usa un normale
file di testo per le opzioni di default di un programma generico? Il
formato classico <chiave> = <valore> va benissimo.
 
Grazie in anticipo.
-- 
      		Attenzione:
      Se fumate a letto, la cenere che cadra' potreste essere voi.
      		-- In un albergo

 Grazie in anticipo.
 
c'e' una libreria utile in queste circostanze: libconfig, presente anche 
nelle distribuzioni linux per la gestione di file di configurazione, fa 
decisamente di piu' di quello che richiedi ma e' gia' pronta e sembra 
funzionare bene
 
per riferimento
http://www.hyperrealm.com/libconfig/
 

 Grazie in anticipo.
 
Fallo a mano, non ci vuole molto. :-)
Ciao!
 
P.S. Per la cronaca, anch'io ho inventato uno specifico metalinguaggio
e scritto una libreria apposita (
http://code.google.com/p/disml/
 - qui
le specifiche 
http://code.google.com/p/disml/source/browse/trunk/docs_n_stuff/spec.disml.html
)

 Grazie in anticipo.
 
Nello stesso stile di "libconfig" c'č anche "liblcfg", minimale
e ancora piů semplice da usare (necessario il supporto al C99 per
compilarla): 
http://liblcfg.carnivore.it/
 
 
-- 
Vincenzo Mercuri | 
www.backbox.org
 

 Fallo a mano, non ci vuole molto. :-) Ciao!
 
Eh, teoricamente per le coppie chiave valore è vero, io
iniziai così. Poi mi dissi "perché non poter gestire le
espressioni matematiche", poi "eh, ma il formato libero
sarebbe meglio"... e andando così, mi ritrovai ad aver
scritto l'interprete di un limitato-ma-manco-troppo
sottinsieme del C. Successivamente ho scoperto che avevo
buttato decine di ore di lavoro; esisteva un interprete
del C bello e pronto e che funzionava anche bene.
 
Adesso mi sto ingrifando con LUA che pare essere proprio
quel che molti potrebbero volere, ovvero qualcosa più del
meccanismo chiave valore ma non un malloppo da portarsi
appresso di cui usare solo una limitatissima parte delle
funzionalità. Però darò un'occhiata anche a libconfig,
sperando che funzioni sotto win.
 
ciao!
 
Apx.
 
-- 
Computer multitasking: oggetto che
può essere messo fuori uso da più
persone contemporaneamente.
 


Grazie ad entrambi
-- 
      - Inutile resistere! - ringhio' la guardia.
      		-- Douglas Adams, "Guida Galattica per gli Autostoppisti"

 quel che molti potrebbero volere
 
Ma dai, ieri ho scritto una risposta proponendo Lua, poi ho detto "no, è 
troppo diverso da quello che ha chiesto".
 
In questo caso suggerisco di includere Lua  (il runtime con la sua 
libreria standard è nell'ordine del centinaio di kilobyte) e fai 
semplicemente interpretare il file di configurazione come una table, la 
struttura è 
parametri = {
   foo = 42,
   bar = "ciao",
   baz = 0.0001,
}
 
dove { } è il costrutture della table, puoi anche scartarlo nel file di 
configurazione e aggiungerlo tu prima di far eseguire il file 
all'interprete Lua.
 
Vedi [1] e [2] per un esempio veloce.
 
 
[1] 
http://cc.byexamples.com/2008/06/07/how-to-embed-lua-51-in-c/
 
[2] 
http://www.lua.org/pil/25.1.html
 

 semplicemente interpretare il file di configurazione come una table
 
Avete entrambi ragione nel dire che è una gran figata, ma IMHO a
livello architetturale è la classica situazione mosca/cannone :-)
Personalmente non mi è mai piaciuto spargere la logica applicativa in
più punti, figuriamoci nei file di configurazione, ma questo è più un
gusto personale e dipende troppo dallo scenario specifico.
Ciao!

 più punti, figuriamoci nei file di configurazione, 
 
Non sarebbe logica anche se è codice interpretato, intendevo limitare il 
file alla creazione della struttura dati. Ad ogni modo in Lua si crea 
facilmente una sandbox.
 
IIRC Lua nasce proprio dall'esigenza espressa dall'OP, o comunque era 
una delle esigenze alla base del suo sviluppo.


 
sigh... non l'avevo letta :(


 sigh... non l'avevo letta :(
 
Per forza, non l'ho mandata. Il senso del mio "ma dai" era "ho scritto 
una risposta, l'ho cancellata e il giorno successivo qualcun altro 
propone lo stesso. Ma dai!".