Fixed the UnixSignals class to be able to get a signal by name, short name, or signal number when using:
int32_t UnixSignals::GetSignalNumberFromName (const char *name) const;
git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@116641 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Target/UnixSignals.cpp b/source/Target/UnixSignals.cpp
index c7bb40e..de3dfec 100644
--- a/source/Target/UnixSignals.cpp
+++ b/source/Target/UnixSignals.cpp
@@ -13,6 +13,7 @@
// C++ Includes
// Other libraries and framework includes
// Project includes
+#include "lldb/Interpreter/Args.h"
using namespace lldb_private;
@@ -117,41 +118,6 @@
m_signals.erase (pos);
}
-UnixSignals::Signal *
-UnixSignals::GetSignalByName (const char *name, int32_t &signo)
-{
- ConstString const_name (name);
-
- collection::iterator pos, end = m_signals.end ();
- for (pos = m_signals.begin (); pos != end; pos++)
- {
- if ((const_name == pos->second.m_name) || (const_name == pos->second.m_short_name))
- {
- signo = pos->first;
- return &pos->second;
- }
- }
- return NULL;
-}
-
-
-const UnixSignals::Signal *
-UnixSignals::GetSignalByName (const char *name, int32_t &signo) const
-{
- ConstString const_name (name);
-
- collection::const_iterator pos, end = m_signals.end ();
- for (pos = m_signals.begin (); pos != end; pos++)
- {
- if (const_name == pos->second.m_name)
- {
- signo = pos->first;
- return &(pos->second);
- }
- }
- return NULL;
-}
-
const char *
UnixSignals::GetSignalAsCString (int signo) const
{
@@ -173,12 +139,19 @@
int32_t
UnixSignals::GetSignalNumberFromName (const char *name) const
{
- int32_t signo;
- const Signal *signal = GetSignalByName (name, signo);
- if (signal == NULL)
- return LLDB_INVALID_SIGNAL_NUMBER;
- else
+ ConstString const_name (name);
+
+ collection::const_iterator pos, end = m_signals.end ();
+ for (pos = m_signals.begin (); pos != end; pos++)
+ {
+ if ((const_name == pos->second.m_name) || (const_name == pos->second.m_short_name))
+ return pos->first;
+ }
+
+ const int32_t signo = Args::StringToSInt32(name, LLDB_INVALID_SIGNAL_NUMBER, 0);
+ if (signo != LLDB_INVALID_SIGNAL_NUMBER)
return signo;
+ return LLDB_INVALID_SIGNAL_NUMBER;
}
int32_t
@@ -253,7 +226,10 @@
bool
UnixSignals::SetShouldSuppress (const char *signal_name, bool value)
{
- return SetShouldSuppress (GetSignalNumberFromName (signal_name), value);
+ const int32_t signo = GetSignalNumberFromName (signal_name);
+ if (signo != LLDB_INVALID_SIGNAL_NUMBER)
+ return SetShouldSuppress (signo, value);
+ return false;
}
bool
@@ -280,7 +256,10 @@
bool
UnixSignals::SetShouldStop (const char *signal_name, bool value)
{
- return SetShouldStop (GetSignalNumberFromName (signal_name), value);
+ const int32_t signo = GetSignalNumberFromName (signal_name);
+ if (signo != LLDB_INVALID_SIGNAL_NUMBER)
+ return SetShouldStop (signo, value);
+ return false;
}
bool
@@ -307,6 +286,8 @@
bool
UnixSignals::SetShouldNotify (const char *signal_name, bool value)
{
- return SetShouldNotify (GetSignalNumberFromName (signal_name), value);
+ const int32_t signo = GetSignalNumberFromName (signal_name);
+ if (signo != LLDB_INVALID_SIGNAL_NUMBER)
+ return SetShouldNotify (signo, value);
+ return false;
}
-