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