summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPanu Matilainen <pmatilai@redhat.com>2016-12-15 07:51:25 +0200
committerPanu Matilainen <pmatilai@redhat.com>2016-12-15 10:59:02 +0200
commitff6b9c56d31ef343d6499d9cdc82a1b3df1d95b2 (patch)
treed3bd9e4c9c36eb364c4ee3880526fea758cb7d8e
parent19d7597f424b9c8e9bfd8685dae431a59b7c6f55 (diff)
downloadrpm-ff6b9c56d31ef343d6499d9cdc82a1b3df1d95b2.tar.gz
Refactor finding a signal in the table to a helper function
-rw-r--r--rpmio/rpmsq.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/rpmio/rpmsq.c b/rpmio/rpmsq.c
index 412efa9f3..5e7fa7097 100644
--- a/rpmio/rpmsq.c
+++ b/rpmio/rpmsq.c
@@ -49,6 +49,17 @@ static struct rpmsig_s {
{ -1, NULL, NULL },
};
+static int rpmsigGet(int signum, struct rpmsig_s **sig)
+{
+ for (rpmsig tbl = rpmsigTbl; tbl->signum >= 0; tbl++) {
+ if (tbl->signum == signum) {
+ *sig = tbl;
+ return 1;
+ }
+ }
+ return 0;
+}
+
int rpmsqIsCaught(int signum)
{
return sigismember(&rpmsqCaught, signum);
@@ -59,13 +70,10 @@ static void rpmsqAction(int signum, siginfo_t * info, void * context)
int save = errno;
if (sigismember(&rpmsqActive, signum)) {
+ rpmsig sig = NULL;
(void) sigaddset(&rpmsqCaught, signum);
- for (rpmsig tbl = rpmsigTbl; tbl->signum >= 0; tbl++) {
- if (tbl->signum == signum) {
- memcpy(&tbl->siginfo, info, sizeof(*info));
- break;
- }
- }
+ if (rpmsigGet(signum, &sig))
+ memcpy(&sig->siginfo, info, sizeof(*info));
}
errno = save;