SCR/AL1 - TOME III. Les librairies utilitaires
5. Le groupe s_strs
Le groupe s_strs contient une série de fonctions utilitaires de gestion de strings et de caractères. La plupart sont des fonctions très courtes, mais leur présence permet de simplifier considérablement le travail de programmation et la lisibilité des sources.
Ce groupe de fonctions est compris dans la librairie scr4o.
Fonctions d'allocation
- SCR_malloc : allocation mémoire
- SCR_malloc_doc : allocation mémoire avec trace et rapport
- SCR_realloc : réallocation mémoire
- SCR_malloc_chk: allocation mémoire sans exit en cas d'erreur
- SCR_realloc_doc: réallocation mémoire avec trace et rapport
- SCR_realloc_chk: réallocation mémoire sans exit en cas d'erreur
- SCR_free : libération d'espace mémoire alloué
- SCR_palloc : pseudo-allocation mémoire
- SCR_palloca : pseudo-allocation mémoire avec alignement variable
- SCR_free_mem : espace mémoire libre
- SCR_panic : fonction appelée si la mémoire en pleine
Fonctions de passage de string à tableau de strings
- SCR_mtov : transformation matrice vers vecteur
- SCR_mtovs : transformation matrice vers vecteur
- SCR_vtom : transformation vecteur vers matrice
- SCR_vtoms : transformation vecteur vers matrice, séparateurs multiples
- SCR_vtoms2 : transformation vecteur vers matrice, lignes vides admises
- SCR_vtoms3 : transformation vecteur vers matrice, quotes gérées
- SCR_copy_tbl : duplicie un tableau de strings
- SCR_add_ptr : ajoute un pointeur dans une table et alloue un zstring
- SCR_add_ptr_lg: ajoute un pointeur dans une table y copie un buffer
- SCR_add_ptr_lg_0: ajoute un buffer prolongé de n nuls dans une table
- SCR_text : découpe un string en lignes d'au plus n caractères
- SCR_text_title: imprime un string avec titre en découpant les lignes
- SCR_free_tbl : libération de l'espace alloué par SCR_vtom()
- SCR_tbl_size : calcule le nombre de lignes d'un tableau
Ces fonctions utilisent SCR_malloc() et SCR_realloc().
Fonctions de gestion de caractères
- SCR_lower_char : mise en minuscule d'un caractère
- SCR_upper_char : mise en majuscule d'un caractère
- SCR_is_upper : vérifie qu'un caractère est majuscule
- SCR_is_lower : vérifie qu'un caractère est minuscule
- SCR_is_alpha : vérifie qu'un caractère est alphabétique
- SCR_is_num : vérifie qu'un caractère est numérique
- SCR_is_space : vérifie qu'un caractère est un espace
- SCR_is_anum : vérifie qu'un caractère est alphanumérique
- U_is_in : vérification qu'un caractère se trouve dans un string
- U_pos : position d'un caractère dans un string
- SCR_fnk_txt : retourne le nom d'une touche fonction
- SCR_AnsiToOem : traduit une chaîne Ansi en Ascii
- SCR_AnsiToOemLg: traduit une chaîne Ansi en Ascii
- SCR_OemToAnsi : traduit une chaîne Ascii en Ansi
- SCR_OemToAnsiLg: traduit une chaîne Ascii en Ansi
- SCR_AnsiToOemChar : traduit un caractère Ansi en Ascii
- SCR_OemToAnsiChar : traduit un caractère Ascii en Ansi
Fonctions de gestion de strings
- SCR_lower : mise en minuscules d'un string
- SCR_upper : mise en majuscules d'un string (y compris les accents)
- SCR_pad : ajout de blancs à la fin d'un string
- SCR_asqz : suppression des caractères non alphanumériques
- SCR_sqz : suppression de tous les blancs dans un string
- SCR_strip : suppression des blancs de fin de string
- SCR_strip_lg : suppression des blancs de fin de string de longueur lg
- SCR_stripdc : suppression des caractères excédentaires
- SCR_zstrip : remplacement des blancs de fin par des '0'
- SCR_pstrip_lg : longueur d'un string sans ponctuation de fin
- SCR_pstrip : suppression des caractères de ponctuation de fin
- SCR_compress : compression d'un string
- SCR_stracpy : allocation et copie d'un string
- SCR_stracat : concatène deux strings et alloue le résultat
- SCR_strafcat : concatène deux strings, alloue le résultat et free le premier
- SCR_strfacpy : free d'un pointeur, puis SCR_stracpy()
- SCR_strlcpy : copie limitée d'un string dans un autre
- SCR_strrcpy : copie inversée d'un string dans un autre
- SCR_cstrcmp : compare sans distinction majuscules/minuscules
- SCR_cstrncmp : compare n caractères sans distinction maj/min
- U_index : position d'un string dans un autre
- SCR_grep : recherche généralisée d'un string dans un autre
- SCR_replace : remplacement de strings
- SCR_replace_len: calcule la longueur nécessaire à un remplacement
- SCR_replace_word : remplacement de mots
- SCR_areplace : remplacement de strings avec allocation du résultat
- SCR_areplace_word : remplacement de mots avec allocation du résultat
- SCR_change_char: remplacement d'un caractère
- SCR_crypt : encrypte un string
- SCR_decrypt : decrypte un string
- SCR_code64 : code un buffer en base 64
- SCR_decode64 : décode un buffer en base 64
Fonctions de modification de strings sans en changer la longueur
- U_rjust_text : justification à droite d'un string
- U_ljust_text : justification à gauche d'un string
- U_sqz_text : suppression de blancs dans un string
- U_shift_text : déplacement des caractères dans un string
- U_center_text : centrage d'un string
Fonctions de formattage et déformattage
- SCR_fmt_text : formatage d'un string sur base d'un format
- SCR_ufmt_text : déformatage d'un string sur base d'un format
- SCR_fmt_long : formatage d'un long sur base d'un format
- SCR_ufmt_long : déformatage d'un long sur base d'un format
- SCR_fmt_lg : calcule la longueur d'un string déformatté
- SCR_fmt_dbl : formatage d'un double
- SCR_printf_file: formatte et stocke un string dans un fichier
- SCR_printf_tbl : imprime un tableau de strings dans un fichier
Fonctions agissant sur les noms de fichiers
- SCR_search_path : recherche d'un fichier en fonction d'un path
- SCR_search_file : recherche d'un fichier dans le path SCR_PATH
- SCR_change_ext : modification de l'extension d'un nom de fichier
- SCR_cat_ext : ajout éventuel d'une extension à un nom de fichier
- SCR_rename : renomme un fichier
- SCR_std_filename : standardise un nom de fichier
- SCR_unix_filename : change un nom de fichier en format Unix
Fonctions de lecture de strings
- SCR_get_err_txt : recherche d'un message dans un fichier ASCII ouvert sur base d'un numéro
- SCR_err_txt : recherche d'un message dans le fichier de messages de SCR/AL1 (ASCII) sur base du numéro de message
- SCR_get_err_txt_lang : recherche d'un message dans un fichier ASCII ouvert sur base d'un numéro de message et d'un numéro de langue
- SCR_err_txt_lang : recherche d'un message dans le fichier de messages de SCR/AL1 (ASCII) sur base du numéro de message et d'un numéro de langue
- SCR_get_err_txt_t : recherche d'un message dans un fichier ASCII ouvert sur base d'un nom de message
- SCR_err_txt_t : recherche d'un message dans le fichier de messages de SCR/AL1 (ASCII) sur base du nom de message
- SCR_get_err_txt_t_lang : recherche d'un message dans un fichier ASCII ouvert sur base d'un nom de message et d'un numéro de langue
- SCR_err_txt_t_lang : recherche d'un message dans le fichier de messages de SCR/AL1 (ASCII) sur base du nom de message et d'un numéro de langue
- SCR_read_line : lecture d'une ligne dans un fichier ouvert
- SCR_get_app_pos : positionne sur le début des données ajoutées à l'aide de scr4_app
- SCR_get_app_size : calcule la taille d'un fichier concaténé à l'aide de scr4_app
- SCR_flock : locking d'un fichier
- SCR_funlock : délocking d'un fichier
Fonctions de traduction en Postscript
- PS_text : traduction d'un fichier ASCII
- PS_labels : construction d'un input Postscript d'étiquettes
Fonctions de vérification
- SCR_check_bank : vérification d'un numéro de compte bancaire
- SCR_check_nb : vérification d'un numéro de registre national
Fonctions d'interprétation de fichiers
- PC_list : retourne la liste des items définis dans un fichier organisé comme /etc/passwd ou /etc/printcap
- PC_infos : retourne toutes les informations de définition d'un item donné
- PCI_getinfos : retourne toutes les informations de définition
- PciGetDriveInfoKB : retourne la taille totale et disponible d'un disque
- PC_exec : exécute les instructions liés à un item donné
- FI_file : détermine le type d'un fichier
- SCR_FindStringPos : recherche d'un string dans un fichier
Fonctions de dump/load de données
- SCR_LoadString : load un string (avec allocation)
- SCR_LoadSString : load un string statique
- SCR_LoadShort : load d'un short
- SCR_DumpString : dump d'un string
- SCR_DumpShort : dump d'un short
- SCR_dumphexfd : dump un fichier en Hexa
- SCR_read_file : lit le contenu d'un fichier dans un tableau
- SCR_save_file : sauve un tableau de string dans un fichier
Fonctions d'archivage de fichiers (pak)
Ces fonctions servent de support à scr4_pak. Elles archivent des fichiers en les compressant.
- AR_add : ajoute des fichiers dans une archive
- AR_extract : extrait des fichiers d'une archive
- AR_list : liste le contenu d'une archive
- AR_error : retourne le message de la dernière erreur
Fonctions standard DOS/UNIX
Ces fonctions permettent d'effectuer des opérations semblable en DOS et en UNIX.
- STD_unit : retourne le nom de l'unité correspondant au paramètres
- STD_doscpin : copie un fichier sur une disquette DOS
- STD_doscpout : copie un fichier provenant d'une disquette DOS
- STD_dosformat : formatte une disquette DOS
- STD_subshell : lance un sous-shell
Fonctions de gestion des imprimantes
Ces fonctions permettent (en DOS) de vérifier la présence d'une imprimante parallèle.
- PciParalTest : retourne n'état de la porte imprimante
- PciParalInit : réinitialise l'imprimante
- PciTestLPT : teste l'accès à une l'imprimante
Fonctions d'interrogation de la configuration d'un PC
- PciGetInfos : retourne la configuration du PC
- PciGetDriveInfo : retourne les informations sur un drive
Opérations logiques sur des listes
- SCR_union_list : union de deux listes
- SCR_dif_list : différence de deux listes
- SCR_inter_list : intersection de deux listes
- SCR_inter : intersection de deux tableaux de ptrs
- SCR_union : union de deux tableaux de ptrs
- SCR_dif : union de deux tableaux de ptrs
Calcul en précision infinie
- InfAdd : addition de deux entiers
- InfDiff : substraction de deux entiers
- InfMult : multiplication de deux entiers
- InfDiv : division de deux entiers
Autres fonctions
- SCR_copy_file : copie un fichier
- SCR_copy_file_ex : copie un fichier avec ou sans bufferisation
- SCR_copy_file_flush : copie un fichier en flushant tous les n bytes
- SCR_dumphex : dump un fichier sous forme hexadécimale
5.1 SCR_malloc
5.2 SCR_malloc_doc (file s_allc.c:240)
5.3 SCR_realloc
5.4 SCR_malloc_chk (file s_allc.c:187)
5.5 SCR_realloc_doc (file s_allc.c:387)
5.6 SCR_realloc_chk (file s_allc.c:301)
5.7 SCR_free (file s_allc.c:445)
5.8 SCR_palloc (file s_allc.c:559)
5.9 SCR_palloca (file s_allc.c:505)
5.10 SCR_free_mem
5.11 SCR_panic (file s_panic.c:29)
5.12 SCR_mtov (file s_stmtov.c:31)
5.13 SCR_mtovs (file s_stmtov.c:68)
5.14 SCR_vtom (file s_stvtom.c:99)
5.15 SCR_vtoms (file s_stvtom.c:39)
5.16 SCR_vtoms2 (file s_stvtom.c:155)
5.17 SCR_vtoms3 (file s_stvtom.c:314)
5.18 SCR_copy_tbl (file s_staddp.c:225)
5.19 SCR_add_ptr (file s_staddp.c:155)
5.20 SCR_add_ptr_lg (file s_staddp.c:112)
5.21 SCR_add_ptr_lg_0 (file s_staddp.c:45)
5.22 SCR_text (file s_sttext.c:44)
5.23 SCR_text_title (file s_sttxtt.c:34)
5.24 SCR_free_tbl (file s_staddp.c:188)
5.25 SCR_tbl_size (file s_staddp.c:208)
5.26 SCR_lower_char (file s_stlow.c:42)
5.27 SCR_upper_char (file s_stuppr.c:43)
5.28 SCR_is_upper (file s_stuppr.c:15)
5.29 SCR_is_lower (file s_stlow.c:19)
5.30 SCR_is_alpha (file s_stisal.c:17)
5.31 SCR_is_num (file s_stisal.c:39)
5.32 SCR_is_space (file s_stuppr.c:118)
5.33 SCR_is_anum (file s_stisal.c:63)
5.34 U_is_in (file s_stuisn.c:11)
5.35 U_pos (file s_stupos.c:13)
5.36 SCR_fnk_txt (file s_keytxt.c:72)
5.37 SCR_AnsiToOem (file s_stansi.c:290)
5.38 SCR_AnsiToOemLg (file s_stansi.c:326)
5.39 SCR_OemToAnsi (file s_stansi.c:192)
5.40 SCR_OemToAnsiLg (file s_stansi.c:227)
5.41 SCR_AnsiToOemChar (file s_stansi.c:254)
5.42 SCR_OemToAnsiChar (file s_stansi.c:167)
5.43 SCR_lower (file s_stlow.c:60)
5.44 SCR_upper (file s_stuppr.c:106)
5.45 SCR_pad (file s_stpad.c:27)
5.46 SCR_asqz (file s_stsqz.c:20)
5.47 SCR_sqz (file s_stsqz.c:45)
5.48 SCR_strip (file s_ststrp.c:23)
5.49 SCR_strip_lg (file s_ststrp.c:53)
5.50 SCR_stripdc (file s_ststrd.c:21)
5.51 SCR_zstrip (file s_stzstr.c:13)
5.52 SCR_pstrip_lg (file s_stpstr.c:20)
5.53 SCR_pstrip (file s_stpstr.c:51)
5.54 SCR_compress (file s_stcmpr.c:280)
5.55 SCR_stracpy (file s_stacpy.c:16)
5.56 SCR_stracat (file s_stacpy.c:61)
5.57 SCR_strafcat (file s_stacpy.c:91)
5.58 SCR_strfacpy (file s_stacpy.c:41)
5.59 SCR_strlcpy (file s_stlcpy.c:25)
5.60 SCR_strrcpy (file s_strcpy.c:20)
5.61 SCR_cstrcmp (file s_strcmp.c:12)
5.62 SCR_cstrncmp (file s_strcmp.c:27)
5.63 U_index (file s_stuind.c:14)
5.64 SCR_grep (file s_stgrep.c:47)
5.65 SCR_replace (file s_strepl.c:228)
5.66 SCR_replace_len (file s_strepl.c:79)
5.67 SCR_replace_word (file s_strepl.c:198)
5.68 SCR_areplace (file s_strepl.c:135)
5.69 SCR_areplace_word (file s_strepl.c:160)
5.70 SCR_change_char (file s_stchch.c:21)
5.71 SCR_crypt (file s_stcrpt.c:12)
5.72 SCR_decrypt (file s_stcrpt.c:39)
5.73 SCR_code64 (file s_code64.c:33)
5.74 SCR_decode64 (file s_code64.c:97)
5.75 U_rjust_text (file s_strjus.c:18)
5.76 U_ljust_text (file s_stljus.c:18)
5.77 U_sqz_text (file s_stusqz.c:17)
5.78 U_shift_text (file s_stushf.c:23)
5.79 U_center_text (file s_stucen.c:20)
5.80 SCR_fmt_text (file s_stfmtt.c:26)
5.81 SCR_ufmt_text (file s_stufmt.c:27)
5.82 SCR_fmt_long (file s_stfmtl.c:31)
5.83 SCR_ufmt_long (file s_stufml.c:26)
5.84 SCR_fmt_lg (file s_stlfmt.c:16)
5.85 SCR_fmt_dbl (file s_stfmtd.c:44)
5.86 SCR_printf_file (file s_stprf.c:14)
5.87 SCR_printf_tbl (file s_stprf.c:44)
5.88 SCR_search_path (file s_stsrcf.c:44)
5.89 SCR_search_file (file s_stsrcf.c:123)
5.90 SCR_change_ext (file s_stchex.c:31)
5.91 SCR_cat_ext (file s_stctex.c:27)
5.92 SCR_rename (file s_stfren.c:11)
5.93 SCR_std_filename (file s_stfnam.c:39)
5.94 SCR_unix_filename (file s_stfnam.c:14)
5.95 SCR_get_err_txt (file s_sterrt.c:275)
5.96 SCR_err_txt (file s_sterrt.c:310)
5.97 SCR_get_err_txt_lang (file s_sterrt.c:199)
5.98 SCR_err_txt_lang (file s_sterrt.c:244)
5.99 SCR_get_err_txt_t (file s_sterrt.c:88)
5.100 SCR_err_txt_t (file s_sterrt.c:154)
5.101 SCR_get_err_txt_t_lang (file s_sterrt.c:22)
5.102 SCR_err_txt_t_lang (file s_sterrt.c:107)
5.103 SCR_read_line (file s_strdln.c:24)
5.104 SCR_get_app_pos (file s_stgetp.c:44)
5.105 SCR_get_app_size (file s_stgetp.c:112)
5.106 SCR_flock (file s_flock.c:13)
5.107 SCR_funlock (file s_flock.c:34)
5.108 PS_text (file s_stpst.c:116)
5.109 PS_labels (file s_stpsl.c:40)
5.110 SCR_check_bank (file s_stchk.c:14)
5.111 SCR_check_nb (file s_strnat.c:14)
5.112 PC_list (file s_stpcl.c:94)
5.113 PC_infos (file s_stpcin.c:29)
5.114 PciGetInfos (file s_pcinfo.c:189)
5.115 PciGetDriveInfoKB (file s_pcinfo.c:83)
5.116 PC_exec (file s_stpcex.c:20)
5.117 FI_file (file s_file.c:113)
5.118 SCR_FindStringPos (file s_stfstr.c:17)
5.119 SCR_LoadString (file s_stobj.c:19)
5.120 SCR_LoadSString (file s_stobj.c:49)
5.121 SCR_LoadShort (file s_stobj.c:75)
5.122 SCR_DumpString (file s_stobj.c:92)
5.123 SCR_DumpShort (file s_stobj.c:116)
5.124 SCR_dumphexfd (file s_stdhex.c:48)
5.125 SCR_read_file (file s_dispf.c:8)
5.126 SCR_save_file (file s_dispf.c:55)
5.127 AR_add (file s_stpaka.c:23)
5.128 AR_extract (file s_stpakx.c:47)
5.129 AR_list (file s_stpakl.c:39)
5.130 AR_error (file s_stpak1.c:26)
5.131 STD_unit (file s_std.c:22)
5.132 STD_doscpin (file s_std.c:96)
5.133 STD_doscpout (file s_std.c:59)
5.134 STD_dosformat (file s_std.c:135)
5.135 STD_subshell (file s_std.c:167)
5.136 PciParalTest (file s_pcipar.c:107)
5.137 PciParalInit (file s_pcipar.c:64)
5.138 PciTestLPT (file s_pcipar.c:161)
5.139 PciGetDriveInfo (file s_pcinfo.c:35)
5.140 SCR_union_list (file s_stun.c:117)
5.141 SCR_dif_list (file s_stdiff.c:68)
5.142 SCR_inter_list (file s_stinte.c:67)
5.143 SCR_inter (file s_stinte.c:15)
5.144 SCR_union (file s_stun.c:28)
5.145 SCR_dif (file s_stdiff.c:15)
5.146 InfAdd (file s_infadd.c:24)
5.147 InfDiff (file s_infsub.c:24)
5.148 InfMult (file s_infmul.c:77)
5.149 InfDiv (file s_infdiv.c:35)
5.150 SCR_copy_file (file s_copy.c:86)
5.151 SCR_copy_file_ex (file s_copy.c:24)
5.152 SCR_copy_file_flush (file s_copy.c:108)
5.153 SCR_dumphex (file s_stdhex.c:18)