952 lines
16 KiB
Plaintext
952 lines
16 KiB
Plaintext
.ds RF \f3LIBRARY \f1
|
||
.ds RH \f3GUTIL \f1
|
||
.ds CH - % -
|
||
.ds LH Anwendung
|
||
.ds LF ING_DB 6.3/0
|
||
.bp
|
||
.NH 2
|
||
.ft B
|
||
Bibliotheksfunktionen **
|
||
.ft R
|
||
.LP
|
||
.sp 10
|
||
.NH 3
|
||
.ft B
|
||
Vorbemerkung **
|
||
.ft R
|
||
.LP
|
||
Zwangsl\o'a"'ufig werden bei einem so umfangreichen
|
||
Programmkomplex wie ING_DB eine Reihe von Bibliotheken
|
||
verwendet. Dieser Abschnitt soll keine Erl\o'a"'uterungen
|
||
zum Inhalt und zur Leistung der einzelnen Prozeduren
|
||
und Funktionen
|
||
bringen, es soll nur auf einige Besonderheiten
|
||
hingewiesen werden. Mit dem \o'U"'bergang von UNIX Version 6
|
||
zu Version 7 wurden die Konvertierungsfunktionen
|
||
.ft B
|
||
atoX
|
||
.ft R
|
||
in ihrer Parameter\o'u"'bergabe bzw. -\o'u"'bernahme nicht
|
||
den Bedingungen der V7-Bibliothek
|
||
.ft B
|
||
libc.a
|
||
.ft R
|
||
angepasst. Es ist deshalb sinnvoll in AMX-Programmen
|
||
grunds\o'a"'tzlich die V6-Variante zu verwenden, um die
|
||
Namensgleichheit zu \o'u"'berbr\o'u"'cken.
|
||
.LP
|
||
Dar\o'u"'berhinaus kennt die Bibliothek
|
||
.ft B
|
||
gutil
|
||
.ft R
|
||
eine Reihe von Funktionen, deren Anwendung durchaus
|
||
Erleichterungen bei der Programmierung in C bringen kann,
|
||
ohne das Gesamtkonzept zu st\o'o"'ren. Allerdings wird
|
||
nachfolgend nur ein sehr bescheidener Teil der Prozeduren
|
||
beschrieben.
|
||
.NH 3
|
||
.ft B
|
||
Funktionen **
|
||
.ft R
|
||
.LP
|
||
------------------------------------------------------------
|
||
.sp 2
|
||
.DS C
|
||
\f3APPEND \f1
|
||
.DE
|
||
.ft B NAME
|
||
.IP
|
||
append - Block-Verkettung
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SYNOPSIS
|
||
.ft R
|
||
.IP
|
||
.DS L
|
||
append (b1, l1, b2, l2, b3)
|
||
int l1, l2;
|
||
char *b1, *b2, *b3;
|
||
.DE
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
BESCHREIBUNG
|
||
.ft R
|
||
.IP
|
||
Die Bl\o'o"'cke b1 und b2, jeweils mit der L\o'a"'nge l1 und l2, werden
|
||
zum Block b3 verkettet. "return" erfolgt mit der Adresse des
|
||
ersten Bytes nach b3.
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
FEHLER
|
||
.ft R
|
||
.IP
|
||
Es wird nicht gepr\o'u"'ft, ob die Bl\o'o"'cke in unzul\o'a"'ssiger Weise
|
||
\o'u"'berlappen.
|
||
.RE
|
||
.LP
|
||
------------------------------------------------------------
|
||
.sp 2
|
||
.DS C
|
||
\f3ATOF \f1
|
||
.DE
|
||
.ft B
|
||
NAME
|
||
.ft R
|
||
.IP
|
||
atof - konvertiert eine Zeichenkette in eine Float-Zahl
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SYNOPSIS
|
||
.ft R
|
||
.IP
|
||
.DS L
|
||
atof (str, val)
|
||
char *str;
|
||
double *val;
|
||
.DE
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
BESCHREIBUNG
|
||
.ft R
|
||
.IP
|
||
atof konvertiert eine durch str adressierte Zeichenkette in eine
|
||
float-Zahl. Das Ergebnis steht auf der durch val adressierten
|
||
Variablen.
|
||
.br
|
||
.RS
|
||
.IP return: 8
|
||
-1 Syntaxfehler
|
||
.br
|
||
0 keine Fehler
|
||
.br
|
||
1 \o'U"'berlauf
|
||
.RE
|
||
.sp 1
|
||
Syntax:
|
||
.IP
|
||
{<sp>}[+|-]{<sp>}{<Ziffer>}[. <Ziffer>]{<sp>}[<exp>]
|
||
.sp
|
||
wobei "sp" ein Leerzeichen, exp=[e|E]<int> der Exponent und int
|
||
eine Integer Zahl im Sinne der Konvertierungsfunktion atoi ist.
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SIEHE-AUCH
|
||
.ft R
|
||
.IP
|
||
atoi()
|
||
.RE
|
||
.LP
|
||
------------------------------------------------------------
|
||
.sp 2
|
||
.DS C
|
||
\f3ATOI \f1
|
||
.DE
|
||
.ft B
|
||
NAME
|
||
.ft R
|
||
.IP
|
||
atoi - konvertiert eine Zeichenkette in eine Integerzahl
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SYNOPSIS
|
||
.ft R
|
||
.IP
|
||
.DS L
|
||
atoi (str, val)
|
||
char *str;
|
||
int *val;
|
||
.DE
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
BESCHREIBUNG
|
||
.ft R
|
||
.IP
|
||
atoi konvertiert eine durch str adressierte Zeichenkette
|
||
in eine 16-Bit Integer-Zahl.
|
||
Das Ergebnis steht auf der durch val adressierten Variablen.
|
||
.br
|
||
.RS
|
||
.IP return: 8
|
||
-1 Syntaxfehler
|
||
.br
|
||
0 keine Fehler
|
||
.br
|
||
1 \o'U"'berlauf
|
||
.RE
|
||
.sp 1
|
||
Syntax:
|
||
.IP
|
||
{<sp>}[+|-]{<sp>}{Ziffer}{<sp>}
|
||
.RE
|
||
.LP
|
||
------------------------------------------------------------
|
||
.sp 2
|
||
.DS C
|
||
\f3ATOL \f1
|
||
.DE
|
||
.ft B
|
||
NAME
|
||
.ft R
|
||
.IP
|
||
atol - konvertiert eine Zeichenkette in eine Long-Zahl
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SYNOPSIS
|
||
.ft R
|
||
.IP
|
||
.DS L
|
||
atol (str, val)
|
||
char *str;
|
||
int *val;
|
||
.DE
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
BESCHREIBUNG
|
||
.ft R
|
||
.IP
|
||
atol konvertiert eine durch str adressierte Zeichenkette
|
||
in eine 32-Bit Integer-Zahl.
|
||
Das Ergebnis steht auf der durch val adressierten Variablen.
|
||
.RS
|
||
.IP return: 8
|
||
-1 Syntaxfehler
|
||
.br
|
||
0 keine Fehler
|
||
.br
|
||
1 \o'U"'berlauf
|
||
.RE
|
||
.sp 1
|
||
Syntax:
|
||
.IP
|
||
{<sp>}[+|-]{<sp>}{Ziffer}{<sp>}
|
||
.RE
|
||
.LP
|
||
------------------------------------------------------------
|
||
.sp 2
|
||
.DS C
|
||
\f3BEQUAL \f1
|
||
.DE
|
||
.ft B
|
||
NAME
|
||
.ft R
|
||
.IP
|
||
bequal - Test auf Blockgleichheit
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SYNOPSIS
|
||
.ft R
|
||
.IP
|
||
.DS L
|
||
bequal (a, b, l)
|
||
char *a, *b;
|
||
int l;
|
||
.DE
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
BESCHREIBUNG
|
||
.ft R
|
||
.IP
|
||
.ft B
|
||
bequal
|
||
.ft R
|
||
testet zwei Bl\o'o"'cke a und b, beide in der L\o'a"'nge l,
|
||
auf Gleichheit.
|
||
.RS
|
||
.IP return: 8
|
||
1 bei Gleichheit
|
||
.br
|
||
0 bei Ungleichheit
|
||
.RE
|
||
.RE
|
||
.LP
|
||
------------------------------------------------------------
|
||
.sp 2
|
||
.DS C
|
||
\f3BITPOS \f1
|
||
.DE
|
||
.ft B
|
||
NAME
|
||
.ft R
|
||
.IP
|
||
bitpos - h\o'o"'chstwertige Bitposition ermitteln
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SYNOPSIS
|
||
.ft R
|
||
.IP
|
||
bitpos (w)
|
||
.br
|
||
int w;
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
BESCHREIBUNG
|
||
.ft R
|
||
.IP
|
||
bitpos ermittelt die Stellung des h\o'o"'chstwertigen Bits
|
||
der 16-Bit Integer-Zahl w.
|
||
Die Bits werden von rechts nach links, beginnend mit Null,
|
||
aufsteigend numeriert.
|
||
.RS
|
||
.IP return: 8
|
||
0, . . . , 15 entsprechend der Bitposition,
|
||
.br
|
||
-1 wenn kein Bit gesetzt ist.
|
||
.RE
|
||
.RE
|
||
.LP
|
||
------------------------------------------------------------
|
||
.sp 2
|
||
.DS C
|
||
\f3BMOVE \f1
|
||
.DE
|
||
.ft B
|
||
NAME
|
||
.ft R
|
||
.IP
|
||
bmove - Block Transport
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SYNOPSIS
|
||
.ft R
|
||
.IP
|
||
.DS L
|
||
char *bmove (a, b, l)
|
||
char *a, *b;
|
||
int l;
|
||
.DE
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
BESCHREIBUNG
|
||
.ft R
|
||
.IP
|
||
bmove transportiert l Bytes von a nach b.
|
||
Die Sinnf\o'a"'lligkeit von l und ein "\o'U"'berlauf" von b
|
||
werden nicht gepr\o'u"'ft.
|
||
.IP
|
||
"return" erfolgt mit der Adresse des l+1. Elementes von b.
|
||
.RE
|
||
.LP
|
||
------------------------------------------------------------
|
||
.sp 2
|
||
.DS C
|
||
\f3CONCAT \f1
|
||
.DE
|
||
.ft B
|
||
NAME
|
||
.ft R
|
||
.IP
|
||
concat - Zeichenketten Verkettung
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SYNOPSIS
|
||
.ft R
|
||
.IP
|
||
.DS L
|
||
char *concat (s1, s2, s3)
|
||
char *s1, *s2, *s3;
|
||
.DE
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
BESCHREIBUNG
|
||
.ft R
|
||
.IP
|
||
Die Zeichenketten s1 und s2 werden zur Zeichenkette s3 verkettet.
|
||
Dabei d\o'u"'rfen s1 und s3 \o'u"'berlappen.
|
||
"return" erfolgt mit der Adresse des letzten Bytes (Null-Byte)
|
||
von s3.
|
||
.RE
|
||
.LP
|
||
------------------------------------------------------------
|
||
.sp 2
|
||
.DS C
|
||
\f3FTOA \f1
|
||
.DE
|
||
.ft B
|
||
NAME
|
||
.ft R
|
||
.IP
|
||
ftoa - konvertiert eine Gleitkommazahl in eine Zeichenkette
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SYNOPSIS
|
||
.ft R
|
||
.IP
|
||
.DS L
|
||
ftoa (val, str, l, prec, form)
|
||
.br
|
||
double val;
|
||
.br
|
||
char *str, form;
|
||
.br
|
||
int l, prec;
|
||
.DE
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
BESCHREIBUNG
|
||
.ft R
|
||
.IP
|
||
ftoa konvertiert eine doppeltgenaue Gleitkommazahl val in eine
|
||
entsprechende Zeichenkette str. Die Zeichenkette str muss
|
||
mindestens in der L\o'a"'nge l+1 vereinbart sein.
|
||
Die Genauigkeit prec gibt die Anzahl der Stellen nach dem
|
||
Dezimalpunkt an. Mit "form" wird das
|
||
Ausgabeformat festgelegt.
|
||
Es kann die Werte e, E, f, F, g, G, n<, N annehmen. E steht f\o'u"'r die
|
||
exponentielle- und F f\o'u"'r die Gleitkommadarstellung. G und N sind
|
||
analog zu F; passt die konvertierte Zahl aber nicht in die
|
||
Ausgabebreite, wird auf die exponentielle Form umgeschaltet.
|
||
G garantiert die Ausrichtung des Dezimalpunktes, N nicht.
|
||
.RE
|
||
.LP
|
||
------------------------------------------------------------
|
||
.sp 2
|
||
.DS C
|
||
\f3GETSTR \f1
|
||
.DE
|
||
.ft B
|
||
NAME
|
||
.ft R
|
||
.IP
|
||
getstr - liesst eine Zeichenkette von der Standard-Eingabe
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SYNOPSIS
|
||
.ft R
|
||
.IP
|
||
.DS L
|
||
getstr (str, d, n)
|
||
char *str, d;
|
||
int n;
|
||
.DE
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
BESCHREIBUNG
|
||
.ft R
|
||
.IP
|
||
Es werden Zeichen von der Standard-Eingabe nach str \o'u"'bertragen
|
||
und zwar solange, bis der Begrenzer
|
||
.ft B
|
||
d
|
||
.ft R
|
||
erkannt wird.
|
||
Dabei werden h\o'o"'chstens n Zeichen \o'u"'bertragen. Wenn der
|
||
Begrenzer nach n Zeichen noch nicht erkannt wurde,
|
||
werden alle weiteren Zeichen bis zur Erkennung des Begrenzers
|
||
\o'u"'bergangen. An Stelle des Begrenzers wird in jedem Falle
|
||
das Null-Byte \o'u"'betragen, sodass das Feld str mindestens von
|
||
der L\o'a"'nge n+1 sein muss.
|
||
"return" erfolgt mit dem Wert 1. Sollte vor der Erkennung des
|
||
Begrenzers das file-Ende erkannt werden, wird die Zeichenkette
|
||
ebenfalls mit dem Null-Byte abgeschlossen. "return" erfolgt dann
|
||
mit dem Wert 0.
|
||
.RE
|
||
.LP
|
||
------------------------------------------------------------
|
||
.sp 2
|
||
.DS C
|
||
\f3IOCV \f1
|
||
.DE
|
||
.ft B
|
||
NAME
|
||
.ft R
|
||
.IP
|
||
iocv - konvertiert eine Integer-Zahl in eine Zeichenkette
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SYNOPSIS
|
||
.ft R
|
||
.IP
|
||
.DS L
|
||
iocv (i)
|
||
int i;
|
||
.DE
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
BESCHREIBUNG
|
||
.ft R
|
||
.IP
|
||
Die Integer-Zahl i wird mittels der Funktion itoa in eine
|
||
Zeichenkette konvertiert. Das Ergebniss wird in einem internen
|
||
statischen Bereich gespeichert, dessen Adresse durch
|
||
"return" zur\o'u"'ckgegeben wird.
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SIEHE AUCH
|
||
.ft R
|
||
.IP
|
||
itoa ()
|
||
.RE
|
||
.LP
|
||
------------------------------------------------------------
|
||
.sp 2
|
||
.DS C
|
||
\f3ITOA \f1
|
||
.DE
|
||
.ft B
|
||
NAME
|
||
.ft R
|
||
.IP
|
||
itoa - konvertiert 16-Bit Integerzahl in Zeichenkette
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SYNOPSIS
|
||
.ft R
|
||
.IP
|
||
.DS L
|
||
itoa (i, str)
|
||
int i;
|
||
char *str;
|
||
.DE
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
BESCHREIBUNG
|
||
.ft R
|
||
.IP
|
||
Die Integer-Zahl i wird in eine 7 Byte lange Zeichenkette konvertiert
|
||
und in dem durch str adressierten Feld gespeichert.
|
||
.RE
|
||
.LP
|
||
------------------------------------------------------------
|
||
.sp 2
|
||
.DS C
|
||
\f3LENGTH \f1
|
||
.DE
|
||
.LP
|
||
.ft B
|
||
NAME
|
||
.ft R
|
||
.IP
|
||
length - ermittelt die L\o'a"'nge einer Zeichenkette
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SYNOPSIS
|
||
.ft R
|
||
.IP
|
||
.DS L
|
||
length (str)
|
||
char *str;
|
||
.DE
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
BESCHREIBUNG
|
||
.ft R
|
||
.IP
|
||
Es wird die Anzahl der Bytes einer Zeichenkette, mit Ausnahme
|
||
des die Kette abschliessenden Null-Bytes, ermittelt und
|
||
durch "return" zur\o'u"'ckgegeben.
|
||
.RE
|
||
.LP
|
||
------------------------------------------------------------
|
||
.sp 2
|
||
.DS C
|
||
\f3OATOI \f1
|
||
.DE
|
||
.ft B
|
||
NAME
|
||
.ft R
|
||
.IP
|
||
oatoi - konvertiert eine Zeichenkette, die eine Oktalzahl
|
||
darstellt, in eine Integer-Zahl
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SYNOPSIS
|
||
.ft R
|
||
.IP
|
||
.DS L
|
||
oatoi (str)
|
||
char *str;
|
||
.DE
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
BESCHREIBUNG
|
||
.ft R
|
||
.IP
|
||
oatoi konvertiert die Zeichenkette str, die nur oktale Ziffern
|
||
und kein Vorzeichen enthalten darf, in eine 16-Bit Integer-Zahl.
|
||
Die Konvertierung wird beendet, sobald ein Zeichen ungleich einer
|
||
Oktalziffer erkannt wird. Der konvertierte Wert wird durch
|
||
"return" zur\o'u"'ckgegeben.
|
||
.RE
|
||
.LP
|
||
------------------------------------------------------------
|
||
.sp 2
|
||
.DS C
|
||
\f3PAD \f1
|
||
.DE
|
||
.ft B
|
||
NAME
|
||
.ft R
|
||
.IP
|
||
pad - f\o'u"'llt eine Zeichenkette mit Leerzeichen auf
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SYNOPSIS
|
||
.ft R
|
||
.IP
|
||
.DS L
|
||
pad (str, l)
|
||
char *str;
|
||
int l;
|
||
.DE
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
BESCHREIBUNG
|
||
.ft R
|
||
.IP
|
||
pad f\o'u"'llt die Zeichenkette str vom Null-Byte an bis zum
|
||
Erreichen der l-ten Position mit Leerzeichen, vorausgesetzt,
|
||
l ist gr\o'o"'sser als die L\o'a"'nge der Zeichenkette.
|
||
Erf\o'u"'llt l diese Bedingung nicht, wird die Kette nicht ver\o'a"'ndert.
|
||
pad wird durch den Aufruf von pmove (str, str, l, ' ') realisiert.
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SIEHE AUCH
|
||
.ft R
|
||
.IP
|
||
pmove ()
|
||
.RE
|
||
.LP
|
||
------------------------------------------------------------
|
||
.sp 2
|
||
.DS C
|
||
\f3PMOVE \f1
|
||
.DE
|
||
.ft B
|
||
NAME
|
||
.ft R
|
||
.IP
|
||
pmove - transportiert eine Zeichenkette und f\o'u"'llt auf
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SYNOPSIS
|
||
.ft R
|
||
.IP
|
||
.DS L
|
||
char *pmove (str, b, l, c)
|
||
char *str, *b, c;
|
||
int l;
|
||
.DE
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
BESCHREIBUNG
|
||
.ft R
|
||
.IP
|
||
pmove transportiert die Zeichenkette str in den Speicherbereich b.
|
||
Dabei werden genau l Bytes \o'u"'bertragen. Ist die Zeichenkette l\o'a"'nger,
|
||
wird abgeschnitten, ist sie k\o'u"'rzer, wird ab Nullbyte mit dem Zeichen
|
||
c aufgef\o'u"'llt.
|
||
.RE
|
||
.lP
|
||
------------------------------------------------------------
|
||
.sp 2
|
||
.DS C
|
||
\f3PRARGS \f1
|
||
.DE
|
||
.ft B
|
||
NAME
|
||
.ft R
|
||
.IP
|
||
prargs - protokolliert die Argumente einer Kommandozeile
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SYNOPSIS
|
||
.ft R
|
||
.IP
|
||
.DS L
|
||
prargs (pc, pv)
|
||
int pc;
|
||
char **pv;
|
||
.DE
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
BESCHREIBUNG
|
||
.ft R
|
||
.IP
|
||
prargs protokolliert \o'u"'ber Standardausgabe die Argumente einer
|
||
Kommandozeile (main(argc, argv)). Dabei werden Sonderzeichen
|
||
(Zeichen, deren oktaler Code zwischen 040 und 0177 liegt)
|
||
als Oktalzahl protokolliert.
|
||
.RE
|
||
.LP
|
||
------------------------------------------------------------
|
||
.sp 2
|
||
.DS C
|
||
\f3SCOMPARE \f1
|
||
.DE
|
||
.ft B
|
||
NAME
|
||
.ft R
|
||
.IP
|
||
scompare - vergleicht zwei Zeichenketten
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SYNOPSIS
|
||
.ft R
|
||
.IP
|
||
.DS L
|
||
scompare (stra, la, strb, lb)
|
||
char *stra, *strb;
|
||
int la, lb;
|
||
.DE
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
BESCHREIBUNG
|
||
.tf R
|
||
.IP
|
||
Zwei Zeichenketten stra und strb werden auf der Basis ihres
|
||
ascii-Codes verglichen. Die Anzahl der zu vergleichenden Zeichen
|
||
wird durch la bzw. lb definiert.
|
||
Die Zeichenkettenl\o'a"'ngen sollten mindestens so gross, wie die
|
||
angegebenen Vergleichsl\o'a"'ngen la und lb sein, andernfalls wird
|
||
als Vergleichswert das Nullbyte benutzt.
|
||
Werden die L\o'a"'ngen la und lb mit dem Wert Null angegeben, so
|
||
wird daf\o'u"'r automatisch ein Maximalwert (32767) benutzt.
|
||
Ebenso wird, falls la und lb ungleich sind f\o'u"'r die Kette
|
||
mit der kleineren Vergleichsl\o'a"'nge das Nullbyte zum Vergleich benutzt.
|
||
Leerzeichen werden \o'u"'bergangen.
|
||
IP return: 8
|
||
-1 stra < strb
|
||
.br
|
||
0 stra = strb
|
||
.br
|
||
1 stra > strb
|
||
.RE
|
||
.LP
|
||
------------------------------------------------------------
|
||
.sp 2
|
||
.DS C
|
||
\f3SEQUAL \f1
|
||
.DE
|
||
.ft B
|
||
NAME
|
||
.ft R
|
||
.IP
|
||
sequal - testet zwei Zeichenketten auf Gleichheit
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SYNOPSIS
|
||
.ft R
|
||
.IP
|
||
.DS L
|
||
sequal (stra, strb)
|
||
.br
|
||
char *stra, *strb;
|
||
.DE
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
BESCHREIBUNG
|
||
.ft R
|
||
.IP
|
||
Zwei Zeichenketten stra und strb werden auf absolute Gleichheit getestet.
|
||
"return" erfolgt mit 1 bei Gleichheit, sonst mit 0.
|
||
.RE
|
||
.LP
|
||
------------------------------------------------------------
|
||
.sp 2
|
||
.DS C
|
||
\f3SMOVE \f1
|
||
.DE
|
||
.ft B
|
||
NAME
|
||
.ft R
|
||
.IP
|
||
smove - Zeichenkette transportieren
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SYNOPSIS
|
||
.ft R
|
||
.IP
|
||
.DS L
|
||
smove (str, b)
|
||
.br
|
||
char *str, *b;
|
||
.DE
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
BESCHREIBUNG
|
||
.ft R
|
||
.IP
|
||
Die Zeichenkette str wird zum Block b transportiert.
|
||
"return" erfolgt mit der L\o'a"'nge der transportierten Zeichenkette.
|
||
.RE
|
||
.LP
|
||
------------------------------------------------------------
|
||
.sp 2
|
||
.DS C
|
||
\f3SYSERR \f1
|
||
.DE
|
||
.ft B
|
||
NAME
|
||
.ft R
|
||
.IP
|
||
syserr - Systemfehlermitteilung und Abbruch
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SYNOPSIS
|
||
.ft R
|
||
.IP
|
||
.DS L
|
||
syserr (ptr)
|
||
char *ptr;
|
||
.DE
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
BESCHREIBUNG
|
||
.ft R
|
||
.IP
|
||
syserr liefert eine Fehlermitteilung \o'u"'ber Standardausgabe
|
||
und bricht im Normalfall durch Aufruf der Funktion exit ab.
|
||
Argumente f\o'u"'r syserr sind in der gleichen Form
|
||
wie bei printf anzugeben. Sie sind allerdings in ihrer
|
||
Anzahl auf 5 beschr\o'a"'nkt.
|
||
syserr unterscheidet zwei Aufrufarten:
|
||
.RS
|
||
.IP 1.
|
||
der erste Parameter ist Null (die folgenden Parameter
|
||
wie bei printf), dann wird genau die
|
||
printf Funktion realisiert.
|
||
.IP 2.
|
||
Der erste Parameter ist nicht Null (also alle Parameter
|
||
wie bei printf), dann wird mit Hilfe der externen Variablen
|
||
char *Proc_name und int erron, Acceerror eine erweiterte
|
||
Fehlerprotokollierung realisiert (UNIX error,
|
||
ACCESS METHOD error, mit Angabe einer Fehlernummer
|
||
und eventuell vorangestelltem Programmnamen).
|
||
.RE
|
||
.RE
|
||
.LP
|
||
------------------------------------------------------------
|
||
.sp 2
|
||
.DS C
|
||
\f3XPUTCHAR \f1
|
||
.DE
|
||
.ft B
|
||
NAME
|
||
.ft R
|
||
.IP
|
||
xputchar - Zeichenausgabe \o'u"'ber Standard-output
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SYNOPSIS
|
||
.ft R
|
||
.IP
|
||
.DS L
|
||
xputchar (c)
|
||
.br
|
||
char c;
|
||
.DE
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
BESCHREIBUNG
|
||
.ft R
|
||
.IP
|
||
xputchar \o'u"'bertr\o'a"'gt alle Zeichen mit Ausnahme derer,
|
||
deren oktaler Code gr\o'o"'sser als 040
|
||
und kleiner als 0200 ist (Sonderzeichen)
|
||
mittels der Funktion putchar zur Standardausgabe.
|
||
Sonderzeichen werden mittels printf als Oktalzahl
|
||
zur Standardausgabe geleitet.
|
||
Diesen wird das Zeichen "\\" vorangestellt.
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SIEHE AUCH
|
||
.ft R
|
||
.IP
|
||
printf (), putchar()
|
||
.RE
|
||
.LP
|
||
------------------------------------------------------------
|
||
.sp 2
|
||
.DS C
|
||
\f3ZTACK \f1
|
||
.DE
|
||
.ft B
|
||
NAME
|
||
.ft R
|
||
.IP
|
||
ztack - Zeichenkettenverkn\o'u"'pfung in einem Puffer
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SYNOPSIS
|
||
.ft R
|
||
.IP
|
||
.DS L
|
||
char *ztack (stra, strb()
|
||
.br
|
||
char *stra;
|
||
char *strb;
|
||
.DE
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
BESCHREIBUNG
|
||
.ft R
|
||
.IP
|
||
Die Zeichenketten stra und strb werden in einem
|
||
statischen Pufferbereich zu einer Zeichenkette verbunden.
|
||
"return" erfolgt mit der Anfangsadresse
|
||
des Puffers. Bei Puffer\o'u"'berlauf wird mittels Funktion syserr
|
||
der Fehlersachverhalt "ztack overflow" nebst Pufferinhalt mitgeteilt.
|
||
Der Puffer fasst maximal 100 Zeichen, wobei das Programm so angelegt ist,
|
||
das erst nach dem Umspeichern der Zeichenkette in den Puffer auf \o'U"'berlauf
|
||
getestet wird. Ein rekursiver Aufruf von ztack ist m\o'o"'glich
|
||
(ztack(ztack(x, y), z)).
|
||
.RE
|
||
.sp 1
|
||
.ft B
|
||
SIEHE AUCH
|
||
.ft R
|
||
.IP
|
||
syserr ()
|
||
.RE
|