FILINFO

Sommaire


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.

 

Syntaxe

  filinfo(chemin_fic, arg_ent)

 

Paramètres

 

Elément

Description

Restrictions

chemin_fic

Expression de type Char correspondant au chemin du fichier à tester

Aucune

arg_ent

Expression entière spécifiant la caractéristique à trouver

0 <= arg_ent <= 10

 

Exemples

  # 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
    Iffilinfo("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 ?
        Iffilinfo("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

 

Description et commentaires

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 :

argt.

caractéristique du fichier

WIN95

N.T.

Unix

0
1
2

3

4
5
6
7
8

9
10

Mode du fichier (type, permissions)
Numéro de l'inode correspondant au fichier.
ID du periphérique contenant une entrée
sur ce fichier.
ID du périphérique (si le fichier est
un périphérique en mode caractères ou blocs)
Nombre de liens.
Numéro utilisateur propriétaire du fichier.
Numéro du groupe propriéraire du fichier.
Taille du fichier en octets.
Dernière date d'accès (en secondes
depuis le 01/01/1970 0:0:0:GMT).
Dernière date de modification (idem)
Dernière changement de statut (idem)

Oui
Non
Non

Non

1
Non
Non
Oui
Oui

*

Oui
Non
Non

Non

1
Oui
Oui
Oui
Oui

*
*

Oui
Oui
Oui

Oui

Oui
Oui
Oui
Oui
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.

 

Remarques

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 :

Erreur

Description

PAFIC         (20)

Lefichier est inexistant

ERACCE    (27)

erreur d'accès (c'est-à-dire répertoire non accessible en principe

 

Erreurs associées

Erreur

Description

ERMODE   (10)

Le 1er argument n'est pas de type Char
Le 2ème argument n'est pas de type Integer

ERDOM      (50)

Le 2ème argument n'est pas dans l'intervalle [0,10].

 

Mots-clés associés

FILPATH - FILCOM  -  OPENI  -  OPENO  -  OPENIO


SOMMAIRE

Adonix X3(r) L4G
Copyright (c) Adonix 1999 - All rights reserved