* Copyright (c) 1992 The Regents of the University of California.
* This software was developed by the Computer Systems Engineering group
* at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
* contributed to Berkeley.
* All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Lawrence Berkeley Laboratories.
* %sccs.include.redist.c%
* @(#)mkheaders.c 5.1 (Berkeley) %G%
* from: $Header: mkheaders.c,v 1.2 93/01/12 03:58:42 torek Exp $
static int emitcnt
__P((struct nvlist
*));
static int err
__P((const char *, char *, FILE *));
static char *cntname
__P((const char *));
* Make headers containing counts, as needed.
register struct files
*fi
;
for (fi
= allfiles
; fi
!= NULL
; fi
= fi
->fi_next
) {
if (fi
->fi_flags
& FI_HIDDEN
)
if (fi
->fi_flags
& (FI_NEEDSCOUNT
| FI_NEEDSFLAG
) &&
register struct nvlist
*head
;
register struct nvlist
*nv
;
(void)sprintf(buf
, "%s.h", head
->nv_name
);
if ((fp
= fopen(fname
, "r")) == NULL
)
while (fgets(buf
, sizeof(buf
), fp
) != NULL
) {
if (sscanf(buf
, "#define %s %d", nam
, &cnt
) != 2 ||
strcmp(nam
, cntname(nv
->nv_name
)) != 0 ||
return (err("read", fname
, fp
));
if ((fp
= fopen(fname
, "w")) == NULL
) {
(void)fprintf(stderr
, "config: cannot write %s: %s\n",
for (nv
= head
; nv
!= NULL
; nv
= nv
->nv_next
)
if (fprintf(fp
, "#define\t%s\t%d\n",
cntname(nv
->nv_name
), nv
->nv_int
) < 0)
return (err("writ", fname
, fp
));
return (err("writ", fname
, NULL
));
(void)fprintf(stderr
, "config: error %sing %s: %s\n",
what
, fname
, strerror(errno
));
register const char *src
;
while ((c
= *src
++) != 0)
*dst
++ = islower(c
) ? toupper(c
) : c
;