159632Swollman%{ 259632Swollman/* 359632Swollman * Copyright is disclaimed as to the contents of this file. 459632Swollman * 559632Swollman * $FreeBSD: stable/10/usr.bin/getconf/pathconf.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 2059632Swollman%} 21119312Smarkmstruct map { const char *name; int key; int valid; }; 2259632Swollman%% 23305229SngieACL_EXTENDED, _PC_ACL_EXTENDED 24305229SngieACL_NFS4, _PC_ACL_NFS4 25305229SngieACL_PATH_MAX, _PC_ACL_PATH_MAX 26305229SngieCAP_PRESENT, _PC_CAP_PRESENT 2759632SwollmanFILESIZEBITS, _PC_FILESIZEBITS 28305229SngieINF_PRESENT, _PC_INF_PRESENT 2959632SwollmanLINK_MAX, _PC_LINK_MAX 30305229SngieMAC_PRESENT, _PC_MAC_PRESENT 3159632SwollmanMAX_CANON, _PC_MAX_CANON 3259632SwollmanMAX_INPUT, _PC_MAX_INPUT 33305229SngieMIN_HOLE_SIZE, _PC_MIN_HOLE_SIZE 3459632SwollmanNAME_MAX, _PC_NAME_MAX 3559632SwollmanPATH_MAX, _PC_PATH_MAX 3659632SwollmanPIPE_BUF, _PC_PIPE_BUF 37103591SwollmanPOSIX_ALLOC_SIZE_MIN, _PC_ALLOC_SIZE_MIN 38103591SwollmanPOSIX_REC_INCR_XFER_SIZE, _PC_REC_INCR_XFER_SIZE 39103591SwollmanPOSIX_REC_MAX_XFER_SIZE, _PC_REC_MAX_XFER_SIZE 40103591SwollmanPOSIX_REC_MIN_XFER_SIZE, _PC_REC_MIN_XFER_SIZE 41103591SwollmanPOSIX_REC_XFER_ALIGN, _PC_REC_XFER_ALIGN 42106016SwollmanSYMLINK_MAX, _PC_SYMLINK_MAX 43106016SwollmanTRUSTEDBSD_ACL_EXTENDED, _PC_ACL_EXTENDED 44305229SngieTRUSTEDBSD_ACL_NFS4, _PC_ACL_NFS4 45106016SwollmanTRUSTEDBSD_ACL_PATH_MAX, _PC_ACL_PATH_MAX 46106016SwollmanTRUSTEDBSD_CAP_PRESENT, _PC_CAP_PRESENT 47106016SwollmanTRUSTEDBSD_INF_PRESENT, _PC_INF_PRESENT 48106016SwollmanTRUSTEDBSD_MAC_PRESENT, _PC_MAC_PRESENT 4959632Swollman_POSIX_CHOWN_RESTRICTED, _PC_CHOWN_RESTRICTED 5059632Swollman_POSIX_NO_TRUNC, _PC_NO_TRUNC 5159632Swollman_POSIX_VDISABLE, _PC_VDISABLE 5259632Swollman_POSIX_ASYNC_IO, _PC_ASYNC_IO 5359632Swollman_POSIX_PRIO_IO, _PC_PRIO_IO 5459632Swollman_POSIX_SYNC_IO, _PC_SYNC_IO 5559632Swollman%% 5659632Swollmanint 57103591Swollmanfind_pathconf(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_pathconf(void (*func)(const char *, int, const char *), 74324124Sjhb const char *path) 75324124Sjhb{ 76324124Sjhb const struct map *mp; 77324124Sjhb 78324124Sjhb for (mp = wordlist; mp->name != NULL; mp++) { 79324124Sjhb if (mp->valid) 80324124Sjhb func(mp->name, mp->key, path); 81324124Sjhb } 82324124Sjhb} 83