Auffinden eines Eintrages in einer Parameterdatei

int PositionFile(char *Section, char *Name, char *File)


Implementiert in der Datei params.c des Projektes Transfermatrixsimulation.


Die Parameterdatei wird nach Möglichkeit geöffnet und Zeile für Zeile eingelesen, bis der gesuchte Abschnitt gefunden wird. Gibt es den Abschnitt nicht, so wird die Datei geschlossen und ein Mißerfolg gemeldet. Ansonsten wird der Abschnitt bis zum Ende der Datei oder bis zum Beginn des nächsten Abschnittes nach einer Zeile mit dem angegebenen Namen durchsucht. Auch hier wird bei einem Mißerfolg die Datei geschlossen. Ist jedoch ein entsprechender Eintrag zu finden, wird der Dateizeiger so weit zurückgesetzt, daß er genau hinter dem Gleichheitszeichen in dem Eintrag zu stehen kommt und die Datei bleibt offen.


Parameter:

Section, char *
Name des gesuchten Abschnittes
Name, char *
Name des Parameters
File, char *
Name der Parameterdatei

Rückgabewert (int):

Dateihandle der Parameterdatei, falls der Eintrag gefunden wurde, oder -1, falls nicht

Siehe auch:

GetPrivateProfileInt, GetPrivateProfileFloat, GetPrivateProfileString
int PositionFile(char *Section,char *Name,char *File)
{
  int fh;         /* File Handle          */
  char Line[255]; /* One Line of the file */

  if ((fh=open(File,O_RDWR))==-1) return(-1);
  do {
    if (!GetLine(Line,sizeof(Line),fh)) {
      close(fh);
      return(-1);
    }
  } while (Line[0]!='[' || strlen(Line)<strlen(Section)+2 || 
       strncmp(Line+1,Section,strlen(Section))
       || Line[strlen(Section)+1]!=']');
  do {
    if (!GetLine(Line,sizeof(Line),fh)) {
      close(fh);
      return(-1);
    }
  } while (Line[0]!='[' && (strlen(Line)<strlen(Name)+1 ||
                strncmp(Line,Name,strlen(Name)) ||
                  Line[strlen(Name)]!='='));
  if (Line[0]=='[') {
    close(fh);
    return(-1);
  }
  lseek(fh,-(off_t)(strlen(Line)-strlen(Name)),SEEK_CUR);
  return(fh);
}

Diese Seite wurde compiliert/modifiziert/erzeugt am 06.03.1997/01.09.1995/30.08.1995 von Ralf Bundschuh/Ralf Bundschuh.
Diese Seite und ihr Inhalt sind (c) 1995 von Ralf Bundschuh.