My _german_ README files ;-(
This commit is contained in:
parent
fa05d6b60f
commit
7b34b61983
|
@ -0,0 +1,112 @@
|
|||
Syntax zu den Konfigurationsdateien:
|
||||
====================================
|
||||
|
||||
Leere Zeilen werden ignoriert. Wenn in einer Zeile ein "#" enthalten ist,
|
||||
wird der Rest der Zeile als Kommentar gewertet.
|
||||
|
||||
Steht am Ende einer Nicht-Kommentarzeile ein "\", so wird die Zeile mit der
|
||||
naechste Zeile zu einer "verschmolzen". Das Zeichen "\" muss als letztes
|
||||
Zeichen stehen, und darf nicht von Tab's oder Leerzeichen gefolgt werden.
|
||||
Innerhalb eines String braucht es nicht geqoutet werden.
|
||||
Ein Eintrag wie
|
||||
|
||||
FRED = c:\sinnlos\
|
||||
\sinnlos.exe
|
||||
# ^ Hier besagt es Zeilenende, die anderen beiden "\"
|
||||
# sind normale Zeichen.
|
||||
# Die zweite Zeile muss dann direkt am Anfang beginnen,
|
||||
# da sonst die Leerzeichen/Tabulatoren mit ausgewertet
|
||||
# werden.
|
||||
|
||||
ist so erlaubt. Das Ergebnis dieser Zeile ist folgendes:
|
||||
|
||||
FRED = c:\sinnlos\sinnlos.exe
|
||||
|
||||
Die Datei hat eine aehnliche Syntax wie die smb.conf, win.ini usw.
|
||||
Es gibt dort Sektionen und darunter Eintraege.
|
||||
Die Syntax wurde allerdings um Untersektionen erweitert. Ein Eintrag kann
|
||||
wieder eine Sektion darstellen. Diese Untersektionen koennen beliebig oft
|
||||
verschachtelt sein.
|
||||
|
||||
Es wird die Gross/Kleinschreibung bei den Eintrags- und Sektionsnamen
|
||||
ignoriert. Also vor dem Gleichheitszeichen. Danach wird sehr wohl in
|
||||
Gross und Kleinschreibung unterschieden.
|
||||
|
||||
In den Sektions- und Eintragnamen duerfen folgende Zeichen nicht verwendet
|
||||
werden: "*?|&/"
|
||||
Wenn diese Zeichen werden beim Einlesen ignoriert.
|
||||
|
||||
Am Anfang einer Zeile (sowohl Sektionsname als auch einem Eintrag) koennen
|
||||
beliebig viele Leerzeichen als auch Tabulatoren stehen:
|
||||
|
||||
[SECTION]
|
||||
|
||||
und
|
||||
|
||||
[SECTION]
|
||||
|
||||
sind equivalent.
|
||||
|
||||
In dem folgenden Beispiel sind Kommentare enthalten, die weitere Regeln
|
||||
beschreiben, welche unbedingt beachtet werden muessen.
|
||||
|
||||
Beispiel:
|
||||
|
||||
BEGIN-OF-FILE
|
||||
|
||||
[SECTION1]
|
||||
ENTRY1=blabla1
|
||||
entry2 = blabla2
|
||||
# ^^^-------- Es duerfen vor und nach dem Gleichheitszeichen beliebig
|
||||
# Spaces und Tabulatoren verwendet werden.
|
||||
# Das erste erkannte Zeichen nach dem
|
||||
# Gleichheitszeichen darf weder ein space noch ein Tabublator
|
||||
# sein.
|
||||
Entry3 = {
|
||||
# ^----- Dieses Zeichen besagt, das dieser Eintrag ein oder mehrere
|
||||
# Untersectionen beinhaltet. Es MUSS in der gleichen Zeile
|
||||
# stehen, wie der Eintragsnamen und das Gleichheitszeichen.
|
||||
# ^^^^^^--------- "Entry3", "entry3" und "ENTRY3" sind equivalent!
|
||||
[SUBSECTION1]
|
||||
entry1 = bla1
|
||||
...
|
||||
|
||||
[ subsection2 ]
|
||||
# ^-----------^- Hier koennen wieder beliebige Spaces und Tabulatoren stehen.
|
||||
# ^^^^^^^^^^--- "subsection2" und "SUBSECTION2" sind equivalent!
|
||||
...
|
||||
}
|
||||
# ^-------------- Hier wird das Ende von Eintrag "ENTRY3" eingeleitet.
|
||||
# Das Zeichen "}" muss in einer seperaten Zeile alleine
|
||||
# stehen.
|
||||
|
||||
[SECTION2]
|
||||
...
|
||||
|
||||
END-OF-FILE
|
||||
|
||||
Anders als bei Windows und Samba wird hier das Zeichen ";" NICHT
|
||||
als Kommentarzeichen erkannt, sondern nur "#".
|
||||
|
||||
Es ist möglich eine weitere Datei einzubinden. Das wird durch den Eintrag
|
||||
|
||||
INCLUDE(Datei)
|
||||
|
||||
erreicht. Wird "Datei" mit einem relativen Pfad (oder ganz ohne Pfad)
|
||||
angegeben, dann wird als aktuelles Verzeichnis, das angesehen,
|
||||
wo die Datei liegt, die dieses INCLUDE enthaelt. Die Zeile "INCLUDE"
|
||||
kann an beliebiger Stelle in der Konfigurationsdatei vorkommen.
|
||||
Der Dateiname darf allerdings keine Leerzeichen und Tabulatoren enthalten.
|
||||
|
||||
Beispiel:
|
||||
|
||||
Datei /etc/myconfig/fred enthaelt folgende Zeile:
|
||||
|
||||
INCLUDE(../myinclude)
|
||||
|
||||
Dann wird nach der Datei /etc/myinclude gesucht. Es ist voellig
|
||||
unabhaengig davon, in welchem Verzeichnis das Programm gestartet wurde,
|
||||
das die Konfigurationsdatei lesen soll.
|
||||
|
||||
Wenn Dateien rekursiv eingebunden werden, fuehrt dieses mit Sicherheit
|
||||
zum Absturz des Programmes. Dieses wird von der Library nicht verhindert.
|
|
@ -0,0 +1,190 @@
|
|||
CONFFILE LIB 25-FEB-97
|
||||
|
||||
Datenstrukuren:
|
||||
|
||||
Die Entries:
|
||||
|
||||
typedef struct _entry {
|
||||
char *name; /* Name des Entries z.B. "NUMBER", hier stehen _immer
|
||||
Grossbuchstaben! */
|
||||
char *value; /* Hier steht der Wert, oder NULL, wenn subsection
|
||||
belegt ist, da nur einer von beiden einen Wert
|
||||
haben kann */
|
||||
struct _section *subsection; /* Hier kann wieder eine Subsection
|
||||
kommen oder NULL */
|
||||
struct _entry *next; /* Hier beginnt die verkettete Liste mit dem
|
||||
naechsten Entry einer Section */
|
||||
char flag; /* Interne Zwecke */
|
||||
} entry;
|
||||
|
||||
typedef struct _section {
|
||||
char *name; /* Name der Setcion z.B. "GLOBAL", hier stehen _immer
|
||||
Grossbuchstaben! */
|
||||
entry *entries; /* Hier haengt die Liste der Entries fuer diese
|
||||
Section. */
|
||||
struct _section *next; /* Hier kommen die naechsten Sectionen.
|
||||
Ist eine verkettete Liste */
|
||||
char flag; /* Interne Zwecke */
|
||||
} section;
|
||||
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Funktion:
|
||||
|
||||
int Get_Type_Value(section *Section, char *Path, int Type, void **Pointer)
|
||||
|
||||
Section: ist der Pointer der auf die Sectionen zeigt. Diesen erhaelt man
|
||||
von einer Funktion, die die Konfigurationsdateien einliest.
|
||||
|
||||
Path: Beschreibt, welchen Wert man haben will in Form eines UNIX-Pfades.
|
||||
Da ein Entry immer in der zweiten Ebene und eine Vielfache davon ist,
|
||||
muss die Pfad-Anzahl immer modulo 2 sein:
|
||||
"NUMBER/ALIAS" (Section,Entry)
|
||||
"NUMBER/START/FLAG/PROGRAMM" (Section,Entry,SubSection,Entry)
|
||||
|
||||
Type: Beschreibt den Rueckgabewert. Kann einen der folgenden Werte annehmen:
|
||||
#define R_TYPE_INT 0
|
||||
#define R_TYPE_LONG 1
|
||||
#define R_TYPE_DOUBLE 2
|
||||
#define R_TYPE_CHAR 3
|
||||
#define R_TYPE_STRING 4
|
||||
|
||||
Pointer: ist die Variable, in der der Wert gespeichert werden soll. Fuer
|
||||
einen integer, long, double, char und char* immer "&var" verwenden.
|
||||
Bei char* darf kein String uebergeben werden, sonder ein Pointer
|
||||
auf einen char, da hier nur der gefundene String einsetzt wird,
|
||||
und nicht kopiert wird.
|
||||
|
||||
|
||||
Als Rueckgabewert erhaelt man -1 bei einem Fehler (nicht gefunden),
|
||||
0 bei int, long, double, und char, und bei char* die Laenge des Strings.
|
||||
|
||||
Diese Funktion kann in einer while-Schleife verwendet werden. Wenn Section und
|
||||
Path beim ersten Aufruf mit einem Wert ungleich NULL belegt werden zur
|
||||
Initialisierung. Dann kann man diese bei den naechsten Aufrufen auf NULL
|
||||
setzen. Das Prinzip ist das gleich wie die Funktion strtok().
|
||||
|
||||
Beispiel:
|
||||
|
||||
...
|
||||
path ="*/double*";
|
||||
|
||||
while (Get_Type_Value(ptr,path,R_TYPE_INT,&iV) >= 0)
|
||||
{
|
||||
...
|
||||
|
||||
ptr = NULL;
|
||||
path = NULL;
|
||||
}
|
||||
|
||||
In diesem Beispiel werden dann alle Werte ausgelesen, die folgende Konditionen
|
||||
entsprechen:
|
||||
|
||||
- Section muss mit "*" matchen.
|
||||
- Entry muss mit "double*" matchen. ("double" und "DOUBLE" ist das gleiche.)
|
||||
- Der Wert _muss_ ein double sein!
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Funtion:
|
||||
|
||||
Get_Type_Match(section *Section, char *Path, char* Pattern,
|
||||
int (*_match)(char*, char*), int Type, void **Pointer)
|
||||
|
||||
|
||||
|
||||
Hat die gleiche Funktionsweise und Parameter, wie Get_Type_Value.
|
||||
Zusaetzliche Parameter:
|
||||
|
||||
Pattern: Ist ein String, der fuer die Funktion match zum Vergleichen
|
||||
verwendet wird.
|
||||
|
||||
(*_match): Hier kann eine Funktion uebergeben werden, mit dem der String
|
||||
("NUMBER= 07531 / 21103", der Teil nach dem "=" ist der String)
|
||||
mit dem Pattern in folgender Form aufgerufen wird:
|
||||
_match(Pattern,String). Hier kann man funktionen wie
|
||||
strcpy(char*,char*) und num_match(char*,char*) (ist eine Funktion
|
||||
zum Vergleichen von Telefonnummern auf Gleichheit) verwenden.
|
||||
|
||||
|
||||
Zu dem obigen Beispiel muesste neben diesen drei Bedingungen noch folgende
|
||||
gelten:
|
||||
|
||||
- _match(Pattern,String) liefert 0 zurueck.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Funktion:
|
||||
|
||||
char *Get_Value(section *Section, char *Path)
|
||||
|
||||
|
||||
Liefert die erste Section zurueck, die auf dem Pfad matched.
|
||||
|
||||
|
||||
Section: ist der Pointer der auf die Sectionen zeigt. Diesen erhaelt man
|
||||
von einer Funktion, die die Konfigurationsdateien einliest.
|
||||
|
||||
Path: Beschreibt, welchen Wert man haben will in Form eines UNIX-Pfades.
|
||||
Da ein Entry immer in der zweiten Ebene und eine Vielfache davon ist,
|
||||
muss die Pfad-Anzahl immer modulo 2 sein:
|
||||
"NUMBER/ALIAS" (Section,Entry)
|
||||
"NUMBER/START/FLAG/PROGRAMM" (Section,Entry,SubSection,Entry)
|
||||
|
||||
Liefert die Section, die auf den Pfad matched, zurueck. Wenn keine (mehr)
|
||||
vorhanden ist, dann ist der Rückgabewert NULL.
|
||||
|
||||
Diese Funktion kann in einer while-Schleife aufgrufen werden. Dafuer muessen
|
||||
die beiden Parameter beim zweiten und weiteren Aufrufen auf NULL gesetzt
|
||||
werden.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Funktion:
|
||||
|
||||
section* Get_Section_Match(section* Section, char *Path,
|
||||
char* Value, int (*_match)(char*, char*),
|
||||
entry **RetEntry )
|
||||
|
||||
Liefert die erste Section zurueck, die auf dem Pfad und auf Value (dieser
|
||||
Wert muss mit dem entsprchenden Wert von dem Entry passen, der im Pfad
|
||||
gegeben ist. z.B. "NUMBER/NUMBER") matched.
|
||||
|
||||
Section: ist der Pointer der auf die Sectionen zeigt. Diesen erhaelt man
|
||||
von einer Funktion, die die Konfigurationsdateien einliest.
|
||||
|
||||
Path: Beschreibt, welchen Wert man haben will in Form eines UNIX-Pfades.
|
||||
Da ein Entry immer in der zweiten Ebene und eine Vielfache davon ist,
|
||||
muss die Pfad-Anzahl immer modulo 2 sein:
|
||||
"NUMBER/ALIAS" (Section,Entry)
|
||||
"NUMBER/START/FLAG/PROGRAMM" (Section,Entry,SubSection,Entry)
|
||||
|
||||
(*_match): Hier kann eine Funktion uebergeben werden, mit dem der String
|
||||
("NUMBER= 07531 / 21103", der Teil nach dem "=" ist der String)
|
||||
mit dem Pattern in folgender Form aufgerufen wird:
|
||||
_match(Pattern,String). Hier kann man funktionen wie
|
||||
strcpy(char*,char*) und num_match(char*,char*) (ist eine Funktion
|
||||
zum Vergleichen von Telefonnummern auf Gleichheit) verwenden.
|
||||
Wird fuer diesen Parameter NULL uebergeben, wird ein normaler
|
||||
strcmp() durchgefuert.
|
||||
|
||||
Wert: Ist ein Pattern, der mit dem Wert des Entries passen muss.
|
||||
Wenn nach einer Subection gesucht wird, dann kann dieser Parameter
|
||||
genau so wie _match NULL sein.
|
||||
|
||||
RetEntry: Optional. Hier wird sonst ein Pointer auf einen Pointer auf
|
||||
einen Entry eingetragen. Dieser liefert dann den gefundenen
|
||||
Entry zurueck.
|
||||
|
||||
Rueckgabewert:
|
||||
Einweder die gefundene Section oder NULL.
|
||||
|
||||
Diese Funktion kann in einer while-Schleife aufgrufen werden. Dafuer muessen
|
||||
die beiden Parameter beim zweiten und weiteren Aufrufen auf NULL gesetzt
|
||||
werden.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Da noch nicht mehr dokumentiert ist, verweise ich mal frech auf die Dateien
|
||||
lib/conffile.c und vboxgetty/vboxlib.c ;-(((
|
|
@ -0,0 +1,212 @@
|
|||
ISDNTOOLS 25-FEB-97
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Funktion:
|
||||
|
||||
void set_print_fct_for_lib(int (*new_print_msg)(const char *, ...))
|
||||
|
||||
Alle Ausgaben werden nicht durch printf() oder aehnlichem in dieser gesamten
|
||||
Lib realisiert, sondern durch die Funktion, die hier gesetzt wird. Daher
|
||||
sollte diese Funktion zuerst aufgerufen werden, bevor eine andere Funktion
|
||||
aus dieser Lib verwendet wird.
|
||||
|
||||
new_print_msg: Hat die glieche Syntax wie printf.
|
||||
|
||||
Wenn diese Funtktion vorher nicht aufgerufen wird, wird printf verwendet.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Funktion:
|
||||
|
||||
int num_match(char* Pattern, char *number)
|
||||
|
||||
Vergleicht zwei Nummern miteinander.
|
||||
|
||||
Pattern: Ist eine Telefonnummer, die auch Wildcards, wie '*' und '?'
|
||||
beinhalten kann. Es koennen hier auch mehrere Nummern hinter
|
||||
einander stehen, durch Kommata getrennt:
|
||||
"21103", "07531 / 2110-*", "+49 7531 21103, 9124*, 441777"
|
||||
Es muessen hier weder eine Laender- noch eine Ortsvorwahl
|
||||
vorhanden sein. Diese werden durch AREACODE und COUNTRYCODE
|
||||
ergaenzt.
|
||||
|
||||
number: Ist _eine_ _vollstaendige_ (mit Laender- und Ortsvorwahl) Nummer.
|
||||
Das Prefix der Laendervorwahl muss identisch sein mit S_COUNTRY_PREFIX!
|
||||
|
||||
S_COUNTRY_PREFIX = "00" -> "0049753121103"
|
||||
S_COUNTRY_PREFIX = "haha" -> "haha49753121103"
|
||||
|
||||
|
||||
Liefert bei Gleichheit 0 zurück, andernfalls != 0.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Funktion:
|
||||
|
||||
char *expand_number(char *s)
|
||||
|
||||
Expandiert eine Nummer auf ihre volle Laenge mit Laender- und Ortsvorwahl.
|
||||
Der Prefix der Laendervorwahl wird S_COUNTRY_PREFIX gesetzt.
|
||||
Es werden folgende Zeichen herausgefiltert: " /-". Wenn das '+' an erster
|
||||
Stelle steht, wird es durch S_COUNTRY_PREFIX ersetzt.
|
||||
|
||||
"21103" -> "0049753121103"
|
||||
"040/441777" -> "004940441777"
|
||||
"+49 7531/2110*" -> "004975312110*"
|
||||
|
||||
s: Beinhaltet die Telefonnummer, die expandiert werden soll.
|
||||
|
||||
Der Rueckgabewert ist _immer_ ein String. Im Fehlerfall ein leerer String.
|
||||
Der Rueckgabewert ist eine statische Variable. Daher sollte der Rueckgabewert
|
||||
immer anschliessend kopiert werden. Wenn diese Funktion zweimal hinter einander
|
||||
aufgerufen wird, wird der erste Rueckgabewert ueberschrieben.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Funktion:
|
||||
|
||||
char *expand_file(char *s)
|
||||
|
||||
Expandiert ein Dateinamen fuer einen Benutzerverzeichnis:
|
||||
|
||||
User fred: "~/..." -> "/home/fred/..."
|
||||
"~hans/..." -> "/home/hans/..."
|
||||
|
||||
s: beinhaltet den zu expandierenden Dateinamen.
|
||||
|
||||
Der Rueckgabewert ist _immer_ ein String. Im Fehlerfall ein leerer String.
|
||||
Der Rueckgabewert ist eine statische Variable. Daher sollte der Rueckgabewert
|
||||
immer anschliessend kopiert werden. Wenn diese Funktion zweimal hinter einander
|
||||
aufgerufen wird, wird der erste Rueckgabewert ueberschrieben.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Funktion:
|
||||
|
||||
char *confdir(void)
|
||||
|
||||
Liefert das aktuelle Konfigurations-Verzeichnis fuer isdn zurueck.
|
||||
|
||||
Der Ruekgabewert enthaelt defaultmaessig den eincompilierten Pfad (/etc/isdn).
|
||||
Wenn die Umgebungsvariable "ISDN_CONF_PATH" gesetzt ist, wird dieser
|
||||
zurueckgeliefert.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Funktion:
|
||||
|
||||
int create_runfile(const char *progname)
|
||||
|
||||
Legt eine PID-Datei im Verzeichnis RUNDIR (/var/run) an. In der Datei
|
||||
steht im ASCII-Format die Prozess-ID des aktuellen Prozesses.
|
||||
|
||||
progname: Ist der Name, der als PID-Datei angelegt wird.
|
||||
"fred" -> "/var/run/fred.pid"
|
||||
"isdnlog.tty2" -> "/var/run/isdnlog.tty2.pid"
|
||||
|
||||
|
||||
Rueckgabewert:
|
||||
Wenn schon ein gueltiger/laufender Prozess mit der ID besteht liefert
|
||||
Die Funktion die PID zurueck.
|
||||
Wenn die Datei ordnungsgemaess angelegt werden konnte liefert sie 0 zurueck,
|
||||
andernfalls -1.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Funktion:
|
||||
|
||||
int delete_runfile(const char *progname)
|
||||
|
||||
Loescht eine PID-Datei im Verzeichnis RUNDIR (/var/run).
|
||||
|
||||
progname: Ist der Name, der als PID-Datei geloescht werden soll.
|
||||
"fred" -> "/var/run/fred.pid"
|
||||
"isdnlog.tty2" -> "/var/run/isdnlog.tty2.pid"
|
||||
|
||||
Rueckgabewert:
|
||||
Im Erfolgsfall 0, sonst -1.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Funktion:
|
||||
|
||||
int Set_Codes(section* Section)
|
||||
|
||||
Setzt die Eintraege der Section [GLOBAL] in die entsprechenden
|
||||
Variablen. Ausserdem wird die Section [VARIABLES] gesetzt. Alle Entries
|
||||
aus dieser Section werden als Umgebungsvariablen gesetzt.
|
||||
|
||||
Section: ist der Pointer der auf die Sectionen zeigt. Diesen erhaelt man
|
||||
von einer Funktion, die die Konfigurationsdateien einliest.
|
||||
|
||||
|
||||
Es werden folgende Variablen gesetzt:
|
||||
|
||||
COUNTRYCODE -> mycountry
|
||||
AREACODE -> myarea
|
||||
AREALIB -> acFileName
|
||||
AVONLIB -> avonlib
|
||||
|
||||
Rueckgabewert:
|
||||
Wenn nicht mindestens COUNTRYCODE und AREACODE gesetzt werden, liefert
|
||||
die Funktion -1 zurueck, andernfalls 0.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Funktion:
|
||||
|
||||
char *get_areacode(char *code, int *Len, int flag)
|
||||
|
||||
Liefert zu der uebergebenen Telefonnummer den Ortsnamen oder falls diese
|
||||
nicht bekannt den Laendernamen (falls diese bekannt ist ;-)).
|
||||
Diese Informationen werden entweder dem areacode oder dem AVON entnommen
|
||||
(je nachdem mit was diese Lib uebersetzt wurde.
|
||||
|
||||
code: Beinhaltet die Telefonnummer.
|
||||
|
||||
Len: Wenn dieser Wert != NULL, wird hier der Laenge der Vorwahl oder
|
||||
der Laenderkennung (je nachdem was gefunden wurde) zurueckgegeben.
|
||||
Wenn kein Name vorhanden ist, wird -1 zurueckgeliefert.
|
||||
|
||||
flag: Kann folgende Werte besitzen, die mit ODER verknuepft werden koennen:
|
||||
C_NO_EXPAND: Die Telefonnummer soll vorher nicht mit expand_number()
|
||||
expandiert werden.
|
||||
C_NO_WARN : Es sollen keine Warings-Meldungen ausgegeben werden.
|
||||
C_NO_ERROR : Es sollen keine Error-Meldungen ausgegeben werden.
|
||||
|
||||
|
||||
Rueckgabewert:
|
||||
Wenn ein Name gefunden wurde, wird dieser zurueck geliefert.
|
||||
Der Rueckgabewert ist eine statische Variable. Daher sollte der Rueckgabewert
|
||||
immer anschliessend kopiert werden. Wenn diese Funktion zweimal hinter einander
|
||||
aufgerufen wird, wird der erste Rueckgabewert ueberschrieben.
|
||||
Im Fehlerfall wird NULL zurueckgeliefert.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Funktion:
|
||||
|
||||
int read_conffiles(section **Section, char *groupfile)
|
||||
|
||||
Liest die Konfigurationsfiles "`confdir()`/isdn.conf", groupfile und "~/.isdn"
|
||||
nacheinander ein und stellt sicher, dass die Sectionen [MSN] und [NUMBER]
|
||||
anhand von von der Telefonnummer (Entry NUMBER) eindeutig sind.
|
||||
Anschliessend wird Set_Codes() ausgefuehrt.
|
||||
Diese Funktion liest die Sectionen nur neu ein, wenn einer der oben
|
||||
genannten Dateien veraendert wurde. Nur beim ersten mal werden die
|
||||
Informationen auf jeden Fall gelesen.
|
||||
|
||||
Section: ist der Pointer des Pointers der auf die Sectionen zeigt. Dieser
|
||||
_MUSS_ beim ersten Aufruf NULL sein. Andernfalls ist mit einem
|
||||
Absturz zu rechnen!!!!
|
||||
|
||||
groupfile: Wird fuer Ghandi's vbox benoetigt.
|
||||
|
||||
Rueckgabewert:
|
||||
Liefert 1 zurueck, wenn die Konfiguration neu eingelesen wurde. Wurde keine
|
||||
Konfiguration seit dem letzten Einlesen veraendert, wird 0 zurueck geliefert.
|
||||
Im Fehlerfalle wird -1 geliefert.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue