pkgsrc/mk/check/check-subr.awk
rillig ffe459f4de Rewrote check-portability in awk instead of shell, since the shell has a
huge performance problem: When reading files, it calls read(2) for every
single byte. awk instead reads a whole line at a time. For the lang/php5
package, the execution time changed from (7.8 real 4.5 user 3.1 sys) to
(1.6 real 1.5 user 0.4 sys).
2006-11-09 14:36:18 +00:00

56 lines
1.4 KiB
Awk

# $NetBSD: check-subr.awk,v 1.1 2006/11/09 14:36:18 rillig Exp $
#
# This file contains shell functions that are used by the various awk
# programs that check things in pkgsrc. All these programs must be
# called with the following environment variables set:
#
# CK_FNAME
# The name of the file that is checked. Since awk interprets
# command line arguments in a weird way, the input file must be
# passed via stdin.
#
# CK_PROGNAME
# The program name to be used in diagnostic messages.
#
BEGIN {
cs_exitcode = 0;
cs_fname = ENVIRON["CK_FNAME"];
cs_progname = ENVIRON["CK_PROGNAME"];
cs_last_heading = "";
cs_hline = "=========================";
cs_hline = cs_hline cs_hline cs_hline;
no = 0;
yes = 1;
}
function cs_error_heading(new_heading) {
if (new_heading != cs_last_heading) {
cs_last_heading = new_heading;
cs_error_msg("=> " new_heading);
}
}
function cs_warning_heading(new_heading) {
if (new_heading != cs_last_heading) {
cs_last_heading = new_heading;
cs_warning_msg("=> " new_heading);
}
}
function cs_error_msg(msg) {
printf("ERROR: [%s] %s\n", cs_progname, msg) > "/dev/stderr";
cs_exitcode = 1;
}
function cs_warning_msg(msg) {
printf("WARNING: [%s] %s\n", cs_progname, msg) > "/dev/stderr";
}
function cs_explain(msg) {
printf("\nExplanation:\n%s\n%s%s\n\n", cs_hline, msg, cs_hline) > "/dev/stderr";
}
function cs_exit() {
exit(cs_exitcode);
}