diff options
author | Thomas Adam <thomas@xteddy.org> | 2020-11-02 10:01:20 +0000 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2020-11-02 10:01:20 +0000 |
commit | ff53eed402abb146096673963da39b5036a5c861 (patch) | |
tree | a13a66498befbd75237a3a7a3869ccd2c52b8452 /format.c | |
parent | ffe39edf2fdd8f0489c05022ca8f6e9994396881 (diff) | |
parent | ac5045a00f1fee2ca94aef063e6a5a3d2efce3f1 (diff) | |
download | rtmux-ff53eed402abb146096673963da39b5036a5c861.tar.gz rtmux-ff53eed402abb146096673963da39b5036a5c861.tar.bz2 rtmux-ff53eed402abb146096673963da39b5036a5c861.zip |
Merge branch 'obsd-master'
Diffstat (limited to 'format.c')
-rw-r--r-- | format.c | 42 |
1 files changed, 41 insertions, 1 deletions
@@ -1984,7 +1984,17 @@ format_replace_expression(struct format_modifier *mexp, int use_fp = 0; u_int prec = 0; double mleft, mright, result; - enum { ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS } operator; + 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,6 +2007,18 @@ format_replace_expression(struct format_modifier *mexp, 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]); @@ -2059,6 +2081,24 @@ format_replace_expression(struct format_modifier *mexp, 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) xasprintf(&value, "%.*f", prec, result); |