Nom du programme : ConfLib 1.00b1 (Bta publique)

Auteur : Flanker (Matthieu Gallet)
Date : 11/07/2004
Mail : matthieu_gallet at yahoo.fr
Type : Bibliothque de fonctions dynamique pour programmes kernel
Calculatrices : TI-89, TI-92Plus, Voyage 200 (toutes versions logicielles et matrielles, avec PreOS 0.71  ou suprieur)

ConfLib set une bibliothque qui permet de grer des fichiers de configuration simples : vous pouvez facilement insrer ou rcuprer des 
entiers (sur 32bits) ou des chanes de caractres dans un texte donn.


**** 5 fonctions sont disponibles pour l'instant ****

en voici les prototypes C
long value = conflib::get_num_key(const char *file, const char *section, const char *key, long default, const short *error)
short error = conflib::add_num_key(const char *file, const char *section, const char *key, long value)
short error = conflib::remove_key(const char *file, const char *section, const char *key)
short error = conflib::get_string_key(const char *file, const char *section, const char *key, const char *value, long max_length, const char *default)
short error = conflib::add_string_key(const char *file, const char *section, const char *key, const char *value)

Les diffrentes valeurs possibles pour error sont explicites : 
CONFLIB_OK equ 0
CONFLIB_FILE_NOT_FOUND equ 1
CONFLIB_KEY_NOT_FOUND equ 2
CONFLIB_INVALID_KEY equ 3
CONFLIB_UNSAVED_FILE equ 4
CONFLIB_UNARCHIVED_FILE equ 5
CONFLIB_CANT_CREATE_FILE equ 6
CONFLIB_SECTION_NOT_FOUND equ 7


file est un fichier TEXT (cr ou modifi avec l'diteur intgr) qui doit tre plac dans le rpertoire SYSTEM du kernel (par dfaut c'est le rpertoire 'main')
Si le fichier existe dj et que ce n'est pas un texte, Conflib renverra CONFLIB_FILE_NOT_FOUND.
Si le fichier n'existe pas, Conflib essaiera de le crer.
Si Conflib crit dans un fichier archiv, ce dernier sera rarchiv aprs l'criture.

Dans le chemin donn en argument, il ne faut pas spcifier le rpertoire 
(i.e. il ne faut pas mettre conflib::get_num_key("folder\file", ... mais conflib::get_num_key("file", ...)

Je pourrais peut-ter changer a (chercher dans le rpertoire SYSTEM uniquement si le rpertoire n'est pas spcifi)

Pour une description plus prcise des fonctions, jetez donc un oeil aux fichiers .h (Conflib_asm et Conflib_C)

**** Note aux programmeurs en asm **** 
Seul le registre d0 est modifi et contiendra le rsultat renvoy.
Les paramtres sont passs via la pile, comme les fonctions C traditionnelles.


**** Remerciements ****
Les membres de yAronet et de l'3l33t (plus spcialement Godzil, PpHd, Pollux, Squale, Spectras, Uther) pour leurs commentaires et leur aide.


**** Historique ****
15/10/2004 : dbut du codage
10/11/2004 : Premire distribution publique


**** License ****

Je ne peux pas tre tenu comme tant responsable d'aucun dommage occasionn par l'utilisation directe ou indirecte de Conflib
Vous n'tes pas autoriss  redistribuer tout ou partie de ce package sans mon autorisation
Le code source est fourni pour voter curiosit ou pour vous permettre de m'aider  amliorer le programme.
Merci de me demander avant d'en utiliser des parties dans vos programmes





**** Format of the text file ****
* comments are accepted : a line is a comment if it begins by a '#' character
* spaces are accepted in front of a key and around the '=' sign, but NOT at the end of a line
* strings are delimited by '"' characters
any valid variable name begins by _, a-z or A-Z and contains only characters among _, a-z, A-Z and 0-9. Its length is arbitrary.
any valid section name begins by _, a-z or A-Z and contains only characters among _, a-z, A-Z and 0-9 and its length is inferior or equal to 16 chars.

exemple of correct conf file :
-----------------------------------------------------------


#comment 1
key_1 = 45312
key_2= 545
key_4   =0121647
[section_1]
another_key = "string"
  #another comment
[section_2]
key_1 = "Hello, world"
key_2 = "I'm Flanker"

conflib::get_num_key("file","section_1","another_key",12,&error) will return 12 and error = CONFLIB_INVALID_KEY
conflib::get_num_key("file","","key_1",12,&error) will return 45312 and error = CONFLIB_OK
conflib::get_string_key("file","section_2","key_1",*value,10,*default) will return CONFLIB_OK and value = "Hello, world"




-----------------------------------------------------------

examples of incorrect files :

(spaces after the key value)
-----------------------------------------------------------
 key = 755545      
-----------------------------------------------------------

(comment after a key)
-----------------------------------------------------------
 key = 5451212#comment
-----------------------------------------------------------


("" character int he middle of a string)
-----------------------------------------------------------
key="strings"strings"
-----------------------------------------------------------





