Nom du programme : ConfLib 1.00b1 (Bêta publique) Auteur : Flanker (Matthieu Gallet) Date : 11/07/2004 Mail : matthieu_gallet at yahoo.fr Type : Bibliothèque de fonctions dynamique pour programmes kernel Calculatrices : TI-89, TI-92Plus, Voyage 200 (toutes versions logicielles et matérielles, avec PreOS 0.71 ou supérieur) ConfLib set une bibliothèque qui permet de gérer des fichiers de configuration simples : vous pouvez facilement insérer ou récupérer des entiers (sur 32bits) ou des chaînes de caractères 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 différentes 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 intégré) qui doit être placé dans le répertoire SYSTEM du kernel (par défaut c'est le répertoire 'main') Si le fichier existe déjà et que ce n'est pas un texte, Conflib renverra CONFLIB_FILE_NOT_FOUND. Si le fichier n'existe pas, Conflib essaiera de le créer. Si Conflib écrit dans un fichier archivé, ce dernier sera réarchivé après l'écriture. Dans le chemin donné en argument, il ne faut pas spécifier le répertoire (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 répertoire SYSTEM uniquement si le répertoire n'est pas spécifié) Pour une description plus précise 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 résultat renvoyé. Les paramètres sont passés via la pile, comme les fonctions C traditionnelles. **** Remerciements **** Les membres de yAronet et de l'3l33t (plus spécialement Godzil, PpHd, Pollux, Squale, Spectras, Uther) pour leurs commentaires et leur aide. **** Historique **** 15/10/2004 : début du codage 10/11/2004 : Première 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 autorisés à 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 à améliorer 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" -----------------------------------------------------------