diff options
Diffstat (limited to 'expr.c')
-rw-r--r-- | expr.c | 85 |
1 files changed, 45 insertions, 40 deletions
@@ -443,23 +443,24 @@ ExprResolveBoolean(ExprDef * expr, val_rtrn->uval = !val_rtrn->uval; return ok; case OpAdd: - if (bogus == NULL) - bogus = "Addition"; + bogus = "Addition"; + goto boolean; case OpSubtract: - if (bogus == NULL) - bogus = "Subtraction"; + bogus = "Subtraction"; + goto boolean; case OpMultiply: - if (bogus == NULL) - bogus = "Multiplication"; + bogus = "Multiplication"; + goto boolean; case OpDivide: - if (bogus == NULL) - bogus = "Division"; + bogus = "Division"; + goto boolean; case OpAssign: - if (bogus == NULL) - bogus = "Assignment"; + bogus = "Assignment"; + goto boolean; case OpNegate: - if (bogus == NULL) - bogus = "Negation"; + bogus = "Negation"; + goto boolean; + boolean: ERROR("%s of boolean values not permitted\n", bogus); break; case OpUnaryPlus: @@ -774,23 +775,24 @@ ExprResolveString(ExprDef * expr, } return False; case OpSubtract: - if (bogus == NULL) - bogus = "Subtraction"; + bogus = "Subtraction"; + goto string; case OpMultiply: - if (bogus == NULL) - bogus = "Multiplication"; + bogus = "Multiplication"; + goto string; case OpDivide: - if (bogus == NULL) - bogus = "Division"; + bogus = "Division"; + goto string; case OpAssign: - if (bogus == NULL) - bogus = "Assignment"; + bogus = "Assignment"; + goto string; case OpNegate: - if (bogus == NULL) - bogus = "Negation"; + bogus = "Negation"; + goto string; case OpInvert: - if (bogus == NULL) - bogus = "Bitwise complement"; + bogus = "Bitwise complement"; + goto string; + string: ERROR("%s of string values not permitted\n", bogus); return False; case OpNot: @@ -858,26 +860,27 @@ ExprResolveKeyName(ExprDef * expr, XkbAtomText(NULL, expr->value.field.field, XkbMessage)); return ok; case OpAdd: - if (bogus == NULL) - bogus = "Addition"; + bogus = "Addition"; + goto keyname; case OpSubtract: - if (bogus == NULL) - bogus = "Subtraction"; + bogus = "Subtraction"; + goto keyname; case OpMultiply: - if (bogus == NULL) - bogus = "Multiplication"; + bogus = "Multiplication"; + goto keyname; case OpDivide: - if (bogus == NULL) - bogus = "Division"; + bogus = "Division"; + goto keyname; case OpAssign: - if (bogus == NULL) - bogus = "Assignment"; + bogus = "Assignment"; + goto keyname; case OpNegate: - if (bogus == NULL) - bogus = "Negation"; + bogus = "Negation"; + goto keyname; case OpInvert: - if (bogus == NULL) - bogus = "Bitwise complement"; + bogus = "Bitwise complement"; + goto keyname; + keyname: ERROR("%s of key name values not permitted\n", bogus); return False; case OpNot: @@ -979,9 +982,11 @@ ExprResolveMask(ExprDef * expr, return ok; case ExprArrayRef: bogus = "array reference"; + goto unexpected_mask; case ExprActionDecl: - if (bogus == NULL) - bogus = "function use"; + bogus = "function use"; + goto unexpected_mask; + unexpected_mask: ERROR("Unexpected %s in mask expression\n", bogus); ACTION("Expression ignored\n"); return False; |