18c6bd995SGarrett Wollman%{ 28c6bd995SGarrett Wollman/* 38c6bd995SGarrett Wollman * Copyright is disclaimed as to the contents of this file. 48c6bd995SGarrett Wollman */ 58c6bd995SGarrett Wollman 68c6bd995SGarrett Wollman#include <sys/types.h> 78c6bd995SGarrett Wollman 88c6bd995SGarrett Wollman#include <string.h> 98c6bd995SGarrett Wollman#include <unistd.h> 108c6bd995SGarrett Wollman 118c6bd995SGarrett Wollman#include "getconf.h" 128c6bd995SGarrett Wollman 138c6bd995SGarrett Wollman/* 148c6bd995SGarrett Wollman * Override gperf's built-in external scope. 158c6bd995SGarrett Wollman */ 16a272cd3aSMark Murraystatic const struct map *in_word_set(const char *str); 178c6bd995SGarrett Wollman 18e9cfb9aeSGarrett Wollman/* 19e9cfb9aeSGarrett Wollman * The Standard seems a bit ambiguous over whether the POSIX_V6_* 20e9cfb9aeSGarrett Wollman * are specified with or without a leading underscore, so we just 21e9cfb9aeSGarrett Wollman * use both. 22e9cfb9aeSGarrett Wollman */ 238c6bd995SGarrett Wollman%} 24e9cfb9aeSGarrett Wollmanstruct map { const char *name; int key; int valid; }; 258c6bd995SGarrett Wollman%% 268c6bd995SGarrett WollmanPATH, _CS_PATH 2755a7bf6bSGarrett WollmanPOSIX_V6_ILP32_OFF32_CFLAGS, _CS_POSIX_V6_ILP32_OFF32_CFLAGS 2855a7bf6bSGarrett WollmanPOSIX_V6_ILP32_OFF32_LDFLAGS, _CS_POSIX_V6_ILP32_OFF32_LDFLAGS 2955a7bf6bSGarrett WollmanPOSIX_V6_ILP32_OFF32_LIBS, _CS_POSIX_V6_ILP32_OFF32_LIBS 3055a7bf6bSGarrett WollmanPOSIX_V6_ILP32_OFFBIG_CFLAGS, _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS 3155a7bf6bSGarrett WollmanPOSIX_V6_ILP32_OFFBIG_LDFLAGS, _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS 3255a7bf6bSGarrett WollmanPOSIX_V6_ILP32_OFFBIG_LIBS, _CS_POSIX_V6_ILP32_OFFBIG_LIBS 3355a7bf6bSGarrett WollmanPOSIX_V6_LP64_OFF64_CFLAGS, _CS_POSIX_V6_LP64_OFF64_CFLAGS 3455a7bf6bSGarrett WollmanPOSIX_V6_LP64_OFF64_LDFLAGS, _CS_POSIX_V6_LP64_OFF64_LDFLAGS 3555a7bf6bSGarrett WollmanPOSIX_V6_LP64_OFF64_LIBS, _CS_POSIX_V6_LP64_OFF64_LIBS 3655a7bf6bSGarrett WollmanPOSIX_V6_LPBIG_OFFBIG_CFLAGS, _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS 3755a7bf6bSGarrett WollmanPOSIX_V6_LPBIG_OFFBIG_LDFLAGS, _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS 3855a7bf6bSGarrett WollmanPOSIX_V6_LPBIG_OFFBIG_LIBS, _CS_POSIX_V6_LPBIG_OFFBIG_LIBS 3955a7bf6bSGarrett WollmanPOSIX_V6_WIDTH_RESTRICTED_ENVS, _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS 40e9cfb9aeSGarrett Wollman_POSIX_V6_ILP32_OFF32_CFLAGS, _CS_POSIX_V6_ILP32_OFF32_CFLAGS 41e9cfb9aeSGarrett Wollman_POSIX_V6_ILP32_OFF32_LDFLAGS, _CS_POSIX_V6_ILP32_OFF32_LDFLAGS 42e9cfb9aeSGarrett Wollman_POSIX_V6_ILP32_OFF32_LIBS, _CS_POSIX_V6_ILP32_OFF32_LIBS 43e9cfb9aeSGarrett Wollman_POSIX_V6_ILP32_OFFBIG_CFLAGS, _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS 44e9cfb9aeSGarrett Wollman_POSIX_V6_ILP32_OFFBIG_LDFLAGS, _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS 45e9cfb9aeSGarrett Wollman_POSIX_V6_ILP32_OFFBIG_LIBS, _CS_POSIX_V6_ILP32_OFFBIG_LIBS 46e9cfb9aeSGarrett Wollman_POSIX_V6_LP64_OFF64_CFLAGS, _CS_POSIX_V6_LP64_OFF64_CFLAGS 47e9cfb9aeSGarrett Wollman_POSIX_V6_LP64_OFF64_LDFLAGS, _CS_POSIX_V6_LP64_OFF64_LDFLAGS 48e9cfb9aeSGarrett Wollman_POSIX_V6_LP64_OFF64_LIBS, _CS_POSIX_V6_LP64_OFF64_LIBS 49e9cfb9aeSGarrett Wollman_POSIX_V6_LPBIG_OFFBIG_CFLAGS, _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS 50e9cfb9aeSGarrett Wollman_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS 51e9cfb9aeSGarrett Wollman_POSIX_V6_LPBIG_OFFBIG_LIBS, _CS_POSIX_V6_LPBIG_OFFBIG_LIBS 52e9cfb9aeSGarrett Wollman_POSIX_V6_WIDTH_RESTRICTED_ENVS, _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS 538c6bd995SGarrett Wollman%% 548c6bd995SGarrett Wollmanint 55e9cfb9aeSGarrett Wollmanfind_confstr(const char *name, int *key) 568c6bd995SGarrett Wollman{ 578c6bd995SGarrett Wollman const struct map *rv; 588c6bd995SGarrett Wollman 59a272cd3aSMark Murray rv = in_word_set(name); 60e9cfb9aeSGarrett Wollman if (rv != NULL) { 61e9cfb9aeSGarrett Wollman if (rv->valid) { 62e9cfb9aeSGarrett Wollman *key = rv->key; 63e9cfb9aeSGarrett Wollman return 1; 64e9cfb9aeSGarrett Wollman } 658c6bd995SGarrett Wollman return -1; 668c6bd995SGarrett Wollman } 67e9cfb9aeSGarrett Wollman return 0; 68e9cfb9aeSGarrett Wollman} 69*dda1cfcfSJohn Baldwin 70*dda1cfcfSJohn Baldwinvoid 71*dda1cfcfSJohn Baldwinforeach_confstr(void (*func)(const char *, int)) 72*dda1cfcfSJohn Baldwin{ 73*dda1cfcfSJohn Baldwin const struct map *mp; 74*dda1cfcfSJohn Baldwin 75*dda1cfcfSJohn Baldwin for (mp = wordlist; mp->name != NULL; mp++) { 76*dda1cfcfSJohn Baldwin if (mp->valid) 77*dda1cfcfSJohn Baldwin func(mp->name, mp->key); 78*dda1cfcfSJohn Baldwin } 79*dda1cfcfSJohn Baldwin} 80