159632Swollman%{
259632Swollman/*
359632Swollman * Copyright is disclaimed as to the contents of this file.
459632Swollman *
559632Swollman * $FreeBSD: stable/10/usr.bin/getconf/confstr.gperf 324124 2017-09-30 17:30:22Z jhb $
659632Swollman */
759632Swollman
859632Swollman#include <sys/types.h>
959632Swollman
1059632Swollman#include <string.h>
1159632Swollman#include <unistd.h>
1259632Swollman
1359632Swollman#include "getconf.h"
1459632Swollman
1559632Swollman/*
1659632Swollman * Override gperf's built-in external scope.
1759632Swollman */
18119312Smarkmstatic const struct map *in_word_set(const char *str);
1959632Swollman
20103591Swollman/*
21103591Swollman * The Standard seems a bit ambiguous over whether the POSIX_V6_*
22103591Swollman * are specified with or without a leading underscore, so we just
23103591Swollman * use both.
24103591Swollman */
2559632Swollman%}
26103591Swollmanstruct map { const char *name; int key; int valid; };
2759632Swollman%%
2859632SwollmanPATH, _CS_PATH
29100151SwollmanPOSIX_V6_ILP32_OFF32_CFLAGS, _CS_POSIX_V6_ILP32_OFF32_CFLAGS
30100151SwollmanPOSIX_V6_ILP32_OFF32_LDFLAGS, _CS_POSIX_V6_ILP32_OFF32_LDFLAGS
31100151SwollmanPOSIX_V6_ILP32_OFF32_LIBS, _CS_POSIX_V6_ILP32_OFF32_LIBS
32100151SwollmanPOSIX_V6_ILP32_OFFBIG_CFLAGS, _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
33100151SwollmanPOSIX_V6_ILP32_OFFBIG_LDFLAGS, _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
34100151SwollmanPOSIX_V6_ILP32_OFFBIG_LIBS, _CS_POSIX_V6_ILP32_OFFBIG_LIBS
35100151SwollmanPOSIX_V6_LP64_OFF64_CFLAGS, _CS_POSIX_V6_LP64_OFF64_CFLAGS
36100151SwollmanPOSIX_V6_LP64_OFF64_LDFLAGS, _CS_POSIX_V6_LP64_OFF64_LDFLAGS
37100151SwollmanPOSIX_V6_LP64_OFF64_LIBS, _CS_POSIX_V6_LP64_OFF64_LIBS
38100151SwollmanPOSIX_V6_LPBIG_OFFBIG_CFLAGS, _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
39100151SwollmanPOSIX_V6_LPBIG_OFFBIG_LDFLAGS, _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
40100151SwollmanPOSIX_V6_LPBIG_OFFBIG_LIBS, _CS_POSIX_V6_LPBIG_OFFBIG_LIBS
41100151SwollmanPOSIX_V6_WIDTH_RESTRICTED_ENVS, _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS
42103591Swollman_POSIX_V6_ILP32_OFF32_CFLAGS, _CS_POSIX_V6_ILP32_OFF32_CFLAGS
43103591Swollman_POSIX_V6_ILP32_OFF32_LDFLAGS, _CS_POSIX_V6_ILP32_OFF32_LDFLAGS
44103591Swollman_POSIX_V6_ILP32_OFF32_LIBS, _CS_POSIX_V6_ILP32_OFF32_LIBS
45103591Swollman_POSIX_V6_ILP32_OFFBIG_CFLAGS, _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
46103591Swollman_POSIX_V6_ILP32_OFFBIG_LDFLAGS, _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
47103591Swollman_POSIX_V6_ILP32_OFFBIG_LIBS, _CS_POSIX_V6_ILP32_OFFBIG_LIBS
48103591Swollman_POSIX_V6_LP64_OFF64_CFLAGS, _CS_POSIX_V6_LP64_OFF64_CFLAGS
49103591Swollman_POSIX_V6_LP64_OFF64_LDFLAGS, _CS_POSIX_V6_LP64_OFF64_LDFLAGS
50103591Swollman_POSIX_V6_LP64_OFF64_LIBS, _CS_POSIX_V6_LP64_OFF64_LIBS
51103591Swollman_POSIX_V6_LPBIG_OFFBIG_CFLAGS, _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
52103591Swollman_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
53103591Swollman_POSIX_V6_LPBIG_OFFBIG_LIBS, _CS_POSIX_V6_LPBIG_OFFBIG_LIBS
54103591Swollman_POSIX_V6_WIDTH_RESTRICTED_ENVS, _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS
5559632Swollman%%
5659632Swollmanint
57103591Swollmanfind_confstr(const char *name, int *key)
5859632Swollman{
5959632Swollman	const struct map *rv;
6059632Swollman
61119312Smarkm	rv = in_word_set(name);
62103591Swollman	if (rv != NULL) {
63103591Swollman		if (rv->valid) {
64103591Swollman			*key = rv->key;
65103591Swollman			return 1;
66103591Swollman		}
6759632Swollman		return -1;
68103591Swollman	}
69103591Swollman	return 0;
7059632Swollman}
71324124Sjhb
72324124Sjhbvoid
73324124Sjhbforeach_confstr(void (*func)(const char *, int))
74324124Sjhb{
75324124Sjhb	const struct map *mp;
76324124Sjhb
77324124Sjhb	for (mp = wordlist; mp->name != NULL; mp++) {
78324124Sjhb		if (mp->valid)
79324124Sjhb			func(mp->name, mp->key);
80324124Sjhb	}
81324124Sjhb}
82