The target was there, as you said. It had not copied anything in a very
long time, for two reasons:
if test "$x" = "1"
"$x" is expanded by make, not by the shell, so the shell saw
test "" = "1" and the branch never ran. It wanted "$$x" - which
refresh.noyacc, twenty lines below, gets right.
The sense was inverted anyway. diff -q exits 0 when two files are the
SAME, so
if diff -q common/dataio/form_x.h tools/cygwin/form_x.h ; then x=1; fi
set "needs updating" precisely when they already matched, and left it
clear when they had diverged. Both bugs had to be fixed for either to
show.
Rewritten as a loop over the file list, so a new .x file is one word to
add rather than three lines, and it now says which files it copied.
Then run, which refreshed three files that had drifted from the .x
sources:
form_x.h FA_S_ALLOWEDCHARS, an enum used by lib/libui/ui_curses
fgl.h the s_expr_json type and a struct's config field
fgl_xdr.c the matching xdr_s_expr_json serialiser
All additions; nothing was removed. report.h, report_xdr.c, npcode.h
and npcode_xdr.c were already current.
menu_x stays out of the list, as it always was. Unlike the other four,
tools/cygwin/menu_x.h is not rpcgen output - it is hand-adapted to need
no RPC headers, declaring bool_t itself rather than including
<rpc/rpc.h>. Copying rpcgen's version over it would throw that away.
That is now written down in the target rather than being implicit in
the omission.
Verified: a second run reports everything up to date; the fidelity
probes still pass here; and the no-rpcgen Alma 8 container build still
configures, makes and runs a compiled 4GL program against the refreshed
files - which is the case these copies exist for.