FILINFO |
filinfopermet de trouver l'ensemble des caractéristiques d'un fichier "physique" donné en argument. L'argument supplémentaire précise quelle est la caractéristique que l'on désire trouver.
filinfo ( chemin_fic, arg_ent )
Elément | Description | Restrictions |
Expression de type Char correspondant au chemin du fichier à tester | Aucune | |
Expression entière spécifiant la caractéristique à trouver | 0 <= arg_ent <= 10 |
# Trouver la taille d'un fichier en nombre d'octets.
# Si la taille trouvée est négative, le fichier est inexistant
TAILLE_FIC = filinfo (FICHIER, 7)
# Quel est le type du fichier Unix FICHIER ?
# les valeurs P1, P2, PDIR, PCAR, PBLO, PFI1, PFI2, PFIF
# peuvent dépendre de la version d'Unix
# ( Vérifier dans la documentation de mknod (2) )
P1 = 2 ^ 12 : P2 = 16
PFIF = 1 : PCAR = 2 : PDIR = 4 : PBLO = 6 : PFI1 = 0 : PFI2 = 8
#
# Lecture du mode du fichier : s'il est négatif, erreur d'accès
MODE_FIC = filinfo (FICHIER, 0)
If MODE_FIC < 0 : Errbox "Erreur sur fichier :"-errmes$(-MODE_FIC)
Return
Endif
# Sinon, tester la partie 'type de fichier' du mode
Case int(mod(MODE_FIC/P1, P2))
When PFIF : Erbox FICHIER-": fifo"
When PCAR : Errbox FICHIER-": périphérique mode caractère"
When PDIR : Errbox FICHIER-" : répertoire"
When PBLO : Errbox FICHIER-": périphérique en mode bloc"
When PFI1, PFI2
Errbox FICHIER-": fichier normal"
When default :
Errbox FICHIER-": mode inconnu"
Endcase
# On dispose de deux fichiers xx.c et xx.o dans le répertoire courant.
# Si le fichier xx.c est plus récent que xx.o, on veut recompiler
#
Char TRACE_ERR(80)(1..24)
# Vérification de la date de dernière modification
If filinfo ("xx.c", 9) > filinfo ("xx.o", 9)
Infbox "Recompilation en cours...."
System "cc -c xx.c -o xx.o 2>trace.com"
Infbox "Compilation terminée"
# Le fichier de trace est-il vide ?
If filinfo ("trace.com", 7)
Infbox "Voici la trace des erreurs..."
System TRACE_ERR = "cat trace.com"
For I = 1 to min(stat1, dim(TRACE_ERR))
Infbox TRACE_ERR(I)
Next I
Endif
Endif
# On désire modifier un fichier si son nombre de liens est 1
NB_LIENS = filinfo (REPERTOIRE+"/"+FICHIER,4)
If NB_LIENS<0 : Errbox "Fichier inexistant !"
Elsif NB_LIENS >1: Errbox "Attention, le fichier est lié ailleurs"
Else
Openio REPERTOIRE+"/"+FICHIER
...
Endif
La fonction filinfo permet de trouver l'ensemble des caractéristiques d'un fichier physique (et non d'une table) dont le chemin d'accès est donné en argument. On donne en outre un deuxième argument qui précise la caractéristique recherchée. La correspondance entre le deuxième argument et la caractéristique est donnée dans le tableau ci-dessous :
0 | Mode du fichier (type, permissions) | Oui | Oui | Oui |
* sous Windows 95, le résultat est le même pour les paramètres 8, 9 et 10 correspond à la dernière date d'accès (8).
Nota : la réponse est 0 quand le système d'exploitation ne renvoie rien.
Le type de résultat renvoyé est Intéger
Sous Windows, le chemin peut s'écrire indifféremment avec des " / " ou des " \ ".
Si le fichier n'existe pas ou n'est pas accessible, la fonction filinfo renvoie le numéro d'erreur correspondant (avec un signe négatif), sans générer d'erreur dans le traitement. En principe, les erreurs retournées seront dans la liste suivante :
PAFIC (20) | Lefichier est inexistant |
ERACCE (27) | erreur d'accès (c'est-à-dire répertoire non accessible en principe |
ERMODE (10) | Le 1er argument n'est pas de type Char |
ERDOM (50) | Le 2ème argument n'est pas dans l'intervalle [0,10]. |
FILPATH - FILCOM - OPENI - OPENO - OPENIO