sysctl: disable buffer while writing to /proc
fputs() writes only first 2048 bytes and fails to write to /proc when values are larger than that. This patch adds a new flag to WriteStringFileFlags that make it possible to disable the buffer under specific cases.
This commit is contained in:
parent
a668bfe88a
commit
12ec9c3099
|
@ -167,6 +167,9 @@ int write_string_file_ts(
|
|||
}
|
||||
}
|
||||
|
||||
if (flags & WRITE_STRING_FILE_DISABLE_BUFFER)
|
||||
setvbuf(f, NULL, _IONBF, 0);
|
||||
|
||||
r = write_string_stream_ts(f, line, flags, ts);
|
||||
if (r < 0)
|
||||
goto fail;
|
||||
|
|
|
@ -35,6 +35,7 @@ typedef enum {
|
|||
WRITE_STRING_FILE_AVOID_NEWLINE = 1<<2,
|
||||
WRITE_STRING_FILE_VERIFY_ON_FAILURE = 1<<3,
|
||||
WRITE_STRING_FILE_SYNC = 1<<4,
|
||||
WRITE_STRING_FILE_DISABLE_BUFFER = 1<<5,
|
||||
|
||||
/* And before you wonder, why write_string_file_atomic_label_ts() is a separate function instead of just one
|
||||
more flag here: it's about linking: we don't want to pull -lselinux into all users of write_string_file()
|
||||
|
|
|
@ -60,7 +60,7 @@ int sysctl_write(const char *property, const char *value) {
|
|||
log_debug("Setting '%s' to '%s'", property, value);
|
||||
|
||||
p = strjoina("/proc/sys/", property);
|
||||
return write_string_file(p, value, 0);
|
||||
return write_string_file(p, value, WRITE_STRING_FILE_DISABLE_BUFFER);
|
||||
}
|
||||
|
||||
int sysctl_read(const char *property, char **content) {
|
||||
|
|
Loading…
Reference in New Issue