=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/file/magic-test.c,v retrieving revision 1.6 retrieving revision 1.7 diff -c -r1.6 -r1.7 *** src/usr.bin/file/magic-test.c 2015/05/29 15:58:01 1.6 --- src/usr.bin/file/magic-test.c 2015/08/11 22:12:48 1.7 *************** *** 1,4 **** ! /* $OpenBSD: magic-test.c,v 1.6 2015/05/29 15:58:01 nicm Exp $ */ /* * Copyright (c) 2015 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: magic-test.c,v 1.7 2015/08/11 22:12:48 nicm Exp $ */ /* * Copyright (c) 2015 Nicholas Marriott *************** *** 206,211 **** --- 206,223 ---- } static int + magic_test_double(struct magic_line *ml, double value, double wanted) + { + switch (ml->test_operator) { + case 'x': + return (1); + case '=': + return (value == wanted); + } + return (-1); + } + + static int magic_test_type_none(__unused struct magic_line *ml, __unused struct magic_state *ms) { *************** *** 417,422 **** --- 429,435 ---- { uint32_t value0; double value; + int result; if (magic_copy_from(ms, -1, &value0, sizeof value0) != 0) return (0); *************** *** 429,439 **** if (ml->type_operator != ' ') return (-1); ! if (ml->test_operator != 'x') ! return (-1); ! ! magic_add_result(ms, ml, "%g", value); ! ms->offset += sizeof value0; return (1); } --- 442,452 ---- if (ml->type_operator != ' ') return (-1); ! result = magic_test_double(ml, value, (float)ml->test_double); ! if (result == !ml->test_not && ml->result != NULL) { ! magic_add_result(ms, ml, "%g", value); ! ms->offset += sizeof value0; ! } return (1); } *************** *** 442,447 **** --- 455,461 ---- { uint64_t value0; double value; + int result; if (magic_copy_from(ms, -1, &value0, sizeof value0) != 0) return (0); *************** *** 454,464 **** if (ml->type_operator != ' ') return (-1); ! if (ml->test_operator != 'x') ! return (-1); ! ! magic_add_result(ms, ml, "%g", value); ! ms->offset += sizeof value0; return (1); } --- 468,478 ---- if (ml->type_operator != ' ') return (-1); ! result = magic_test_double(ml, value, (double)ml->test_double); ! if (result == !ml->test_not && ml->result != NULL) { ! magic_add_result(ms, ml, "%g", value); ! ms->offset += sizeof value0; ! } return (1); }