Module Name: src Committed By: rillig Date: Fri Aug 28 03:35:45 UTC 2020
Modified Files: src/usr.bin/make: make.h suff.c Log Message: make(1): print suffix flags in the standard way This changes the output (it is now SUFF_NULL instead of just NULL), and the order of the flags in the output is reversed. To generate a diff of this commit: cvs rdiff -u -r1.127 -r1.128 src/usr.bin/make/make.h cvs rdiff -u -r1.121 -r1.122 src/usr.bin/make/suff.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/make/make.h diff -u src/usr.bin/make/make.h:1.127 src/usr.bin/make/make.h:1.128 --- src/usr.bin/make/make.h:1.127 Wed Aug 26 23:00:47 2020 +++ src/usr.bin/make/make.h Fri Aug 28 03:35:45 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: make.h,v 1.127 2020/08/26 23:00:47 rillig Exp $ */ +/* $NetBSD: make.h,v 1.128 2020/08/28 03:35:45 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -160,6 +160,7 @@ typedef int ReturnStatus; #define FAILURE 0x00000001 #include "lst.h" +#include "enum.h" #include "hash.h" #include "config.h" #include "buf.h" Index: src/usr.bin/make/suff.c diff -u src/usr.bin/make/suff.c:1.121 src/usr.bin/make/suff.c:1.122 --- src/usr.bin/make/suff.c:1.121 Thu Aug 27 19:15:35 2020 +++ src/usr.bin/make/suff.c Fri Aug 28 03:35:45 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: suff.c,v 1.121 2020/08/27 19:15:35 rillig Exp $ */ +/* $NetBSD: suff.c,v 1.122 2020/08/28 03:35:45 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -69,14 +69,14 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: suff.c,v 1.121 2020/08/27 19:15:35 rillig Exp $"; +static char rcsid[] = "$NetBSD: suff.c,v 1.122 2020/08/28 03:35:45 rillig Exp $"; #else #include <sys/cdefs.h> #ifndef lint #if 0 static char sccsid[] = "@(#)suff.c 8.4 (Berkeley) 3/21/94"; #else -__RCSID("$NetBSD: suff.c,v 1.121 2020/08/27 19:15:35 rillig Exp $"); +__RCSID("$NetBSD: suff.c,v 1.122 2020/08/28 03:35:45 rillig Exp $"); #endif #endif /* not lint */ #endif @@ -151,14 +151,18 @@ typedef enum { SUFF_INCLUDE = 0x01, /* One which is #include'd */ SUFF_LIBRARY = 0x02, /* One which contains a library */ SUFF_NULL = 0x04 /* The empty suffix */ + /* XXX: Why is SUFF_NULL needed? Wouldn't nameLen == 0 mean the same? */ } SuffFlags; +ENUM_FLAGS_RTTI_3(SuffFlags, + SUFF_INCLUDE, SUFF_LIBRARY, SUFF_NULL); + /* * Structure describing an individual suffix. */ typedef struct Suff { - char *name; /* The suffix itself */ - int nameLen; /* Length of the suffix */ + char *name; /* The suffix itself, such as ".c" */ + int nameLen; /* Length of the name, to avoid strlen calls */ SuffFlags flags; /* Type of suffix */ Lst searchPath; /* The path along which files of this suffix * may be found */ @@ -2602,30 +2606,15 @@ static int SuffPrintSuff(void *sp, void *dummy MAKE_ATTR_UNUSED) { Suff *s = (Suff *)sp; - int flags; - int flag; fprintf(debug_file, "# `%s' [%d] ", s->name, s->refCount); - flags = s->flags; - if (flags) { - fputs(" (", debug_file); - while (flags) { - flag = 1 << (ffs(flags) - 1); - flags &= ~flag; - switch (flag) { - case SUFF_NULL: - fprintf(debug_file, "NULL"); - break; - case SUFF_INCLUDE: - fprintf(debug_file, "INCLUDE"); - break; - case SUFF_LIBRARY: - fprintf(debug_file, "LIBRARY"); - break; - } - fputc(flags ? '|' : ')', debug_file); - } + if (s->flags != 0) { + char flags_buf[SuffFlags_ToStringSize]; + + fprintf(debug_file, " (%s)", + Enum_FlagsToString(flags_buf, sizeof flags_buf, + s->flags, SuffFlags_ToStringSpecs)); } fputc('\n', debug_file); fprintf(debug_file, "#\tTo: ");