xref: /freebsd/lib/libbsdconf/bsdconf_format_make.c (revision 3fe5961a0b708da599d42cbb6b5e4f030c28ea45)
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 #include "bsdconf_formats.h"
9*3fe5961aSDevin Teske 
10*3fe5961aSDevin Teske /*
11*3fe5961aSDevin Teske  * BSDCONF_FORMAT_MAKE: make.conf(5)
12*3fe5961aSDevin Teske  *
13*3fe5961aSDevin Teske  * make(1) syntax: assignment modifiers (`+=' `?=' `:=' `!=') are
14*3fe5961aSDevin Teske  * recognized, matched, and rewritten (BSDCONF_OPERATOR_EQUALS), and values
15*3fe5961aSDevin Teske  * are never quoted (BSDCONF_PUT_UNQUOTED) -- a value runs to the end of
16*3fe5961aSDevin Teske  * the line, embedded whitespace included, so only a value that could not
17*3fe5961aSDevin Teske  * round-trip verbatim (an embedded newline or comment marker) is rejected.
18*3fe5961aSDevin Teske  * A put of `+=' appends a new `name+=value' line rather than rewriting a
19*3fe5961aSDevin Teske  * prior assignment (see bsdconf_put()); callers that accumulate effective
20*3fe5961aSDevin Teske  * values honor the same operators on read. sysconf(8) `name-=word' strikes
21*3fe5961aSDevin Teske  * rewrite or remove a specific prior statement via match_line (make has no
22*3fe5961aSDevin Teske  * `-=` operator of its own).
23*3fe5961aSDevin Teske  */
24*3fe5961aSDevin Teske const struct bsdconf_format_def bsdconf_format_make_def = {
25*3fe5961aSDevin Teske 	.keyword	= "make",
26*3fe5961aSDevin Teske 	.path		= "/etc/make.conf",
27*3fe5961aSDevin Teske 	.sources	= NULL, /* /etc/make.conf alone */
28*3fe5961aSDevin Teske 	.processing	= BSDCONF_BREAK_ON_EQUALS | BSDCONF_CASE_SENSITIVE |
29*3fe5961aSDevin Teske 			  BSDCONF_OPERATOR_EQUALS,
30*3fe5961aSDevin Teske 	.put		= BSDCONF_PUT_UNQUOTED | BSDCONF_PUT_ALLOW_EMPTY,
31*3fe5961aSDevin Teske };
32