1*3fe5961aSDevin Teske /* 2*3fe5961aSDevin Teske * Copyright (c) 2013-2026 Devin Teske <dteske@FreeBSD.org> 3*3fe5961aSDevin Teske * Copyright (c) 2021-2026 Faraz Vahedi <kfv@FreeBSD.org> 4*3fe5961aSDevin Teske * 5*3fe5961aSDevin Teske * SPDX-License-Identifier: BSD-2-Clause 6*3fe5961aSDevin Teske */ 7*3fe5961aSDevin Teske 8*3fe5961aSDevin Teske #ifndef _BSDCONF_FORMATS_H_ 9*3fe5961aSDevin Teske #define _BSDCONF_FORMATS_H_ 10*3fe5961aSDevin Teske 11*3fe5961aSDevin Teske #include "bsdconf.h" 12*3fe5961aSDevin Teske 13*3fe5961aSDevin Teske /* 14*3fe5961aSDevin Teske * The built-in format descriptors, one translation unit per format. 15*3fe5961aSDevin Teske * This header is deliberately not installed. 16*3fe5961aSDevin Teske * 17*3fe5961aSDevin Teske * Every format is a self-contained bsdconf_format_<keyword>.c defining a 18*3fe5961aSDevin Teske * single descriptor; the registry in bsdconf_format.c does nothing but 19*3fe5961aSDevin Teske * collect them into the table indexed by enum bsdconf_format. Adding a 20*3fe5961aSDevin Teske * format to the library therefore touches no existing parsing or writing 21*3fe5961aSDevin Teske * code: drop in the new file, declare its descriptor here, append one 22*3fe5961aSDevin Teske * enum constant in bsdconf.h and one pointer to the registry table, and 23*3fe5961aSDevin Teske * list the file in the Makefile. 24*3fe5961aSDevin Teske * 25*3fe5961aSDevin Teske * A candidate format whose syntax the existing processing/put flags cannot 26*3fe5961aSDevin Teske * express (for example, brace-grouped statement blocks) is handled by 27*3fe5961aSDevin Teske * teaching the shared engine (bsdconf.c and bsdconf_put.c) a new flag that 28*3fe5961aSDevin Teske * the new descriptor is first to set, so the capability composes with 29*3fe5961aSDevin Teske * every other format rather than living in a private parser. 30*3fe5961aSDevin Teske */ 31*3fe5961aSDevin Teske extern const struct bsdconf_format_def bsdconf_format_generic_def; 32*3fe5961aSDevin Teske extern const struct bsdconf_format_def bsdconf_format_loader_def; 33*3fe5961aSDevin Teske extern const struct bsdconf_format_def bsdconf_format_make_def; 34*3fe5961aSDevin Teske extern const struct bsdconf_format_def bsdconf_format_src_def; 35*3fe5961aSDevin Teske extern const struct bsdconf_format_def bsdconf_format_sysctl_def; 36*3fe5961aSDevin Teske 37*3fe5961aSDevin Teske #endif /* !_BSDCONF_FORMATS_H_ */ 38