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