Doc en : http://www.scolring.org/files/doc_html/syspack.html
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Diverses API pour Scol à intégrer typiquement, lorsque validées, dans le noyau
une des bibliothèques stables de Scol.
*** benchmark.c
===============
Fonctions de benchmarks.
- ObjBenchmark : nouvel objet Scol. Il pourra s'étoffer en interne par la suite,
si nécessaire ... :)
- _benchmarkStart : lance le test. Détermine le temps que met un code Scol Ã
s'exécuter sur la machine.
Prototype : fun [Chn] ObjBenchmark
- _benchmarkEnd : stoppe le test et retourne les valeurs obtenues sous forme de paire
("clef" "valeur"). L'objet est détruit.
Prototype : fun [ObjBenchmark] [[S S] r1]
*** standard_library.c
======================
Nouvelles fonctions de la bibliothèque standard.
- strextrS : extraction de sous-chaines d'une chaine selon un pattern particulier.
Cette fonction est similaire à 'strextr' mais avec la définition d'un pattern.
Prototype : fun [S S] [[S r1] r1]
- listextr : extraction de la sous-liste contenue entre deux indices d'une liste.
Prototype : fun [[u0 r1] I I] [u0 r1]
- strfind2List : liste des occurences d'une sous-chaine dans une chaine.
strfind ne retourne que la position de la première occurence, strfind2List retourne
les positions de toutes les occurences trouvées. Possibilité de ne commencer
la recherche qu'à partir d'une position initiale donnée.
Prototype = fun [S S I] [I r1]
- strfindAnyChar : retourne la première occurence trouvée dans la chaine 'entrée' en
débutant à une position donnée, d'un des caractères présent dans une chaîne 'motif'.
Par exemple, < strfindAnyChar "ouagadougou" "gud" 0 > retournera le tuple [1 "u"].
Prototype : fun [S S I] [I S]
- strncat : concatène deux chaines, la seconde chaîne étant ajouté au plus la
longueur indiquée.
Prototype : fun [S S I] S
- strtruncate : tronque une chaîne à une longueur voulue. Attention, la chaîne
est dynamiquement modifiée et sa mémoire allouée réallouée si bien que son contenu
initial est perdu.
Les écritures suivantes donnent le même résulat mais je conseille la première :
< strtruncate maChaine 10; _fooS maChaine; >
< set maChaine = strtruncate maChaine 10; _fooS maChaine; >
Prototype : fun [S I] S
- _fooF : affiche dans la console et écrit dans le log un flottant (F). Cette
fonction est similaire à _fooId (pour les I).
Prototype : fun [F] F
- _fooFn : indentique à _fooF mais permet de limiter la longueur de la partie décimale.
Prototype : fun [F I] F
Example : <_fooFn 12.225 2;> affichera 12.23 (mais la variable restera à 12.255)
- strreplace : remplace toutes lesoccurences d'une sous-chaine dans une chaine Ã
partir d'une position donnée. Retourne une nouvelle chaine.
Prototype : fun [S S S I] S
- strF : fonction analogue à la fonction standard C sprintf quant à son objectif.
Prototype : fun [S u0] S
Remarque : la fonction est polymorphique sur son deuxième argument. Attention cependant,
ce 2nd argument est censé être un TUPLE à l'exclusion de tout autre chose. Si tel n'était
pas le cas, aucune erreur ne se décelée à la compilation mais l'application crashera lors
de l'appelà cette fonction. Donc, le second argument est un tuple !
Example : <
typeof chaine = S;;
...
set chaine = strF "La prise de la %s a eu lieu le %d %s %d à %s." ["Bastille" 14 "juillet" 1789 "Paris"];
// Chaine contiendra désormais : La prise de la Bastille a eu lieu le 14 juillet 1789 à Paris.
>
- sprintf : alias de strF.
- printf : même chose que sprintf / strF mais ajoute la chaine résultat au log / à la console.
Le flag peut valoir une des valeurs suivantes : 1, 2, 4, 8, 16 (mask du log). Même remarque que
pour strF.
Prototype : fun [S u0 I] S
Voir la doc temporaire : docs/standard_library.html
- memoryInfos : retourne des informations sur l'usage actuelle de la mémoire
Retourne toujours NIL sur un système autre que MS Windows.
Prototype : fun [] [I I I I I I I I]
* le % total utilisé
* mémoire physique totale (ko)
* mémoire phyique libre (ko)
* mémoire paginée totale (ko)
* mémoire paginée libre (ko)
* mémoire virtuelle totale (ko)
* mémoire virtuelle libre (ko)
* non implémenté. Toujours 0.
- powerInfos : retourne des informations sur l'alimentation courante
Retourne toujours NIL sur un système autre que MS Windows.
Prototype : fun [] [I I I I I]
* Branché actuellement sur secteur : 0 : non, 1 : oui, 255 : inconnu
* Etat actuel de la batterie : 1 : capacité > 60%, 2 : capacité < 33%, capacité < 5%,
8 : en charge, 128 : pas de batterie (typiquement sur secteur), 255 : inconnu
(peut prendre une combinaison de ces valeurs, par exemple 9 (8 et 1))
* Capacité actuelle de la batterie (0 -> 100) ou 255 si inconnu
* Temps restant estimé en secondes
* Non implémenté. Vaut 0.
- memoryMinMax : retourne l'occupation mémoire minimale et maximale du processus de la VM courante
(seulement le processus, sans les dépendances).
Retourne toujours NIL sur un système autre que MS Windows.
Prototype : fun (] [I I]
* valeur minimale
* valeur maximale
- osInfos : retourne les informations disponibles sur le système d'exploitation
Prototype : fun [] [S S S S]
Sous Microsoft Windows :
* Système d'exploitation : 2000, XP, Vista et Seven
* Service pack (s'il y a lieu)
* Build NUMBERFMT
* Architecture (32 ou 64 bits)
Sous GNU/Linux (renvoie 'uname', peut changer selon les distributions) :
* Système d'expoitation
* Version du kernel
* Version de la distribution
* Architecture
Autres systèmes :
retourne nil
Exemple MS Windows :
_fooS sprintf "OS : %s\nService pack : %s\nBuild number : %s\nArchitecture : %s\n" osInfos;
Exemple GNU/Linux :
_fooS sprintf "OS : %s\nKernel :%s\nDistribution : %s\nArchitecture : %s\n" osInfos;
Affichage possible sous MS Windows :
OS : Microsoft Windows Seven
Service pack :
Build number : 7600
Architecture : 32-bit
Affichage possible sous GNULinux :
OS : Linux
Kernel : 2.6.32-34-generic
Distribution : #76-Ubuntu SMP Tue Aug 30 16:19:34 UTC 2011
Architecture : i686
- getUserName : retourne le nom de l'utisateur courant.
Interroge la variable d'environnement (USER sous Linux, USERNAME sous Windows)
Prototype : fun [] S
- getUserRealName : retourne le nom réel de l'utilisateur courant.
Sous Windows, cette fonction est identique à 'getUserName'.
Sous GNU/Linux, cette fonction interroge le fichier /etc/passwd et retourne la valeur
correspondante s'il y a lieu. En cas d'erreur, retourne de la même façon que 'getUserName'.
Prototype : fun [] S
- getScolPath : retourne le chemin absolu de l'exécutable scol.
Prototype : fun [] S
Exemple : _fooS getScolPath;
>> C:\Program Files\Scol Voyager (windows)
>> /home/iri/Works/Prog/Scol (linux)
- sleep : met en pause le nombre indiqué de secondes.
Sous MS Windows, retourne toujours 0.
Sous GNU/Linux, retourne 0 si la pause a été complète ou le temps restant si elle a été
stoppé par un signal ou tout autre évènement.
Prototype : fun [I] I
- _checkDirectory : retourne une référence en lecture d'un répertoire situé en priorité
dans la partition utilisateur, sinon dans la partition administrateur.
Prototype : fun [S] DP
Retourne nil si erreur.
- _getModifyDirectory : retourne une référence en écriture d'un dossier situé dans la
partition utilisateur.
Prototype : fun [S] DW
- searchFile : recherche un fichier dans une arborescence (dossier et sous-dossiers).
Prototype : fun [DP S] P
* une référence de dossier (DP)
* un nom de fichier
Retourne une référence en lecture du fichier ou nil si non trouvé ou erreur
Exemple :
_fooS searchFile _checkDirectory "tests/net" "myfile.txt";
- _createDirectory : crée un répertoire dans la partition utilisateur
Prototype : fun [DW S] I
Retourne 0 si ok, nil si erreur.
- _deleteDirectory : supprime un répertoire vide. Une confirmation est demandée via
une popup.
Prototype : fun [DW] I
Retourne 0 si ok, nil sinon.
- getFileMd5 : calcule l'empreinte md5 d'un fichier.
Prototype : fun [P] S
Retourne nil si erreur
- getStringMd5 : calcule l'empreinte md5 d'une chaîne
Prototype : fun [S] S
Retourne nil si erreur
- getSourceMd5 : calcule l'empreinte md5 pour chaque package chargé dans l'environnement
du canal considéré. Ce peut être utile afin de définir si une application devrait
être mise à jour. Ou encore pour vérifier qu'une application diffusée correspond
bien à la version du code source disponible.
Prototype : fun [Chn] [[S S] r1]
Demande un canal en entrée et retourne une liste de tuples de tous les packages
chargés dans l'environnement du canal fourni en argument. Chaque tuple est composé
du nom du package (son chemin relatif) et de l'empreinte md5.
Exemple :
fun readMd5Source (list)=
if list == nil then
0
else
(
_fooS sprintf "pkg = %s md5 = %s" hd list;
readMd5Source tl list
);;
readMd5Source getSourceMd5 _channel;
- getPackages : retourne la liste complète des packages chargés dans l'environnement
du canal fourni en argument.
Prototype : fun [Chn] [S r1]
- getScolMd5 : retourne la liste des empreintes md5 de tous les fichiers configurés
dans l'usm.ini. Il est possible d'ajouter une liste de fichiers supplémentaires.
Cette fonction devrait être utilisée soit pour mettre à jour Scol soit pour vérifier
manuellement la présence d'une mise à jour.
Prototype : fun [[S r1]] [[S S] r1]
* en argument, une liste de fichiers supplémentaires dont les empreintes md5 sont
demandées. Cette liste DOIT contenir des chemins de fichiers relatifs au répertoire
de l'exécutable Scol.
* Retourne une liste de tuples contenant chacun le chemibn relatif du fichier à
l'exécutablme Scol et son empreinte md5.
Exemple :
fun readMd5Source (list)=
if list == nil then
0
else
(
_fooS sprintf "pkg = %s md5 = %s" hd list;
readMd5Source tl list
);;
readMd5Source getScolMd5 "ext.ini"::"scolapp.ini"::"ScolNet.class"::"ScolObserver.class"::"ScolTest.class"::nil;
*** tempfile.c
==============
Nouvelles API pour la gestion de fichiers temporaires.
Ceux-ci sont automatiquement uniques et automatiquement effacés lorsque l'objet
Scol est détruit ou que la VM est fermée. Ces fichiers sont utiles pour stocker
durant l'exécution d'un programme des données de manière ... temporaire.
L'API ressemble à celle existante sur
les fichiers ANSI.
- FileTemp : nouveau type Scol correspondant à un fichier temporaire
- _FILEOpenTemp : ouvre (et crée automatiquement) un fichier temporaire.
Prototype : fun [Chn] FileTemp
- _FILECloseTemp : détruit (et ferme et efface) un fichier temporaire.
Prototype : fun [FileTemp] I
- _FILEReadTemp : lit le contenu d'un fichier temporaire depuis la position
courante du curseur sur un certain nombre d'octet.
Prototype : fun [FileTemp I] S
- _FILESizeTemp : retourne la taille du fichier temporaire.
Prototype : fun [Filetemp] I
- _FILETellTemp : retourne la position actuelle du curseur dans le fichier
temporaire.
Prototype : fun [FileTemp] I
- _FILESeekTemp : déplace la position actuelle du curseur d'un fichier
tmporaire.
Prototype : fun [FileTemp I I] I
- _FILEWriteTmp : écrit une chaîne quelconque dans un fichier temporaire.
Prototype : fun [FileTemp S] I
Voir la doc temporaire : docs/tempfile.html
*** lib_string.c
================
Quelques fonctions utiles sur les chaînes de caractères.
*** lib_sys.c
=============
Quelques fonctions utiles au niveau "système".
Par exemple, lib_sys_getPathPartition retourne le chemin absolu de la partition
utilisateur.
r toute commande FTP comprises par le serveur
- sftp:// pour toute commande FTP comprise dans le serveur (ssh activé bien entendu)
- smtp:// envoi simple de courriel
Prévu ou en cours :
- scp://
- smtp:// envoi de courriels avec pièces jointes, authentification TLS, ...
-
Note : pour l'heure, ces fonctions sont SYNCHRONES
Note : les fichiers locaux sont strictement limitées à la partition utilisateur active de Scol,
que ce soit en lecture ou en écriture.
Note : les callbacks Scol des fonctions de cete API sont, en fait, une seule et unique
fonction. Il est donc possible (mais non obligatoire !)de ne coder qu'une seule callback
et de différencier chaque entrée par le paramètre utilisateur ou, mieux, l'objet ObjCurl
correspondant.
- ObjCurl : nouveau type Scol correspondant
- _curlNewUrl : ouvre une nouvelle connexion (protocole http:// mais peut être un autre si
aucun paramètre spécifique n'est nécessaire).
Prototype simple : fun [Chn S [S r1] I S @cb u0] ObjCurl
Prototype : fun [Chn S [S r1] I S fun [ObjCurl u0 S I S S] u1 u0] ObjCurl
- _curlNewUrlAuth : ouvre une nouvelle connexion sécurisée (protocole https://).
Prototype simple : fun [Chn S [S r1] [S I] I S @cb u0] ObjCurl
Prototype : fun [Chn S [S r1] [S I] I S fun [ObjCurl u0 S I S S] u1 u0] ObjCurl
- _curlNewFtp : ouvre une connexion FTP avec l'envoi de commandes FTP quelconques.
Prototype simple : fun [Chn S [[S I] r1] S S @cb u0] ObjCurl
Prototype : fun [Chn S [[S I] r1] S S fun [ObjCurl u0 S I S S] u1 u0] ObjCurl
- _curlNewFtpGet : download un fichier par FTP.
Prototype simple : fun [Chn S S S S @cb u0] ObjCurl
Prototype : fun [Chn S S S S fun [ObjCurl u0 S I S S] u1 u0] ObjCurl
- _curlNewFtpPut : upload d'un fichier local par FTP. Possiblité d'y adjoindre des
commandes FTP avant et/ou après le transfert.
Prototype simple : fun [Chn S S [[S I] r1] S S @cb u0] ObjCurl
Prototype : fun [Chn S S [[S I] r1] S S fun [ObjCurl u0 S I S S] u1 u0] ObjCurl
- _curlNewSFtp : ouvre une connexion SFTP (FTP via un tunnel SSH) et envoi de
commandes SFTP quenconques.
Prototype simple : fun [Chn S [[S I] r1] S S @cb u0] ObjCurl
Prototype : fun [Chn S [[S I] r1] S S fun [ObjCurl u0 S I S S] u1 u0] ObjCurl
- _curlNewSmtp : envoi simple d'un courriel via SMTP.
Prototype simple : fun [Chn S S [S r1] S @cb u0] ObjCurl
Prototype : fun [Chn S S [S r1] S fun [ObjCurl u0 S I S S] u1 u0] ObjCurl
- _curlDsUrl : détruit un objet ObjCurl.
Prototype : fun [ObjCurl] I
Voir la doc temporaire : docs/curl.html
*** stringtab.c
===============
Conversion de chaînes en tableaux pour pouvoir les traiter comme telle
- ObjS :
Nouveau type Scol correspondant
- STABcreate : conversion d'une chaine en tableau
Prototype : fun [Chn S] ObjS
- STABfoo : affiche un caractère précis ou tout le contenu du tableau dans la console
Prototype : fun [ObjS I] ObjS
- STABfooC : affiche dans la console le premier caractère d'une chaine
Prototype : fun [S] S
- STABget : retourne un caractère précis d'un tableau
Prototype : fun [ObjS I] S
- STABset : modifie / affecte un caractère particulier d'un tableau
Prototype : fun [ObjS S I] ObjS
- STABadd : ajoute une chaine composée de un oude plusieurs caractères à une position précise d'un tableau
Prototype : fun [ObjS S I] ObjS
- STABdel : supprime unou plusieurs caractères à partir d'une position précise d'un tableau
Prototype : fun [ObjS I I] ObjS
- STABsize : returne le nombre de caractères contenudans le tableau
Prototype : fun [ObjS] I
- STABtoS : conversion d'un tableau de caractères en une chaine
Prototype : fun [ObjS] S
Voir la doc temporaire : docs/stringtab.html
*** lib_string.c
================
Quelques fonctions utiles sur les chaînes de caractères.
*** lib_sys.c
=============
Quelques fonctions utiles au niveau "système".
Par exemple, lib_sys_getPathPartition retourne le chemin absolu de la partition
utilisateur.