This file is indexed.

/usr/share/calc/dotest.cal is in apcalc-common 2.12.5.0-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
/*
 * dotest - test truth statements found in line tests of dotest_testline file
 *
 * This file was created by Ernest Bowen <ebowen at une dot edu dot au>
 * and modified by Landon Curt Noll.
 *
 * This dotest_code has been placed in the public domain.  Please do not
 * copyright this dotest_code.
 *
 * ERNEST BOWEN AND LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO
 * THIS	 SOFTWARE,  INCLUDING  ALL IMPLIED WARRANTIES OF MER-
 * CHANTABILITY AND FITNESS.  IN NO EVENT SHALL	 LANDON	 CURT
 * NOLL	 BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM  LOSS  OF
 * USE,	 DATA  OR  PROFITS, WHETHER IN AN ACTION OF CONTRACT,
 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR  IN
 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 *
 * @(#) $Revision: 30.2 $
 * @(#) $Id: dotest.cal,v 30.2 2007/03/16 11:09:54 chongo Exp $
 * @(#) $Source: /usr/local/src/bin/calc/cal/RCS/dotest.cal,v $
 *
 * This file is not covered under version 2.1 of the GNU LGPL.
 *
 * Under source dotest_code control:	2006/03/08 05:54:09
 * File existed as early as:	2006
 */


/*
 * dotest - perform tests from dotest_testline file
 *
 * given:
 *	dotest_file	filename containing single test lines
 *	dotest_code	regress.cal test number to use (def: 0)
 *	dotest_maxcond	max error conditions allowed (def: <0 ==> 2^31-1)
 *
 * returns:
 *	number of line test failures
 *
 * NOTE: All variables used by the dotest() function start with "dotest_".
 *	 The dotest_file and dotest_read should not use any variable
 *	 that starts with "dotest_".
 */
define dotest(dotest_file, dotest_code = 0, dotest_maxcond = -1)
{
    local dotest_f_file;	/* open file containing test lines */
    local dotest_testline;	/* test line */
    local dotest_testeval;	/* eval value from dotest_testline test line */
    local dotest_tmperrcnt;	/* temp error count after line test */
    local dotest_errcnt;	/* total number of errors */
    local dotest_failcnt;	/* number of line tests failed */
    local dotest_testnum;	/* number of test lines evaluated */
    local dotest_linenum;	/* test line number */
    local dotest_old_errmax;	/* value of errmax() prior to calling */
    local dotest_old_errcount;	/* value of errcount() prior to calling */

    /*
     * preserve calling stats
     */
    dotest_old_errmax = errmax();
    dotest_old_errcount = errcount(0);

    /*
     * initialize test accounting
     */
    dotest_errcnt = errcount();
    dotest_failcnt = 0;
    dotest_testnum = 0;
    dotest_linenum = 0;

    /*
     * setup error accounting for dotest
     */
    if (dotest_maxcond >= 0 && dotest_maxcond < 2147483647) {
	    errmax(dotest_maxcond + dotest_old_errcount + 1),;
    } else {
	    errmax(2147483647),;
    }

    /*
     * open the test line file
     */
    printf("%d-: opening line file: %d", dotest_code, dotest_file);
    dotest_f_file = fpathopen(dotest_file, "r");
    if (!isfile(dotest_f_file)) {
	printf("**** Unable to file or open file \"%s\"\n",
		dotest_file);
	quit;
    }
    printf('%d: testing "%s"\n', dotest_code, dotest_file);

    /*
     * perform dotest_testline test on each line of the file
     */
    for (;;) {

	/* get the next test line */
	dotest_testline = fgets(dotest_f_file);
	++dotest_linenum;
	if (iserror(dotest_testline)) {
	    quit "**** Error while reading file";
	} else if (isnull(dotest_testline)) {
	    /* EOF - end of test file */
	    break;
	}

	/* skip empty lines */
	if (dotest_testline == "\n") {
	    continue;
	}

	/* evaluate the test line */
	dotest_testeval = eval(dotest_testline);

	/* ignore white space or comment lines */
	if (isnull(dotest_testeval)) {
	    continue;
	}

	/* look for test line parse errors */
	if (iserror(dotest_testeval)) {
	    printf("**** evaluation error: ");
	    ++dotest_failcnt;

	/* look for test line dotest_failcnt */
	} else if (dotest_testeval != 1) {
	    printf("**** did not return 1: ");
	    ++dotest_failcnt;
	}

	/* show the test line we just performed */
	printf("%d-%d: %s", dotest_code, dotest_linenum, dotest_testline);

	/* error accounting */
	dotest_tmperrcnt = errcount() - dotest_errcnt;
	if (dotest_tmperrcnt > 0) {

	    /* report any other errors */
	    if (dotest_tmperrcnt > 1) {
		printf("%d-%d: NOTE: %d error conditions(s): %s\n",
		    dotest_code, dotest_linenum, dotest_tmperrcnt);
	    }

	    /* report the calc error string */
	    printf("%d-%d: NOTE: last error string: %s\n",
	        dotest_code, dotest_linenum, strerror());

	    /* new error count level */
	    dotest_errcnt = errcount();
	    if (dotest_maxcond >= 0 &&
	        dotest_old_errcount-dotest_errcnt > dotest_maxcond) {
		printf("%d-%d: total error conditions: %d > %d\n",
		       dotest_code, dotest_linenum,
		       dotest_maxcond, dotest_old_errcount-dotest_errcnt);
	    }
	}
    }

    /*
     * test the close of the line file
     */
    printf("%d-: detected %d error condition(s), many of which may be OK\n",
    	   dotest_code, dotest_old_errcount-dotest_errcnt);
    printf("%d-: closing line file: %d\n", dotest_code, dotest_file);
    fclose(dotest_f_file);

    /*
     * test line file accounting
     */
    if (dotest_failcnt > 0) {
	printf("**** %d-: %d test failure(s) in %d line(s)\n",
	    dotest_code, dotest_failcnt, dotest_linenum);
    } else {
	printf("%d-: no failure(s) in %d line(s)\n",
	    dotest_code, dotest_linenum);
    }

    /*
     * preppare to return to the caller environment
     *
     * We increase the caller's error count by the number
     * of line tests that failed, not the number of internal
     * errors that were noted.
     */
    errmax(dotest_old_errmax),;
    errcount(dotest_old_errcount + dotest_failcnt),;

    /*
     * All Done!!! -- Jessica Noll, Age 2
     */
    return dotest_failcnt;
}