mirror of
https://github.com/systemd/systemd.git
synced 2025-03-21 02:50:18 +03:00
Merge pull request #2883 from keszybz/allow-boms
Ignore BOM in config files
This commit is contained in:
commit
51359d02d1
@ -28,6 +28,7 @@
|
||||
#include "missing.h"
|
||||
|
||||
#define UTF8_REPLACEMENT_CHARACTER "\xef\xbf\xbd"
|
||||
#define UTF8_BYTE_ORDER_MARK "\xef\xbb\xbf"
|
||||
|
||||
bool unichar_is_valid(char32_t c);
|
||||
|
||||
|
@ -294,7 +294,7 @@ int config_parse(const char *unit,
|
||||
_cleanup_free_ char *section = NULL, *continuation = NULL;
|
||||
_cleanup_fclose_ FILE *ours = NULL;
|
||||
unsigned line = 0, section_line = 0;
|
||||
bool section_ignored = false;
|
||||
bool section_ignored = false, allow_bom = true;
|
||||
int r;
|
||||
|
||||
assert(filename);
|
||||
@ -314,11 +314,11 @@ int config_parse(const char *unit,
|
||||
|
||||
fd_warn_permissions(filename, fileno(f));
|
||||
|
||||
while (!feof(f)) {
|
||||
char l[LINE_MAX], *p, *c = NULL, *e;
|
||||
for (;;) {
|
||||
char buf[LINE_MAX], *l, *p, *c = NULL, *e;
|
||||
bool escaped = false;
|
||||
|
||||
if (!fgets(l, sizeof(l), f)) {
|
||||
if (!fgets(buf, sizeof buf, f)) {
|
||||
if (feof(f))
|
||||
break;
|
||||
|
||||
@ -326,6 +326,11 @@ int config_parse(const char *unit,
|
||||
return -errno;
|
||||
}
|
||||
|
||||
l = buf;
|
||||
if (allow_bom && startswith(l, UTF8_BYTE_ORDER_MARK))
|
||||
l += strlen(UTF8_BYTE_ORDER_MARK);
|
||||
allow_bom = false;
|
||||
|
||||
truncate_nl(l);
|
||||
|
||||
if (continuation) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user