
Hallo, Am Sonntag, 28. Juli 2002 21:26 schrieb Jan Trippler:
On Sam, 27 Jul 2002 at 07:16 (+0200), David Haller wrote: [...]
static int count = 0; int hrv; char *ret; + char * use_fqdn;
hrv = gethostname (host, sizeof (host)); + + if( hrv == 0 && ! ( (use_fqdn = getenv("EVOLUTION_MSGID_FQDN")) != NULL + && strncmp(use_fqdn, "no\0", 3) == 0) ) {
[...]
Nur mal so am Rande: Welchen Sinn hat es hier, strncmp() statt schlicht strcmp(use_fqdn, "no") zu nutzen? strncmp() vergleicht auch nur _höchstens_ 3 Byte, maximal aber bis zum ersten Null-Byte. In welchem Fall also sollte sich hier strncmp anders verhalten als strcmp?
Diese Antwort gehört eigentlich nach `suse-programming'. Für den größeren Unfug halte ich den String "no\0", denn in C wird an einen String _immer_ ein Nullzeichen angefügt. Dann stehen da also zwei. Der Unterschied zwischen `strcmp' und `strncmp' müßte ein Integer-Vergleich sein, also etwa for ( i = 0; c[ i]; ++i) gegen for (i = 0; c[ i] && i < n; ++i) Das kostet zwar Prozessorzeit, aber ich meine nicht soviel, daß es ein Anwender merkt. Gruß Bertram -- Bertram Scharpf <b.scharpf@tesionmail.de>