From mboxrd@z Thu Jan 1 00:00:00 1970 From: jtc@redback.com (J.T. Conklin) To: gdb@cygnus.com Subject: problem with chained if statements? Date: Thu, 01 Apr 1999 00:00:00 -0000 Message-id: <5mhfrl3v6e.fsf@jtc.redbacknetworks.com> X-SW-Source: 1999-q1/msg00128.html I'm trying to write some user-defined commands to traverse and/or pretty-print some of the internal data structures used in our SW. In the absense of a `switch' statement, I am using a chain of if .. else if ... else if ... else ... end statements. Unfortunately it doesn't seem to work. For example, with the chain: if ($status == $TASK_READY) printf "READY " else if ($status == $TASK_DELAY) printf "DELAY " else if ($status == ($TASK_DELAY | $TASK_SUSPEND)) printf "DELAY+S " else if ($status == $TASK_PEND) printf "PEND " else if ($status == ($TASK_PEND | $TASK_DELAY)) printf "PEND+T " else if ($status == ($TASK_PEND | $TASK_SUSPEND)) printf "PEND+S " else if ($status == $TASK_SUSPEND) printf "SUSPEND " else if ($status == $TASK_DEAD) printf "DEAD " else printf "%8x ", $status end Always prints the numeric value of $status, even when it is equal to one of the pre-defined $TASK_FOO variables. However, a simple test set $status = $TASK_READY if $status == $TASK_READY printf "OK\n" end works as expected. Is my syntax for this wrong in some way, or should I be looking for an bug inside GDB. --jtc -- J.T. Conklin RedBack Networks