xref: /freebsd-src/contrib/mandoc/arch.c (revision 6d38604fc532a3fc060788e3ce40464b46047eaf)
1*6d38604fSBaptiste Daroussin /* $Id: arch.c,v 1.17 2021/05/13 13:33:11 schwarze Exp $ */
27295610fSBaptiste Daroussin /*
37295610fSBaptiste Daroussin  * Copyright (c) 2017, 2019 Ingo Schwarze <schwarze@openbsd.org>
47295610fSBaptiste Daroussin  *
57295610fSBaptiste Daroussin  * Permission to use, copy, modify, and distribute this software for any
67295610fSBaptiste Daroussin  * purpose with or without fee is hereby granted, provided that the above
77295610fSBaptiste Daroussin  * copyright notice and this permission notice appear in all copies.
87295610fSBaptiste Daroussin  *
97295610fSBaptiste Daroussin  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
107295610fSBaptiste Daroussin  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
117295610fSBaptiste Daroussin  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
127295610fSBaptiste Daroussin  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
137295610fSBaptiste Daroussin  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
147295610fSBaptiste Daroussin  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
157295610fSBaptiste Daroussin  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
167295610fSBaptiste Daroussin  */
177295610fSBaptiste Daroussin #include "config.h"
187295610fSBaptiste Daroussin 
197295610fSBaptiste Daroussin #include <string.h>
207295610fSBaptiste Daroussin 
217295610fSBaptiste Daroussin #include "roff.h"
227295610fSBaptiste Daroussin 
237295610fSBaptiste Daroussin int
arch_valid(const char * arch,enum mandoc_os os)247295610fSBaptiste Daroussin arch_valid(const char *arch, enum mandoc_os os)
257295610fSBaptiste Daroussin {
267295610fSBaptiste Daroussin 	const char *openbsd_arch[] = {
277295610fSBaptiste Daroussin 		"alpha", "amd64", "arm64", "armv7", "hppa", "i386",
287295610fSBaptiste Daroussin 		"landisk", "loongson", "luna88k", "macppc", "mips64",
29*6d38604fSBaptiste Daroussin 		"octeon", "powerpc64", "riscv64", "sparc64", NULL
307295610fSBaptiste Daroussin 	};
317295610fSBaptiste Daroussin 	const char *netbsd_arch[] = {
327295610fSBaptiste Daroussin 		"acorn26", "acorn32", "algor", "alpha", "amiga",
337295610fSBaptiste Daroussin 		"arc", "atari",
347295610fSBaptiste Daroussin 		"bebox", "cats", "cesfic", "cobalt", "dreamcast",
357295610fSBaptiste Daroussin 		"emips", "evbarm", "evbmips", "evbppc", "evbsh3", "evbsh5",
367295610fSBaptiste Daroussin 		"hp300", "hpcarm", "hpcmips", "hpcsh", "hppa",
377295610fSBaptiste Daroussin 		"i386", "ibmnws", "luna68k",
387295610fSBaptiste Daroussin 		"mac68k", "macppc", "mipsco", "mmeye", "mvme68k", "mvmeppc",
397295610fSBaptiste Daroussin 		"netwinder", "news68k", "newsmips", "next68k",
407295610fSBaptiste Daroussin 		"pc532", "playstation2", "pmax", "pmppc", "prep",
417295610fSBaptiste Daroussin 		"sandpoint", "sbmips", "sgimips", "shark",
427295610fSBaptiste Daroussin 		"sparc", "sparc64", "sun2", "sun3",
437295610fSBaptiste Daroussin 		"vax", "walnut", "x68k", "x86", "x86_64", "xen", NULL
447295610fSBaptiste Daroussin 	};
457295610fSBaptiste Daroussin 	const char **arches[] = { NULL, netbsd_arch, openbsd_arch };
467295610fSBaptiste Daroussin 	const char **arch_p;
477295610fSBaptiste Daroussin 
487295610fSBaptiste Daroussin 	if ((arch_p = arches[os]) == NULL)
497295610fSBaptiste Daroussin 		return 1;
507295610fSBaptiste Daroussin 	for (; *arch_p != NULL; arch_p++)
517295610fSBaptiste Daroussin 		if (strcmp(*arch_p, arch) == 0)
527295610fSBaptiste Daroussin 			return 1;
537295610fSBaptiste Daroussin 	return 0;
547295610fSBaptiste Daroussin }
55