idx = exp_get_abs ("Conditional operator must have absolute operands.\n", idx, in, &valb);
idx = exp_get_abs (_("Conditional operator must have absolute operands.\n"), idx, in, &valb);
istrue (idx, in)     int idx;     sb *in;{  int res;  sb acc_a;  sb cond;  sb acc_b;  sb_new (&acc_a);  sb_new (&cond);  sb_new (&acc_b);  idx = sb_skip_white (idx, in);  if (in->ptr[idx] == '"')    {      int cond;      int same;      /* This is a string comparision */      idx = getstring (idx, in, &acc_a);      idx = whatcond (idx, in, &cond);      idx = getstring (idx, in, &acc_b);      same = acc_a.len == acc_b.len && (strncmp (acc_a.ptr, acc_b.ptr, acc_a.len) == 0);      if (cond != EQ && cond != NE)	{	  ERROR ((stderr, "Comparison operator for strings must be EQ or NE\n"));	  res = 0;	}      else	res = (cond != EQ) ^ same;    }  else    /* This is a numeric expression */    {      int vala;      int valb;      int cond;      idx = exp_get_abs ("Conditional operator must have absolute operands.\n", idx, in, &vala);      idx = whatcond (idx, in, &cond);      idx = sb_skip_white (idx, in);      if (in->ptr[idx] == '"')	{	  WARNING ((stderr, "String compared against expression.\n"));	  res = 0;	}      else	{	  idx = exp_get_abs ("Conditional operator must have absolute operands.\n", idx, in, &valb);	  switch (cond)	    {	    default:	      res = 42;	      break;	    case EQ:	      res = vala == valb;	      break;	    case NE:	      res = vala != valb;	      break;	    case LT:	      res = vala < valb;	      break;	    case LE:	      res = vala <= valb;	      break;	    case GT:	      res = vala > valb;	      break;	    case GE:	      res = vala >= valb;	      break;	    case NEVER:	      res = 0;	      break;	    }	}    }  sb_kill (&acc_a);  sb_kill (&cond);  sb_kill (&acc_b);  return res;}