File procps-ng-3.3.12-sysctl-iobuf.patch of Package procps
---
sysctl.c | 10 ++++++++++
1 file changed, 10 insertions(+)
Index: sysctl.c
===================================================================
--- sysctl.c.orig
+++ sysctl.c
@@ -160,6 +160,8 @@ static char *StripLeadingAndTrailingSpac
/*
* Read a sysctl setting
*/
+#define IOBUFSIZ (128<<10)
+static char *iobuf;
static int ReadSetting(const char *restrict const name)
{
int rc = 0;
@@ -240,6 +242,8 @@ static int ReadSetting(const char *restr
break;
}
} else {
+ if (iobuf)
+ setvbuf(fp, iobuf, _IOFBF, IOBUFSIZ);
errno = 0;
if (fgets(inbuf, sizeof inbuf - 1, fp)) {
/* this loop is required, see
@@ -450,6 +454,8 @@ static int WriteSetting(const char *sett
break;
}
} else {
+ if (iobuf)
+ setvbuf(fp, iobuf, _IOFBF, IOBUFSIZ);
rc = fprintf(fp, "%s\n", value);
if (0 < rc)
rc = 0;
@@ -806,6 +812,8 @@ int main(int argc, char *argv[])
argc -= optind;
argv += optind;
+ iobuf = (char*)malloc(IOBUFSIZ); /* Allow to fail */
+
if (DisplayAllOpt)
return DisplayAll(PROC_PATH);