summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorespie <espie@openbsd.org>2004-05-05 09:10:47 +0000
committerespie <espie@openbsd.org>2004-05-05 09:10:47 +0000
commit55491c7578fb876c6c35a0ced3197fff3b7d5397 (patch)
treef8e0109447e3442f8282e49347e3cd7d3bdc910f
parentregen (diff)
downloadwireguard-openbsd-55491c7578fb876c6c35a0ced3197fff3b7d5397.tar.xz
wireguard-openbsd-55491c7578fb876c6c35a0ced3197fff3b7d5397.zip
constify char *.
Add lookup functions for suffixes and transforms, and stat them. okay otto@
-rw-r--r--usr.bin/make/stats.c7
-rw-r--r--usr.bin/make/stats.h9
-rw-r--r--usr.bin/make/suff.c94
-rw-r--r--usr.bin/make/suff.h12
4 files changed, 66 insertions, 56 deletions
diff --git a/usr.bin/make/stats.c b/usr.bin/make/stats.c
index 37edb4c6df1..8d57044780c 100644
--- a/usr.bin/make/stats.c
+++ b/usr.bin/make/stats.c
@@ -1,5 +1,5 @@
/* $OpenPackages$ */
-/* $OpenBSD: stats.c,v 1.7 2004/04/07 13:11:36 espie Exp $ */
+/* $OpenBSD: stats.c,v 1.8 2004/05/05 09:10:47 espie Exp $ */
/*
* Copyright (c) 1999 Marc Espie.
@@ -106,6 +106,11 @@ print_stats(void)
#ifdef STATS_GN_CREATION
fprintf(stderr, "Average GN: %f\n", average_runs(STAT_GN_COUNT));
#endif
+#ifdef STATS_SUFF
+ fprintf(stderr, "Average Suffix lookup: %f, transforms: %f\n",
+ average_runs(STAT_SUFF_LOOKUP_NAME),
+ average_runs(STAT_TRANSFORM_LOOKUP_NAME));
+#endif
#ifdef STATS_BUF
fprintf(stderr, "Buf tot: %f, def: %f, exp %f, weird %f, bad %f\n",
average_runs(STAT_TOTAL_BUFS),
diff --git a/usr.bin/make/stats.h b/usr.bin/make/stats.h
index e6083dbe8b1..f1f8520889c 100644
--- a/usr.bin/make/stats.h
+++ b/usr.bin/make/stats.h
@@ -1,7 +1,7 @@
#ifndef STAT_H
#define STAT_H
/* $OpenPackages$ */
-/* $OpenBSD: stats.h,v 1.3 2001/06/12 22:44:22 espie Exp $ */
+/* $OpenBSD: stats.h,v 1.4 2004/05/05 09:10:47 espie Exp $ */
/*
* Copyright (c) 1999 Marc Espie.
@@ -36,7 +36,8 @@
defined(STATS_GN_CREATION) || \
defined(STATS_BUF) || \
defined(STATS_HASH) || \
- defined(STATS_GROW)
+ defined(STATS_GROW) || \
+ defined(STATS_SUFF)
#define HAS_STATS
#endif
@@ -73,8 +74,10 @@ extern unsigned long *statarray;
#define STAT_VAR_GHASH_MAXSIZE statarray[26]
#define STAT_VAR_POWER statarray[27]
#define STAT_GROWARRAY statarray[28]
+#define STAT_SUFF_LOOKUP_NAME statarray[29]
+#define STAT_TRANSFORM_LOOKUP_NAME statarray[30]
-#define STAT_NUMBER 30
+#define STAT_NUMBER 32
#else
#define Init_Stats()
diff --git a/usr.bin/make/suff.c b/usr.bin/make/suff.c
index f25620b63d9..834f7b9916c 100644
--- a/usr.bin/make/suff.c
+++ b/usr.bin/make/suff.c
@@ -1,5 +1,5 @@
/* $OpenPackages$ */
-/* $OpenBSD: suff.c,v 1.51 2004/04/07 13:11:36 espie Exp $ */
+/* $OpenBSD: suff.c,v 1.52 2004/05/05 09:10:47 espie Exp $ */
/* $NetBSD: suff.c,v 1.13 1996/11/06 17:59:25 christos Exp $ */
/*
@@ -104,6 +104,7 @@
#include "memory.h"
#include "gnode.h"
#include "make.h"
+#include "stats.h"
static LIST sufflist; /* Lst of suffixes */
#ifdef CLEANUP
@@ -165,9 +166,9 @@ static Suff *emptySuff; /* The empty suffix required for POSIX
static char *SuffStrIsPrefix(const char *, const char *);
static char *SuffSuffIsSuffix(Suff *, const char *);
static int SuffSuffIsSuffixP(void *, const void *);
-static int SuffSuffHasNameP(void *, const void *);
static int SuffSuffIsPrefix(void *, const void *);
-static int SuffGNHasNameP(void *, const void *);
+static int SuffHasNameP(void *, const void *);
+static int GNodeHasNameP(void *, const void *);
static void SuffUnRef(Lst, Suff *);
#ifdef CLEANUP
static void SuffFree(void *);
@@ -191,6 +192,9 @@ static void SuffPrintName(void *);
static void SuffPrintSuff(void *);
static void SuffPrintTrans(void *);
+static LstNode suff_find_by_name(const char *);
+static LstNode transform_find_by_name(const char *);
+
#ifdef DEBUG_SRC
static void PrintAddr(void *);
#endif
@@ -261,22 +265,35 @@ SuffSuffIsSuffixP(void *s, const void *str)
return !SuffSuffIsSuffix((Suff *)s, (const char *)str);
}
-/*-
- *-----------------------------------------------------------------------
- * SuffSuffHasNameP --
- * Callback procedure for finding a suffix based on its name. Used by
- * Suff_GetPath.
- *
- * Results:
- * 0 if the suffix is of the given name. non-zero otherwise.
- *-----------------------------------------------------------------------
- */
static int
-SuffSuffHasNameP(void *s, const void *sname)
+SuffHasNameP(void *s, const void *sname)
{
return strcmp((const char *)sname, ((Suff *)s)->name);
}
+static LstNode
+suff_find_by_name(const char *name)
+{
+#ifdef STATS_SUFF
+ STAT_SUFF_LOOKUP_NAME++;
+#endif
+ return Lst_FindConst(&sufflist, SuffHasNameP, name);
+}
+
+static int
+GNodeHasNameP(void *gn, const void *name)
+{
+ return strcmp((const char *)name, ((GNode *)gn)->name);
+}
+
+static LstNode
+transform_find_by_name(const char *name)
+{
+#ifdef STATS_SUFF
+ STAT_TRANSFORM_LOOKUP_NAME++;
+#endif
+ return Lst_FindConst(&transforms, GNodeHasNameP, name);
+}
/*-
*-----------------------------------------------------------------------
* SuffSuffIsPrefix --
@@ -295,21 +312,6 @@ SuffSuffIsPrefix(void *s, const void *str)
return SuffStrIsPrefix(((Suff *)s)->name, (const char *)str) == NULL ? 1 : 0;
}
-/*-
- *-----------------------------------------------------------------------
- * SuffGNHasNameP --
- * See if the graph node has the desired name
- *
- * Results:
- * 0 if it does. non-zero if it doesn't
- *-----------------------------------------------------------------------
- */
-static int
-SuffGNHasNameP(void *gn, const void *name)
-{
- return strcmp((const char *)name, ((GNode *)gn)->name);
-}
-
/*********** Maintenance Functions ************/
static void
@@ -486,7 +488,7 @@ SuffParseTransform(
single = src;
singleLn = srcLn;
} else {
- targLn = Lst_FindConst(&sufflist, SuffSuffHasNameP, str2);
+ targLn = suff_find_by_name(str2);
if (targLn != NULL) {
*srcPtr = src;
*targPtr = (Suff *)Lst_Datum(targLn);
@@ -536,7 +538,7 @@ Suff_AddTransform(const char *line)
*t; /* target suffix */
LstNode ln; /* Node for existing transformation */
- ln = Lst_FindConst(&transforms, SuffGNHasNameP, line);
+ ln = transform_find_by_name(line);
if (ln == NULL) {
/*
* Make a new graph node for the transformation. It will be filled in
@@ -652,7 +654,7 @@ SuffRebuildGraph(
/* First see if it is a transformation from this suffix. */
cp = SuffStrIsPrefix(s->name, transform->name);
if (cp != NULL) {
- ln = Lst_FindConst(&sufflist, SuffSuffHasNameP, cp);
+ ln = suff_find_by_name(cp);
if (ln != NULL) {
/* Found target. Link in and return, since it can't be anything
* else. */
@@ -668,7 +670,7 @@ SuffRebuildGraph(
if (cp != NULL) {
/* Null-terminate the source suffix in order to find it. */
*cp = '\0';
- ln = Lst_FindConst(&sufflist, SuffSuffHasNameP, transform->name);
+ ln = suff_find_by_name(transform->name);
/* Replace the start of the target suffix. */
*cp = s->name[0];
if (ln != NULL) {
@@ -692,12 +694,12 @@ SuffRebuildGraph(
*-----------------------------------------------------------------------
*/
void
-Suff_AddSuffix(char *str)
+Suff_AddSuffix(const char *str)
{
Suff *s; /* new suffix descriptor */
LstNode ln;
- ln = Lst_FindConst(&sufflist, SuffSuffHasNameP, str);
+ ln = suff_find_by_name(str);
if (ln == NULL) {
s = emalloc(sizeof(Suff));
@@ -730,12 +732,12 @@ Suff_AddSuffix(char *str)
*-----------------------------------------------------------------------
*/
Lst
-Suff_GetPath(char *sname)
+Suff_GetPath(const char *sname)
{
LstNode ln;
Suff *s;
- ln = Lst_FindConst(&sufflist, SuffSuffHasNameP, sname);
+ ln = suff_find_by_name(sname);
if (ln == NULL) {
return NULL;
} else {
@@ -810,12 +812,12 @@ Suff_DoPaths(void)
*-----------------------------------------------------------------------
*/
void
-Suff_AddInclude(char *sname) /* Name of suffix to mark */
+Suff_AddInclude(const char *sname) /* Name of suffix to mark */
{
LstNode ln;
Suff *s;
- ln = Lst_FindConst(&sufflist, SuffSuffHasNameP, sname);
+ ln = suff_find_by_name(sname);
if (ln != NULL) {
s = (Suff *)Lst_Datum(ln);
s->flags |= SUFF_INCLUDE;
@@ -835,12 +837,12 @@ Suff_AddInclude(char *sname) /* Name of suffix to mark */
*-----------------------------------------------------------------------
*/
void
-Suff_AddLib(char *sname) /* Name of suffix to mark */
+Suff_AddLib(const char *sname) /* Name of suffix to mark */
{
LstNode ln;
Suff *s;
- ln = Lst_FindConst(&sufflist, SuffSuffHasNameP, sname);
+ ln = suff_find_by_name(sname);
if (ln != NULL) {
s = (Suff *)Lst_Datum(ln);
s->flags |= SUFF_LIBRARY;
@@ -1100,7 +1102,7 @@ SuffFindCmds(
/* The node matches the prefix ok, see if it has a known
* suffix. */
LstNode ln2;
- ln2 = Lst_FindConst(&sufflist, SuffSuffHasNameP, &cp[prefLen]);
+ ln2 = suff_find_by_name(&cp[prefLen]);
if (ln2 != NULL) {
/*
* It even has a known suffix, see if there's a transformation
@@ -1379,7 +1381,7 @@ SuffApplyTransform(
}
/* Locate the transformation rule itself. */
tname = Str_concat(s->name, t->name, 0);
- ln = Lst_FindConst(&transforms, SuffGNHasNameP, tname);
+ ln = transform_find_by_name(tname);
free(tname);
if (ln == NULL)
@@ -1881,7 +1883,7 @@ SuffFindDeps(GNode *gn, Lst slst)
LstNode ln;
Suff *s;
- ln = Lst_FindConst(&sufflist, SuffSuffHasNameP, LIBSUFF);
+ ln = suff_find_by_name(LIBSUFF);
if (ln != NULL) {
gn->suffix = s = (Suff *)Lst_Datum(ln);
Arch_FindLib(gn, &s->searchPath);
@@ -1913,12 +1915,12 @@ SuffFindDeps(GNode *gn, Lst slst)
*-----------------------------------------------------------------------
*/
void
-Suff_SetNull(char *name)
+Suff_SetNull(const char *name)
{
Suff *s;
LstNode ln;
- ln = Lst_FindConst(&sufflist, SuffSuffHasNameP, name);
+ ln = suff_find_by_name(name);
if (ln != NULL) {
s = (Suff *)Lst_Datum(ln);
if (suffNull != NULL) {
diff --git a/usr.bin/make/suff.h b/usr.bin/make/suff.h
index d15b3f37bc4..977b839a0c1 100644
--- a/usr.bin/make/suff.h
+++ b/usr.bin/make/suff.h
@@ -1,7 +1,7 @@
#ifndef SUFF_H
#define SUFF_H
/* $OpenPackages$ */
-/* $OpenBSD: suff.h,v 1.1 2001/05/23 12:34:50 espie Exp $ */
+/* $OpenBSD: suff.h,v 1.2 2004/05/05 09:10:48 espie Exp $ */
/*
* Copyright (c) 2001 Marc Espie.
@@ -32,13 +32,13 @@ extern void Suff_ClearSuffixes(void);
extern bool Suff_IsTransform(const char *);
extern GNode *Suff_AddTransform(const char *);
extern void Suff_EndTransform(void *);
-extern void Suff_AddSuffix(char *);
-extern Lst Suff_GetPath(char *);
+extern void Suff_AddSuffix(const char *);
+extern Lst Suff_GetPath(const char *);
extern void Suff_DoPaths(void);
-extern void Suff_AddInclude(char *);
-extern void Suff_AddLib(char *);
+extern void Suff_AddInclude(const char *);
+extern void Suff_AddLib(const char *);
extern void Suff_FindDeps(GNode *);
-extern void Suff_SetNull(char *);
+extern void Suff_SetNull(const char *);
extern void Suff_Init(void);
#ifdef CLEANUP
extern void Suff_End(void);