On Wed, 3 Jan 1996, Thomas Pedersen wrote:
>
> Well if you want "yes" for confirm, it will set flag if you say anything
> but that according to the above snip of code.
>
> if (strcmp(arg, "yes") || strcmp(arg, "YES")) { ......
>
Unfortunately, you're wrong. Your code will do it unless you put in
"yes". Here's how it should look (and why):
/* make sure you use "one_argument(argument, arg)", too */
if (!str_cmp(arg, "yes")) {
/* then the code */
return;
}
As for why? strcmp (and the case insensitive version that is in utils.c)
return 0 when the strings are an exact match. If it returns below zero
then arg < "yes", if it returns above zero, then arg > "yes". Therefore,
if you use:
if (str_cmp(arg, "yes")) {
/* code */
return;
}
The code within the if statement will always be executed _UNLESS_ arg ==
"yes". It'd be much easier if you could handle strings like you can in
most BASIC-like languages with the various C extensions to them, but you
cannot in C (although I've heard you can with classes in C++, personally,
I wouldn't know for sure since I've not taken the time to actually learn
C++'s various oddities and new features).
Just an important little tip and a sidebar...
Good luck,
Daniel Koepke <dkoepke@california.com>
ps., I posted this to the list so newbies wouldn't be confused by the
mis-information, sorry if almost everyone and their mother's knew this,
but not everyone knows (which is obviously true, since Thomas [the person
who made] the incorrect statement didn't know, apparently). I am not
trying to flame Thomas.