char *tmpname;
char *outname;
char *last_dot;
+ bool ignore_failure;
FILE *fp;
struct stat ts;
return -2;
}
+ ignore_failure = name[0] == '-';
+ if (ignore_failure)
+ name++;
+
/* used to open the file */
tmpname = xmalloc(equals - name + 1 + strlen(PROC_PATH));
strcpy(tmpname, PROC_PATH);
switch (errno) {
case ENOENT:
if (!IgnoreError) {
- xwarnx(_("\"%s\" is an unknown key"), outname);
- rc = -1;
+ xwarnx(_("\"%s\" is an unknown key%s"), outname, (ignore_failure?_(", ignoring"):""));
+ if (!ignore_failure)
+ rc = -1;
}
break;
+ case EPERM:
+ case EROFS:
case EACCES:
- xwarnx(_("permission denied on key '%s'"), outname);
- rc = -1;
+ xwarnx(_("permission denied on key \"%s\"%s"), outname, (ignore_failure?_(", ignoring"):""));
break;
default:
- xwarn(_("setting key \"%s\""), outname);
- rc = -1;
+ xwarn(_("setting key \"%s\"%s"), outname, (ignore_failure?_(", ignoring"):""));
break;
}
+ if (!ignore_failure && errno != ENOENT)
+ rc = -1;
} else {
rc = fprintf(fp, "%s\n", value);
if (0 < rc)
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details."
-.TH SYSCTL.CONF "5" "January 2012" "procps-ng" "File Formats"
+.TH SYSCTL.CONF "5" "2019-09-21" "procps-ng" "File Formats"
.SH NAME
sysctl.conf \- sysctl preload/configuration file
.SH DESCRIPTION
Note that blank lines are ignored, and whitespace before and after a token or
value is ignored, although a value can contain whitespace within. Lines which
begin with a # or ; are considered comments and ignored.
+
+If a line begins with a single \-, any attempts to set the value that fail will be
+ignored.
+
.SH NOTES
As the
.BR /etc/sysctl.conf