/************************************************************************ ** ** FILE : dir.h ** ** ZWECK : - Oeffentliche Vereinbarungen fuer die Dir-Funktionen ** ** - Funktion SetPath: ** Traegt einen zuvor auf Existenz ueberprueften Pfad ** in die Datenstruktur DirInh ein. ** ** - Funktion ChangePath: ** Aendert den Pfadeintrag in der Datendtruktur DirInh ** Der neue Pfadeintrag wird durch den Index bestimmt, ** der entweder auf EIN Verzeichnis des bisherigen Pfades ** verweist oder der auf ein Unterverzeichnis verweist. ** Bei diesem Vorgang wird nicht auf Existenz ueberprueft. ** ** - Funktion ScanDir: ** List Inhalt des Verzeichnisses DirInh.Pfad und traegt ** die Namen in DirInh, sortiert und nach File oder Unter- ** verzeichnis getrennt ein. ** ** - Datenstruktur DIRECTORY: ** String Array Name wird in 3 Teile aufgespaltet: ** ** 1. Teil enthaelt die einzelnen Verzeichnisse, aus denen ** sich der Pfad zusammensetzt. Falls der Pfad nicht das ** Wurzelverzeichnis ist, ist zusaetzlich Name[0]="ROOT". ** ** 2. Teil enthaelt die direkten Unterverzeichnisse ** ** 3. Teil enthaelt die Filenamen ** ** Beispiel Pfad = /usr/local/: ** ** Name[Pos] Pointer auf String ** ----------------------------- ** 0 ROOT ** 1 usr ** 2 local ** nPfad bin ** 3 src ** 4 man ** nSubDir README ** 5 README.2 ** 6 makefile ** nFiles - ** ** Damit es spaeter netter aussieht, werden die Pfad ** und Unterverzeichnisse dem Sinn nach entsprechend ** eingerueckt. ** ** AUTOR : Michael C. Ancutici ** Universitaet Stuttgart, Fakultaet Informatik ** ** DATUM : 14.03.93 ** *************************************************************************/ #ifndef DIR_H #define DIR_H #include #include "misc.h" #define DI_MAX_NAMEN 900 /* max. Anzahl Namen */ #define DI_BUFFER_SIZE 10000 /* max. Puffer Groesse */ typedef struct { char Pfad[ MAXPATHLEN]; /* enthaelt gueltigen Pfad */ STRING File; /* enthaelt gueltiges File */ STRING FilePfad; /* enthaelt Pfad zu obigem File */ int nPfad; /* Anz. der Pfad-Teile */ int nSubDir; /* nPfad + Anz. der Unterverz. */ int nFiles; /* nSubDir + Anz. der Files */ BOOLEAN ScanNew; /* FALSE: Unterverzeichnisse */ /* und Files ungueltig */ char *nextBuffer; /* naechster freier Platz in Buffer */ char *Name[ DI_MAX_NAMEN]; /* Pointer nach Buffer */ char Buffer[ DI_BUFFER_SIZE];/* eigentlicher Speicher Namen */ } DIRECTORY; extern BOOLEAN SetPath( DIRECTORY *, char *); extern BOOLEAN ChangePath( DIRECTORY *, int); extern void ScanDir( DIRECTORY *); #endif