blob: c08519cf53b821e0f3a000aa47516f45227f0cce [file] [log] [blame]
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001From: Kurt Roeckx <kurt@roeckx.be>
2Subject: Use %m[ instead of %a[ in scanf()
3
4%a was a gnu extention, but C99 made this a float. So it got
5changed to %m (supported by glibc 2.7), but %a[ and %as are
6still supported by glibc. The portability branch changed this
7from %m to %a again since that's supported by more versions of
8glibc. However gcc gives a warning about this using -Wformat
9and we have a new enough libc to use %m.
10
11Index: elfutils-0.153/src/addr2line.c
12===================================================================
13--- elfutils-0.153.orig/src/addr2line.c 2012-02-24 22:29:50.000000000 +0000
14+++ elfutils-0.153/src/addr2line.c 2012-02-24 22:29:52.000000000 +0000
15@@ -455,10 +455,10 @@
16 bool parsed = false;
17 int i, j;
18 char *name = NULL;
19- if (sscanf (string, "(%a[^)])%" PRIiMAX "%n", &name, &addr, &i) == 2
20+ if (sscanf (string, "(%m[^)])%" PRIiMAX "%n", &name, &addr, &i) == 2
21 && string[i] == '\0')
22 parsed = adjust_to_section (name, &addr, dwfl);
23- switch (sscanf (string, "%a[^-+]%n%" PRIiMAX "%n", &name, &i, &addr, &j))
24+ switch (sscanf (string, "%m[^-+]%n%" PRIiMAX "%n", &name, &i, &addr, &j))
25 {
26 default:
27 break;
28Index: elfutils-0.153/tests/line2addr.c
29===================================================================
30--- elfutils-0.153.orig/tests/line2addr.c 2012-02-24 22:29:50.000000000 +0000
31+++ elfutils-0.153/tests/line2addr.c 2012-02-24 22:29:52.000000000 +0000
32@@ -132,7 +132,7 @@
33 {
34 struct args a = { .arg = argv[cnt] };
35
36- switch (sscanf (a.arg, "%a[^:]:%d", &a.file, &a.line))
37+ switch (sscanf (a.arg, "%m[^:]:%d", &a.file, &a.line))
38 {
39 default:
40 case 0: