procps/procps-ng-3.3.10-errno.patch

51 lines
1.5 KiB
Diff

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
+++ free.c 2015-01-27 15:28:08.494018768 +0000
@@ -190,6 +190,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
@@ -228,10 +229,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, "bkmghltCc:ws:V", longopts, NULL)) != -1)
switch (c) {
@@ -264,12 +267,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;