File procps-ng-3.3.9-errno.patch of Package procps.openSUSE_Leap_42.3_Update

setlocale() sets errno to ENOENT ...

open("/usr/lib/locale/de_DE.UTF-8/LC_NUMERIC", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/locale/de_DE.utf8/LC_NUMERIC", O_RDONLY|O_CLOEXEC) = 3

and this causes a problem later on (bsc#908516)

---
 free.c |    6 ++++++
 1 file changed, 6 insertions(+)

+++ free.c	2014-12-05 10:00:37.282018794 +0000
@@ -189,6 +189,7 @@ int main(int argc, char **argv)
 	int c, flags = 0;
 	char *endptr;
 	struct commandline_arguments args;
+	int errsv;
 
 	/*
 	 * For long options that have no equivalent short option, use a
@@ -226,10 +227,12 @@ int main(int argc, char **argv)
 #ifdef HAVE_PROGRAM_INVOCATION_NAME
 	program_invocation_name = program_invocation_short_name;
 #endif
+	errsv = errno;
 	setlocale (LC_ALL, "");
 	bindtextdomain(PACKAGE, LOCALEDIR);
 	textdomain(PACKAGE);
 	atexit(close_stdout);
+	errno = errsv;
 
 	while ((c = getopt_long(argc, argv, "bkmghlotc:s:V", longopts, NULL)) != -1)
 		switch (c) {
@@ -265,12 +268,15 @@ int main(int argc, char **argv)
 			break;
 		case 's':
 			flags |= FREE_REPEAT;
+			errsv = errno;
+			errno = 0;
 			args.repeat_interval = (1000000 * strtof(optarg, &endptr));
 			if (errno || optarg == endptr || (endptr && *endptr))
 				xerrx(EXIT_FAILURE, _("seconds argument `%s' failed"), optarg);
 			if (args.repeat_interval < 1)
 				xerrx(EXIT_FAILURE,
 				     _("seconds argument `%s' is not positive number"), optarg);
+			errno = errsv;
 			break;
 		case 'c':
 			flags |= FREE_REPEAT;
openSUSE Build Service is sponsored by