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