xref: /illumos-gate/usr/src/cmd/mandoc/arch.c (revision 4d131170)
1*4d131170SRobert Mustacchi /* $Id: arch.c,v 1.17 2021/05/13 13:33:11 schwarze Exp $ */
2cec8643bSMichal Nowak /*
3cec8643bSMichal Nowak  * Copyright (c) 2017, 2019 Ingo Schwarze <schwarze@openbsd.org>
4cec8643bSMichal Nowak  *
5cec8643bSMichal Nowak  * Permission to use, copy, modify, and distribute this software for any
6cec8643bSMichal Nowak  * purpose with or without fee is hereby granted, provided that the above
7cec8643bSMichal Nowak  * copyright notice and this permission notice appear in all copies.
8cec8643bSMichal Nowak  *
9cec8643bSMichal Nowak  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10cec8643bSMichal Nowak  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11cec8643bSMichal Nowak  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12cec8643bSMichal Nowak  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13cec8643bSMichal Nowak  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14cec8643bSMichal Nowak  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15cec8643bSMichal Nowak  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16cec8643bSMichal Nowak  */
17cec8643bSMichal Nowak #include "config.h"
18cec8643bSMichal Nowak 
19cec8643bSMichal Nowak #include <string.h>
20cec8643bSMichal Nowak 
21cec8643bSMichal Nowak #include "roff.h"
22cec8643bSMichal Nowak 
23cec8643bSMichal Nowak int
arch_valid(const char * arch,enum mandoc_os os)24cec8643bSMichal Nowak arch_valid(const char *arch, enum mandoc_os os)
25cec8643bSMichal Nowak {
26cec8643bSMichal Nowak 	const char *openbsd_arch[] = {
27cec8643bSMichal Nowak 		"alpha", "amd64", "arm64", "armv7", "hppa", "i386",
28cec8643bSMichal Nowak 		"landisk", "loongson", "luna88k", "macppc", "mips64",
29*4d131170SRobert Mustacchi 		"octeon", "powerpc64", "riscv64", "sparc64", NULL
30cec8643bSMichal Nowak 	};
31cec8643bSMichal Nowak 	const char *netbsd_arch[] = {
32cec8643bSMichal Nowak 		"acorn26", "acorn32", "algor", "alpha", "amiga",
33cec8643bSMichal Nowak 		"arc", "atari",
34cec8643bSMichal Nowak 		"bebox", "cats", "cesfic", "cobalt", "dreamcast",
35cec8643bSMichal Nowak 		"emips", "evbarm", "evbmips", "evbppc", "evbsh3", "evbsh5",
36cec8643bSMichal Nowak 		"hp300", "hpcarm", "hpcmips", "hpcsh", "hppa",
37cec8643bSMichal Nowak 		"i386", "ibmnws", "luna68k",
38cec8643bSMichal Nowak 		"mac68k", "macppc", "mipsco", "mmeye", "mvme68k", "mvmeppc",
39cec8643bSMichal Nowak 		"netwinder", "news68k", "newsmips", "next68k",
40cec8643bSMichal Nowak 		"pc532", "playstation2", "pmax", "pmppc", "prep",
41cec8643bSMichal Nowak 		"sandpoint", "sbmips", "sgimips", "shark",
42cec8643bSMichal Nowak 		"sparc", "sparc64", "sun2", "sun3",
43cec8643bSMichal Nowak 		"vax", "walnut", "x68k", "x86", "x86_64", "xen", NULL
44cec8643bSMichal Nowak 	};
45cec8643bSMichal Nowak 	const char **arches[] = { NULL, netbsd_arch, openbsd_arch };
46cec8643bSMichal Nowak 	const char **arch_p;
47cec8643bSMichal Nowak 
48cec8643bSMichal Nowak 	if ((arch_p = arches[os]) == NULL)
49cec8643bSMichal Nowak 		return 1;
50cec8643bSMichal Nowak 	for (; *arch_p != NULL; arch_p++)
51cec8643bSMichal Nowak 		if (strcmp(*arch_p, arch) == 0)
52cec8643bSMichal Nowak 			return 1;
53cec8643bSMichal Nowak 	return 0;
54cec8643bSMichal Nowak }
55