summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYunlian Jiang <yunlian@google.com>2017-07-26 16:25:43 -0700
committerMark Wielaard <mark@klomp.org>2017-07-27 18:59:53 +0200
commit33220d549df9991b43da894fb03a22722a74cafb (patch)
tree6972f169e51c5337bab5e754f8e1efa34fd9c97c
parentc24b900cc9cf225e98372253cb02c77342634b6e (diff)
libdwfl: Move nested functions in parse_opt to file scope.
* Move nested function 'failure' to file scope to compile with clang. * Move nested function 'fail' to file scope to compile with clang. Signed-off-by: Yunlian Jiang <yunlian@google.com>
-rw-r--r--libdwfl/ChangeLog5
-rw-r--r--libdwfl/argp-std.c55
2 files changed, 34 insertions, 26 deletions
diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog
index 9bce6b1e..2008c6a1 100644
--- a/libdwfl/ChangeLog
+++ b/libdwfl/ChangeLog
@@ -1,3 +1,8 @@
+2017-07-26 Yunlian Jiang <yunlian@google.com>
+
+ * argp-std.c (failure): Move to file scope.
+ (fail): Likewise.
+
2017-04-20 Ulf Hermann <ulf.hermann@qt.io>
Mark Wielaard <mark@klomp.org>
diff --git a/libdwfl/argp-std.c b/libdwfl/argp-std.c
index 347a05b4..498ace21 100644
--- a/libdwfl/argp-std.c
+++ b/libdwfl/argp-std.c
@@ -104,25 +104,28 @@ struct parse_opt
const char *core;
};
+static inline void
+failure (Dwfl *dwfl, int errnum, const char *msg, struct argp_state *state)
+{
+ if (dwfl != NULL)
+ dwfl_end (dwfl);
+ if (errnum == -1)
+ argp_failure (state, EXIT_FAILURE, 0, "%s: %s",
+ msg, INTUSE(dwfl_errmsg) (-1));
+ else
+ argp_failure (state, EXIT_FAILURE, errnum, "%s", msg);
+}
+
+static inline error_t
+fail (Dwfl *dwfl, int errnum, const char *msg, struct argp_state *state)
+{
+ failure (dwfl, errnum, msg, state);
+ return errnum == -1 ? EIO : errnum;
+}
+
static error_t
parse_opt (int key, char *arg, struct argp_state *state)
{
- inline void failure (Dwfl *dwfl, int errnum, const char *msg)
- {
- if (dwfl != NULL)
- dwfl_end (dwfl);
- if (errnum == -1)
- argp_failure (state, EXIT_FAILURE, 0, "%s: %s",
- msg, INTUSE(dwfl_errmsg) (-1));
- else
- argp_failure (state, EXIT_FAILURE, errnum, "%s", msg);
- }
- inline error_t fail (Dwfl *dwfl, int errnum, const char *msg)
- {
- failure (dwfl, errnum, msg);
- return errnum == -1 ? EIO : errnum;
- }
-
switch (key)
{
case ARGP_KEY_INIT:
@@ -130,7 +133,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
assert (state->hook == NULL);
struct parse_opt *opt = calloc (1, sizeof (*opt));
if (opt == NULL)
- failure (NULL, DWFL_E_ERRNO, "calloc");
+ failure (NULL, DWFL_E_ERRNO, "calloc", state);
state->hook = opt;
}
break;
@@ -147,7 +150,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
{
dwfl = INTUSE(dwfl_begin) (&offline_callbacks);
if (dwfl == NULL)
- return fail (dwfl, -1, arg);
+ return fail (dwfl, -1, arg, state);
opt->dwfl = dwfl;
/* Start at zero so if there is just one -e foo.so,
@@ -173,7 +176,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
Dwfl *dwfl = INTUSE(dwfl_begin) (&proc_callbacks);
int result = INTUSE(dwfl_linux_proc_report) (dwfl, atoi (arg));
if (result != 0)
- return fail (dwfl, result, arg);
+ return fail (dwfl, result, arg, state);
/* Non-fatal to not be able to attach to process, ignore error. */
INTUSE(dwfl_linux_proc_attach) (dwfl, atoi (arg), false);
@@ -202,7 +205,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
int result = INTUSE(dwfl_linux_proc_maps_report) (dwfl, f);
fclose (f);
if (result != 0)
- return fail (dwfl, result, arg);
+ return fail (dwfl, result, arg, state);
opt->dwfl = dwfl;
}
else
@@ -231,11 +234,11 @@ parse_opt (int key, char *arg, struct argp_state *state)
Dwfl *dwfl = INTUSE(dwfl_begin) (&kernel_callbacks);
int result = INTUSE(dwfl_linux_kernel_report_kernel) (dwfl);
if (result != 0)
- return fail (dwfl, result, _("cannot load kernel symbols"));
+ return fail (dwfl, result, _("cannot load kernel symbols"), state);
result = INTUSE(dwfl_linux_kernel_report_modules) (dwfl);
if (result != 0)
/* Non-fatal to have no modules since we do have the kernel. */
- failure (dwfl, result, _("cannot find kernel modules"));
+ failure (dwfl, result, _("cannot find kernel modules"), state);
opt->dwfl = dwfl;
}
else
@@ -252,7 +255,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
int result = INTUSE(dwfl_linux_kernel_report_offline) (dwfl, arg,
NULL);
if (result != 0)
- return fail (dwfl, result, _("cannot find kernel or modules"));
+ return fail (dwfl, result, _("cannot find kernel or modules"), state);
opt->dwfl = dwfl;
}
else
@@ -271,7 +274,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
arg = "a.out";
dwfl = INTUSE(dwfl_begin) (&offline_callbacks);
if (INTUSE(dwfl_report_offline) (dwfl, "", arg, -1) == NULL)
- return fail (dwfl, -1, arg);
+ return fail (dwfl, -1, arg, state);
opt->dwfl = dwfl;
}
@@ -301,7 +304,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
{
elf_end (core);
close (fd);
- return fail (dwfl, result, opt->core);
+ return fail (dwfl, result, opt->core, state);
}
/* Non-fatal to not be able to attach to core, ignore error. */
@@ -331,7 +334,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
else if (opt->e)
{
if (INTUSE(dwfl_report_offline) (dwfl, "", opt->e, -1) == NULL)
- return fail (dwfl, -1, opt->e);
+ return fail (dwfl, -1, opt->e, state);
}
/* One of the three flavors has done dwfl_begin and some reporting