=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/format.c,v retrieving revision 1.264 retrieving revision 1.265 diff -c -r1.264 -r1.265 *** src/usr.bin/tmux/format.c 2020/10/06 07:36:42 1.264 --- src/usr.bin/tmux/format.c 2020/11/02 08:21:30 1.265 *************** *** 1,4 **** ! /* $OpenBSD: format.c,v 1.264 2020/10/06 07:36:42 nicm Exp $ */ /* * Copyright (c) 2011 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: format.c,v 1.265 2020/11/02 08:21:30 nicm Exp $ */ /* * Copyright (c) 2011 Nicholas Marriott *************** *** 1984,1990 **** int use_fp = 0; u_int prec = 0; double mleft, mright, result; ! enum { ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS } operator; if (strcmp(mexp->argv[0], "+") == 0) operator = ADD; --- 1984,2000 ---- int use_fp = 0; u_int prec = 0; double mleft, mright, result; ! enum { ADD, ! SUBTRACT, ! MULTIPLY, ! DIVIDE, ! MODULUS, ! EQUAL, ! NOT_EQUAL, ! GREATER_THAN, ! GREATER_THAN_EQUAL, ! LESS_THAN, ! LESS_THAN_EQUAL } operator; if (strcmp(mexp->argv[0], "+") == 0) operator = ADD; *************** *** 1997,2002 **** --- 2007,2024 ---- else if (strcmp(mexp->argv[0], "%") == 0 || strcmp(mexp->argv[0], "m") == 0) operator = MODULUS; + else if (strcmp(mexp->argv[0], "==") == 0) + operator = EQUAL; + else if (strcmp(mexp->argv[0], "!=") == 0) + operator = NOT_EQUAL; + else if (strcmp(mexp->argv[0], ">") == 0) + operator = GREATER_THAN; + else if (strcmp(mexp->argv[0], "<") == 0) + operator = LESS_THAN; + else if (strcmp(mexp->argv[0], ">=") == 0) + operator = GREATER_THAN_EQUAL; + else if (strcmp(mexp->argv[0], "<=") == 0) + operator = LESS_THAN_EQUAL; else { format_log(es, "expression has no valid operator: '%s'", mexp->argv[0]); *************** *** 2058,2063 **** --- 2080,2103 ---- break; case MODULUS: result = fmod(mleft, mright); + break; + case EQUAL: + result = fabs(mleft - mright) < 1e-9; + break; + case NOT_EQUAL: + result = fabs(mleft - mright) > 1e-9; + break; + case GREATER_THAN: + result = (mleft > mright); + break; + case GREATER_THAN_EQUAL: + result = (mleft >= mright); + break; + case LESS_THAN: + result = (mleft < mright); + break; + case LESS_THAN_EQUAL: + result = (mleft > mright); break; } if (use_fp)