Ctree 6 est dorénavant utilisable en DOS 32 bits (Watcom C).
L'uniformisation des structures entre les versions 16 et 32 bits a entraîné certains problèmes qui sont à présent corrigés.
La version DOSWIN (Windows 16 bits) de SCR est compilée avec l'option -dc. Cela implique que les données statiques (strings par exemple dans les sprintf) sont placées dans le module de CODE où ils sont définis et non dans un module DATA commun à tous les modules.
En l'absence de cette option, il était difficile d'encore linker certaines applications.
Pour utiliser cette option dans une application, il faut être attentif à ce que les fonctions appelées avec des paramètres statiques ne puissent pas modifier ces paramètres. Il en résulterait un plantage rapide: en effet, il est interdit de modifier les valeurs contenues dans un module de CODE.
Une façon d'éviter ces plantages (qui n'ont lieu qu'au runtime) est de définir un prototype pour les fonctions en spécifiant const char * par exemple. Le mot-clé const empêche la fonction de modifier la valeur du paramètre.
Ces fonctions sont modifiées pour éviter les problèmes énoncés ci-dessus consécutifs à l'utilisation du paramètre -dc lors des compilations.
D'autre part, des nouvelles fonctions sont ajoutées pour les cas particuliers d'utilisation de SCR_add_ptr(). Il s'agit de
SCR_add_ptr_lg()
SCR_add_ptr_lg0()
Voir la documentation en ligne pour la description.
Une erreur dans le code C généré par scr4_e -c est corrigée.
Les buffers internes de ces fonctions sont modifiés suite à des comportements curieux en édition des champs DATE et TIME.
Un nouveau groupe de fonctions permet de gérer facilement des fichiers de type .ini. Ces fichiers se caractérisent par un certain nombre de sections dont le nom est fourni entre crochets ([Startup] par exemple) et des paramètres dans les lignes qui suivent cette entête.
Voir le manuel en ligne pour la liste et la syntaxe des fonctions.
Ces deux fonctions permettent d'assurer une représentation standard des noms de fichier.
Cette fonction disparaît pour des raisons de compatibilité en Watcom C. En principe elle n'était utilisée qu'en interne par SCR/AL1.
Le programme scr4_ar est modifié pour prendre en compte la différence majuscules/minuscules en Watcom C.
Les portages de Ctree 6 sont effectués pour Windows, Win32s, SUNOS4, HP-UX et Linux.
En l'absence d'une souris MS, la sortie des programmes DOS32 (Watcom C) générait un plantage (sans gravité, mais inélégant). Cette erreur est corrigée.
Les messages envoyés dans l'écran lors de la mise en route ou en cours de travail par un programme DOSWIN ou DOSW32 sont envoyés dans la fenêtre de l'appplication.
Si un tel message est envoyé (à l'aide de la fonction Wprintf()), le message suivant est affiché avant soit de passer au main() de l'application, soit avant de quitter la fenêtre en fin d'application.
-- Press any key --
C'est par exemple le cas de s4w_e. Une touche est alors attendue de façon à ce que l'utilisateur puisse prendre connaissance du message avant de poursuivre ou de terminer.
Le driver X-Window (X11) est porté pour les systèmes SunOS4, HP-UX et Linux. Il n'est dès lors plus nécessaires de disposer de drivers (ansi, etc) pour démarrer une application X11.
La variable d'environnement SCR_FONTPATH doit être définie et contenir le path pour le fichier Scr4_term. Ce fichier contient la définition de la police de caractères X compatible Ascii-PC.
Dans les applications DOSWIN et DOSW32, le fait de presser un bouton génère des messages répétés (clics) et rapides. C'est une façon par exemple de se déplacer automatiquement dans un Scollbar.
A partir de cette version, un délai de 250 ms est introduit entre la pression sur le bouton et le deuxième clic, de façon à permettre de ne générer qu'un seul clic.
Si cette variable est positionnée à 1, dans l'édition d'un index de MPAGE ou de PAGE (PG_EDIT_ISAM), l'édition de l'index a lieu même si le premier champ de l'index est hidden ou output.
Par défaut, ce n'est pas le cas et cela peut poser un problème de compatibilité avec d'anciennes versions.
Pour des raisons de compatibilité, on peut positionner cette variable à 1: dans ce cas, l'action ABORT est annulée après l'action PG_EDIT (mais pas après la fonction PG_edit_window()!).
Ces deux fonctions sont corrigées: elles utilisaient la macro isupper() qui ne vérifie pas le domaine de définition des paramètres. Cela pouvait générer une erreur en Unix ou Windows.
Correction de cette fonction qui ne libérait pas l'espace alloué pour son travail interne.
Correction importante. Lorsque la fonction exécutée sur chaque record nécessite l'intervention de l'utilisateur, la valeur du VTIME restait bloquée à 0. Cela empêchait une utilisation correcte par exemple de PG_edit_window().
Dorénavant, ce paramètre est fixé à son ancienne valeur avant l'appel de la fonction utilisateur.
Nouveau groupe de fonctions permettant de générer facilement des fichiers au format HTML. Voir manuel en ligne pour la syntaxe et la liste de ces fonctions.
Nouvelle fonction permettant de déterminer le type d'un fichier.
int FI_file(char **tbl, char *inname, char *cmt, int lg)
Analyse le fichier inname et retourne son type en fonction des paramètres passés dans tbl. Un commentaire de longueur maximum lg peut être retourné dans cmt si cette variable n'est pas nulle.
Le tableau passé comme premier paramètre indique les différents formats de fichiers reconnus. Le format de chaque ligne du tableau est déterminé par le premier caractère:
Si le type ne peut être déterminé par les données de tbl, la fonction recherche elle-même des indications dans le fichier. Dans ce cas, une valeur négative est retournée par la fonction, valeur correspondant à des define du fichier s_file.h.
numéro de l'entrée dans tbl si une entrée correspond ou valeur prédéfinie sinon
#define FI_DIR -1
#define FI_DATA -2
#define FI_EMPTY -3
#define FI_A2M -4
#define FI_FORTRAN -5
#define FI_ASCII -6
#define FI_C -10
#define FI_FORT -11
#define FI_MAKE -12
#define FI_PLI -13
#define FI_MACH -14
#define FI_ENG -15
#define FI_PAS -16
#define FI_MAIL -17
#define FI_NEWS -18
#define FI_UNKNOWN -100
#define FI_UNFOUND -101
char **MAGIC_DATA = {
"1 string MakerFile FrameMaker document ",
"1 string MIFFile FrameMaker MIF file ",
"1 string MakerDic FrameMaker Dictionary ",
"1 string Book FrameMaker Book file ",
"0 string MZ DOS executable (EXE) ",
"0 string \037\213 gzip compressed data ",
"0 string \037\235 compressed data",
"0 string %! PostScript document ",
"1 string HTML HTML document ",
"1 string html HTML document ",
"2 string rtf RTF document ",
"0 string KOBJS IODE ",
">19 short 0 CMT file ",
">19 short 1 EQS file ",
">19 short 2 IDT file ",
">19 short 3 LST file ",
">19 short 4 SCL file ",
">19 short 5 TBL file ",
">19 short 6 VAR file ",
".obj Object Module ",
".lib Library ",
".xls Excel file ",
".doc Word File ",
".mdb Access Database ",
".scr SCR/AL1 objects ",
".cmt SCR/AL1 data ",
".f SCR/AL1 source ",
0
};
CalcFileType(fname)
char *fname;
{
return(FI_file(MAGIC_DATA, fname, 0L, 0));
}
En Unix, de nombreuses définitions de formats peuvent être trouvées dans le fichier /etc/magic.
La syntaxe de la fonction A_expandstar est modifiée : la valeur de retour qui n'était auparavant pas testée détermine dorénavant si l'argument a été traité (retour 0). Si ce n'est pas le cas, l'argument est ajouté tel quel au tableau A_VAL résultat de A_init() ou A_initv().
Copyright © 1998-2015 Jean-Marc Paul and Bernard PAUL - Envoyez vos remarques ou commentaires à bernard@xon.be