 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Jens Lenge Guest
|
Posted: Thu May 11, 2006 6:03 pm Post subject: C-Strings |
|
|
Hallo Welt,
sorry für die etwas Newbie-mäßige Frage, aber ich hab in dieser
Deutlichkeit nichts dazu gefunden. Ich hab etwas Konfusion, wann genau
wieviel Platz für C-Strings (mit/ohne abschließendem Nullbyte)
angelegt wird:
1) Statisch: char s[100];
2) Dynamisch: char* s = new char[100];
3) Alt-C-mäßig: char* s = (char*)malloc(100);
Was gilt nun genau?
a) In allen drei Fällen werden exakt 100 Bytes (bzw. 100x Größe
eines char) angelegt. Das abschließende Nullbyte ist darin bereits
enthalten, so dass der String maximal (99 Zeichen + Nullbyte) lang
werden darf.
b) In allen drei Fällen werden exakt 101 Bytes (bzw. 101x Größe
eines char) angelegt - eines mehr als angegeben, für das
abschließende Nullbyte. Der String darf damit maximal (100 Zeichen +
Nullbyte) lang werden.
c) Die Varianten verhalten sich unterschiedlich, nämlich ...
Zusatzfrage:
Welchen Wert muss man in den obigen Fällen jeweils als Puffergröße
für strcpy_s(...) einsetzen, die maximale Länge ohne oder inklusive
Nullbyte?
Ratlos, Jens
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Stefan Reuther Guest
|
Posted: Fri May 12, 2006 6:21 pm Post subject: Re: C-Strings |
|
|
Hallo,
Jens Lenge wrote:
| Quote: | 1) Statisch: char s[100];
2) Dynamisch: char* s = new char[100];
3) Alt-C-mäßig: char* s = (char*)malloc(100);
Was gilt nun genau?
a) In allen drei Fällen werden exakt 100 Bytes (bzw. 100x Größe
eines char) angelegt. Das abschließende Nullbyte ist darin bereits
enthalten, so dass der String maximal (99 Zeichen + Nullbyte) lang
werden darf.
|
Genau das (Größe eines 'char' ist übrigens per Definition 1 Byte).
In ein Array, das du mit der Größe 100 dimensionierst, kannst du 100
Zeichen reinpacken. Nullterminierte Strings sind nur eine Konvention.
Wenn also das letzte Zeichen ein Nullbyte sein soll, bleibt Platz für 99
Nutzdaten-Zeichen. Du könntest ja auch die Länge woanders speichern und
dann alle 100 Speicherplätze für Nutzdaten verwenden.
| Quote: | Zusatzfrage:
Welchen Wert muss man in den obigen Fällen jeweils als Puffergröße
für strcpy_s(...) einsetzen, die maximale Länge ohne oder inklusive
Nullbyte?
|
Das entnimmst du am besten der Dokumentation der Funktion strcpy_s, da
diese nicht Bestandteil der normierten Standardbibliothek ist. Meine
Compiler haben sie nicht.
Stefan
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Thomas Maeder Guest
|
Posted: Fri May 12, 2006 9:21 pm Post subject: Re: C-Strings |
|
|
"Jens Lenge" <spampot (AT) gmx (DOT) net> writes:
| Quote: | sorry für die etwas Newbie-mäßige Frage,
|
Kein Grund für "sorry".
| Quote: | aber ich hab in dieser Deutlichkeit nichts dazu gefunden. Ich hab
etwas Konfusion, wann genau wieviel Platz für C-Strings (mit/ohne
abschließendem Nullbyte) angelegt wird:
1) Statisch: char s[100];
|
s ist ein Array von 100 char-Objekten, welche mit 0 initialisiert
werden.
| Quote: | 2) Dynamisch: char* s = new char[100];
|
s zeigt auf das erste Element eines Array von 100 uninitialisierten
char-Objekten.
| Quote: | 3) Alt-C-mäßig: char* s = (char*)malloc(100);
|
Wie 2), einfach mit anderer Speicherallozierung.
Ich würde übrigens *immer* static_cast verwenden statt des C casts.
| Quote: | Was gilt nun genau?
a) In allen drei Fällen werden exakt 100 Bytes (bzw. 100x Größe
eines char) angelegt. Das abschließende Nullbyte ist darin bereits
enthalten, so dass der String maximal (99 Zeichen + Nullbyte) lang
werden darf.
|
Fast korrekt. Es hat aber in keinem der Arrays ein abschliessendes
Nullbyte (na ja, im Fall 1) ist das erste Element ein abschliessendes
Nullbyte).
| Quote: | b) In allen drei Fällen werden exakt 101 Bytes (bzw. 101x Größe
eines char) angelegt - eines mehr als angegeben, für das
abschließende Nullbyte. Der String darf damit maximal (100 Zeichen +
Nullbyte) lang werden.
|
Total falsch.
| Quote: | c) Die Varianten verhalten sich unterschiedlich, nämlich ...
|
.... die Elemente werden unterschiedlich initialisiert.
| Quote: | Zusatzfrage:
Welchen Wert muss man in den obigen Fällen jeweils als Puffergröße
für strcpy_s(...) einsetzen, die maximale Länge ohne oder inklusive
Nullbyte?
|
Was ist strcpy_s?
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Harald Wenninger Guest
|
Posted: Fri May 12, 2006 9:24 pm Post subject: Re: C-Strings |
|
|
* Jens Lenge tat kund und zu wissen:
| Quote: | sorry für die etwas Newbie-mäßige Frage, aber ich hab in dieser
Deutlichkeit nichts dazu gefunden. Ich hab etwas Konfusion, wann genau
wieviel Platz für C-Strings (mit/ohne abschließendem Nullbyte)
angelegt wird:
1) Statisch: char s[100];
2) Dynamisch: char* s = new char[100];
3) Alt-C-mäßig: char* s = (char*)malloc(100);
Was gilt nun genau?
a) In allen drei Fällen werden exakt 100 Bytes (bzw. 100x Größe
eines char) angelegt. Das abschließende Nullbyte ist darin bereits
enthalten, so dass der String maximal (99 Zeichen + Nullbyte) lang
werden darf.
|
Diese Variante ist richtig. Du bekommst bei C++ immer nur das, nach dem
du fragst.
Gruß,
Harald
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Christian Rupprecht Guest
|
Posted: Sat May 13, 2006 1:56 pm Post subject: Re: C-Strings |
|
|
Hallo,
| Quote: | 1) Statisch: char s[100];
s ist ein Array von 100 char-Objekten, welche mit 0 initialisiert
werden.
|
Das steht da aber nicht. "Statisch:" heiss hier wohl lokale
Automatikvariable auf dem Stack.
Nur static- und global Variablen werden automatisch initialisiert.
Viele Grüße,
Christian
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Jens Lenge Guest
|
Posted: Sun May 14, 2006 11:21 am Post subject: Re: C-Strings |
|
|
Hallo alle,
1. Danke für die Antworten!
2. Das mit dem static_cast stimmt natürlich.
3. Was mich aber stutzig macht, ist die Frage nach strcpy_s.
Diese Funktion ist AFAIK Bestandteil des C-Standards, zusammen mit strcat_s,
localtime_s, fopen_s und einer ganzen Reihe anderer "_s"-Funktionen. Sie die
entsprechenden "alten" Funktionen ohne "_s" (die für deprecated erklärt
wurden) durch sicherere Varianten.
Da mein C++-Compiler sie kennt und in der Doku auch exakt so beschreibt, bin
ich davon ausgegangen, dass sie auch zum C++-Standard gehören. Liege ich
damit falsch?
Jens
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Rolf Magnus Guest
|
Posted: Sun May 14, 2006 4:21 pm Post subject: Re: C-Strings |
|
|
Jens Lenge wrote:
| Quote: | Hallo alle,
1. Danke für die Antworten!
2. Das mit dem static_cast stimmt natürlich.
3. Was mich aber stutzig macht, ist die Frage nach strcpy_s.
Diese Funktion ist AFAIK Bestandteil des C-Standards, zusammen mit
strcat_s, localtime_s, fopen_s und einer ganzen Reihe anderer
"_s"-Funktionen.
|
Nein. Funktionen mit diesen Namen gibt es in ISO-C nicht.
| Quote: | Sie die entsprechenden "alten" Funktionen ohne "_s" (die für deprecated
erklärt wurden) durch sicherere Varianten.
|
Was heißt "sicherere Varianten"? Was genau ist an diesen Funktionen denn
sicherer?
| Quote: | Da mein C++-Compiler sie kennt und in der Doku auch exakt so beschreibt,
bin ich davon ausgegangen, dass sie auch zum C++-Standard gehören. Liege
ich damit falsch?
|
Ja.
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Jens Lenge Guest
|
Posted: Sun May 14, 2006 8:40 pm Post subject: Re: C-Strings |
|
|
"Rolf Magnus" <ramagnus@t-online.de> schrieb:
| Quote: | Nein. Funktionen mit diesen Namen gibt es in ISO-C nicht.
Was heißt "sicherere Varianten"? Was genau ist an diesen Funktionen denn
sicherer?
|
Hab grad nochmal nachgeschaut, diesmal bei Visual C++ 2005 in der
Online-Hilfe zu "strcpy":
<Zitat>
strcpy, [...]
Copy a string. These functions are deprecated because more secure versions
are available; see strcpy_s, wcscpy_s, _mbscpy_s.
char *strcpy(
char *strDestination,
const char *strSource
);
[...]
</Zitat>
Und zu "strcpy_s" heißt es:
<Zitat>
strcpy_s, [...]
Copy a string. These are versions of strcpy, wcscpy, _mbscpy with security
enhancements as described in Security Enhancements in the CRT.
errno_t strcpy_s(
char *strDestination,
size_t sizeInBytes,
const char *strSource
);
[...]
Significant enhancements have been made to make the CRT more secure. Many
CRT functions now have more secure versions. If a new secure function
exists, the older, less secure version is marked as deprecated and the new
version has the _s ("secure") suffix.
[...]
It should also be noted that the secure functions do not prevent or correct
security errors; rather, they catch errors when they occur. They perform
additional checks for error conditions, and in the case of an error, they
invoke an error handler (see Parameter Validation).
[...]
For example, the strcpy function has no way of telling if the string that
it's copying is too big for its destination buffer. However, its secure
counterpart, strcpy_s, takes the size of the buffer as a parameter, so it
can determine if a buffer overrun will occur. If you use strcpy_s to copy
eleven characters into a ten-character buffer, that is an error on your
part; strcpy_s cannot correct your mistake, but it can detect your error and
inform you by invoking the invalid parameter handler.
</Zitat>
Nur um das nochmal zweifelsfrei klarzustellen: Es handelt sich also
definitiv nicht um standardisierte Funktionen, sondern um einen
MS-Alleingang?
Jens
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Jens Lenge Guest
|
Posted: Sun May 14, 2006 8:45 pm Post subject: Re: C-Strings |
|
|
Grad noch was dazu gefunden:
Quelle:
https://buildsecurityin.us-cert.gov/portal/article/knowledge/coding_practices/strcpy_s-strcat_s.xml
<Zitat>
The strcpy_s() and strcat_s() functions are defined in ISO/IEC WDTR 24731 as
a close replacement for strcpy() and strcat(). These functions have an
additional argument that specifies the maximum size of the destination and
also include a return value that indicates whether the operation was
successful.
</Zitat>
Das klingt jetzt doch eher wieder nach Standard als MS-proprietär, oder?
Mittlerweile arg verwirrt,
Jens
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Stefan Reuther Guest
|
Posted: Sun May 14, 2006 8:53 pm Post subject: Re: C-Strings |
|
|
Jens Lenge wrote:
| Quote: | 3. Was mich aber stutzig macht, ist die Frage nach strcpy_s.
Diese Funktion ist AFAIK Bestandteil des C-Standards, zusammen mit
strcat_s, localtime_s, fopen_s und einer ganzen Reihe anderer
"_s"-Funktionen. Sie die entsprechenden "alten" Funktionen ohne "_s"
(die für deprecated erklärt wurden) durch sicherere Varianten.
|
Wenn das die Funktionen sind, von denen ich denke, dass sie es sind,
sind sie Teil des Microsoft-C-Standards, und die anderen Funktionen
wurden von Microsoft für deprecated erklärt.
| Quote: | Da mein C++-Compiler sie kennt und in der Doku auch exakt so beschreibt,
bin ich davon ausgegangen, dass sie auch zum C++-Standard gehören. Liege
ich damit falsch?
|
Ja. Diese Funktionen sind weder Teil von ISO 14882 (C++), noch von ISO
9899 (C). Es gibt ein Dokument "WG14 N1031": "This Technical Report
specifies a series of extensions of the programming language C", welches
immerhin eine Funktion 'strncpy_s' (aber kein 'strcpy_s') beschreibt.
Das ist aber meines Wissens noch nicht irgendwie beschlossen oder
wenigstens unumstritten.
Stefan
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Rolf Magnus Guest
|
Posted: Sun May 14, 2006 9:22 pm Post subject: Re: C-Strings |
|
|
Jens Lenge wrote:
| Quote: | Grad noch was dazu gefunden:
Quelle:
https://buildsecurityin.us-cert.gov/portal/article/knowledge/coding_practices/strcpy_s-strcat_s.xml
Zitat
The strcpy_s() and strcat_s() functions are defined in ISO/IEC WDTR 24731
as a close replacement for strcpy() and strcat(). These functions have an
additional argument that specifies the maximum size of the destination and
also include a return value that indicates whether the operation was
successful.
/Zitat
Das klingt jetzt doch eher wieder nach Standard als MS-proprietär, oder?
|
Die C-Norm heißt ISO/IEC 9899:1999.
Ein WDTR ist ein "Working Draft Technical Report". Direkt aus
ISO/IEC WDTR 24731:
Warning
This document is an ISO/IEC draft Technical Report. It is not an ISO/IEC
International Technical Report. It is distributed for review and comment.
It is subject to change without notice and shall not be referred to as an
International Technical Report or International Standard.
Recipients of this draft are invited to submit, with their comments,
notification of any relevant patent rights of which they are aware and to
provide supporting documentation.
Das Dokument kann man z.B. dort einsehen:
http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1093.pdf
Ich find's ja schon ziemlich absurd, wegen so einem Entwurf gleich mal die
Standardfunktionen für "deprecated" zu erklären.
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Jens Lenge Guest
|
Posted: Mon May 15, 2006 12:27 am Post subject: Re: C-Strings |
|
|
"Rolf Magnus" <ramagnus@t-online.de> schrieb:
| Quote: | Die C-Norm heißt ISO/IEC 9899:1999.
Ein WDTR ist ein "Working Draft Technical Report".
|
*Groschenfall* Danke für die Aufklärung!
| Quote: | Direkt aus ISO/IEC WDTR 24731:
[...]
|
Zu Deutsch, das Teil ist eine "semioffizielle" Angelegenheit, die derzeit
für eine eventuell irgendwann zu beschließende neue Version des Standards
diskutiert wird.
Wenn die letzte Norm von 1999 datiert, müsste doch eigentlich 2004 eine neue
angestanden haben, oder? (IIRC war der turnusmäßige Rhythmus 5 Jahre.)
Da ich die _s-Funktionen aber durchaus sinnvoll finde und AFAIR einie der
Regulars hier in die Standardisierungsprozesse eingebunden oder zumindest
gut damit vertraut sind, mal vorsichtig in die Runde gefragt: Wie stehen
denn die Chancen dieses WDTR, in dieser oder abgewandelter Form Bestandteil
des nächsten C- und/oder C++-Standards zu werden?
Jens
| Quote: | Ich find's ja schon ziemlich absurd, wegen so einem Entwurf gleich mal die
Standardfunktionen für "deprecated" zu erklären.
|
Vor dem Hintergund gebe ich Dir natürlich schwer recht!
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
kanze Guest
|
Posted: Mon May 15, 2006 2:22 pm Post subject: Re: C-Strings |
|
|
Jens Lenge wrote:
[...]
| Quote: | Wenn die letzte Norm von 1999 datiert, müsste doch eigentlich
2004 eine neue angestanden haben, oder? (IIRC war der
turnusmäßige Rhythmus 5 Jahre.)
|
Nicht genau. Nach fünf Jahre muss die »working group« (hier
heißt es WG14, also die Arbeitsgruppe für C) stellennehmen, ob
1) die Norm ist verältert, und eingestellt werden soll, oder 2)
sie soll halt leiter laufen, wie sie ist, oder 3) sie soll
weiterentwickelt zu einer neuen Version. Bei 3 läuft immer
danach eine gewisse Zeit, bis die neue Version erscheint; also
hat WG14 in 1993 für 3) entschieden, was C99 ergeben hat. Wenn
ich richtig gehört habe, hat WG14 in 2004 für 2 entschieden --
laut der WG ist C perfekt, wie es ist.
| Quote: | Da ich die _s-Funktionen aber durchaus sinnvoll finde und
AFAIR einie der Regulars hier in die Standardisierungsprozesse
eingebunden oder zumindest gut damit vertraut sind, mal
vorsichtig in die Runde gefragt: Wie stehen denn die Chancen
dieses WDTR, in dieser oder abgewandelter Form Bestandteil des
nächsten C- und/oder C++-Standards zu werden?
|
Soweit ich weiß, wird es keine neue Version von C geben. Bei C++
habe ich nichts davon gehört; denke aber, dass man die Nötigkeit
dafür nicht dringend fühlt, indem man mit std::string die
Probleme sowieso viel eleganter vermeidet.
| Quote: | Ich find's ja schon ziemlich absurd, wegen so einem Entwurf
gleich mal die Standardfunktionen für "deprecated" zu
erklären.
Vor dem Hintergund gebe ich Dir natürlich schwer recht!
|
Die Frage ist, deprecated von wem, und warum? Von ISO in keinem
Fall; die neuen Funktionnen sind noch Bestandteil keiner
ISO-Norm. Von was ich aus die Englisch-sprächige Gruppen
bekommen habe, ist Microsoft ein bisschen leichtsinnig mit dem
Wort »deprecated« umgegangen.
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Thomas Dorner Guest
|
Posted: Mon May 15, 2006 6:09 pm Post subject: Re: C-Strings |
|
|
Hallo Jens!
JL>Da ich die _s-Funktionen aber durchaus sinnvoll finde und AFAIR einie
JL>der Regulars hier in die Standardisierungsprozesse eingebunden oder
JL>zumindest gut damit vertraut sind, mal vorsichtig in die Runde
JL>gefragt: Wie stehen denn die Chancen dieses WDTR, in dieser oder
JL>abgewandelter Form Bestandteil des nächsten C- und/oder C++-Standards
JL>zu werden?
Ich habe zwar mit den Standardisierungsgremien überhaupt nichts zu
tun, hoffe aber mal, daß zumindest diejenigen abgelehnt werden, für
die es in den bisherigen Standards bereits sichere Versionen gibt.
Z.B. stehen die folgenden schon im ISO/IEC 14882:1998 und sollten
hochgradig portabel sein:
strncat
strncpy
strncmp
Viele Grüße, Thomas
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Stefan Reuther Guest
|
Posted: Tue May 16, 2006 7:21 pm Post subject: Re: C-Strings |
|
|
Hallo,
Thomas Dorner wrote:
| Quote: | JL>Da ich die _s-Funktionen aber durchaus sinnvoll finde und AFAIR einie
JL>der Regulars hier in die Standardisierungsprozesse eingebunden oder
JL>zumindest gut damit vertraut sind, mal vorsichtig in die Runde
JL>gefragt: Wie stehen denn die Chancen dieses WDTR, in dieser oder
JL>abgewandelter Form Bestandteil des nächsten C- und/oder C++-Standards
JL>zu werden?
Ich habe zwar mit den Standardisierungsgremien überhaupt nichts zu
tun, hoffe aber mal, daß zumindest diejenigen abgelehnt werden, für
die es in den bisherigen Standards bereits sichere Versionen gibt.
|
Die Funktionen sind nicht per se unsicher. 'strcpy' und 'strcat' auf
sichere Art und Weise zu verwenden ist nicht schwer.
Und wenn wir mal in die Newsgroup-Zeile schauen, stellen wir fest, dass
wir sowieso std::string haben.
| Quote: | Z.B. stehen die folgenden schon im ISO/IEC 14882:1998 und sollten
hochgradig portabel sein:
strncat
strncpy
strncmp
|
strncpy ist ein bisschen was anderes als strcpy_s oder strlcpy. Es füllt
den Puffer komplett mit Nullbytes (sehr effizient bei Dingen wie
'strncpy(array, "x", 1024*1024)'), und garantiert keine Null-
terminierung. Die ganzen blöden Fehler, die man mit strcpy machen kann,
kann man also mit strncpy auch.
Stefan
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|