chiark / gitweb /
sysctl: disable buffer while writing to /proc
authorTiago Salem Herrmann <therrmann@suse.com>
Tue, 12 Dec 2017 15:52:45 +0000 (13:52 -0200)
committerSven Eden <yamakuzure@gmx.net>
Tue, 12 Dec 2017 15:52:45 +0000 (13:52 -0200)
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.

src/basic/fileio.c
src/basic/fileio.h

index 3c2f9742ea73387c55b82c0b7566b7740f4fd557..2f9d47019f5c8f254eaa25624cf853f20617f4d1 100644 (file)
@@ -166,6 +166,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;
index d90fa4836dca02d7b981c6ab176c70f04824e7e0..08423c1c928cbd46ad37678bf1be3524045fd6dc 100644 (file)
@@ -34,6 +34,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()