/************************************************************************ ** ** FILE : setpath.c ** ** ZWECK : Enthaelt Funktion SetPath der Dir-Funktionen ** Traegt einen zuvor auf Existenz ueberprueften Pfad ** in die Datenstruktur DirInh ein. ** ** AUTOR : Michael C. Ancutici ** Universitaet Stuttgart, Fakultaet Informatik ** ** DATUM : 14.03.93 ** *************************************************************************/ #include "dir.H" #include "misc.h" BOOLEAN SetPath( DirInh, Pfad) DIRECTORY *DirInh; char *Pfad; { DIR *TempDir; int i; char TempPfad[ MAXPATHLEN]; register char *pBuffer = DirInh->Buffer; register char *p; int posName = 0; int nPfad = 0; strcpy( TempPfad, Pfad ); if (i = strlen( TempPfad)) { /* Pfad endet mit einem "/" */ if (TempPfad[i-1] != SLASH) strcat( TempPfad, "/"); } else strcpy( TempPfad, "/"); if (TempDir = opendir (TempPfad)) { /* Existenzpruefung */ closedir (TempDir); strcpy (DirInh->Pfad, TempPfad); strcpy (FillSpace, ""); if (strlen( TempPfad) > 1) { /* Wurzelverzeichnis ? */ DirInh->Name[ posName++] = pBuffer; /* wenn nein, dann wird als */ strcpy( pBuffer, "ROOT"); /* fuer das Wurzelverzeichnis */ pBuffer += 4; /* "ROOT" eingetragen */ for (p=TempPfad; *p!=EOL; p++) /* trage die einzelnen Ver- */ if (*p!=SLASH) /* zeichnisse, aus denen sich */ *(pBuffer++) = *p; /* der Pfad zusammensetzt in */ else { /* die Liste ein. */ *(pBuffer++) = EOL; /* Falls ein "/" kommt, wird */ DirInh->Name[ posName++] = pBuffer; /* das momentane Praefix */ strcat( FillSpace, FILLPATT); /* FillSpace vorangestellt */ strcpy( pBuffer, FillSpace); pBuffer += strlen(FillSpace); }; DirInh->nPfad = posName-1; DirInh->nextBuffer = pBuffer-strlen(FillSpace); } else { DirInh->nPfad = 0; DirInh->nextBuffer = DirInh->Buffer; } return( OK); /* Pfad gueltig und eingetragen */ } else return( NOT_OK); /* Pfad existiert nicht */ }