projects
/
awesomized
/
libmemcached
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
Fix for lp:1123153 (poor use of strtol).
[awesomized/libmemcached]
/
libtest
/
cmdline.cc
diff --git
a/libtest/cmdline.cc
b/libtest/cmdline.cc
index c8b63eece89de8356b487daf5ecc281d2f01677e..741d18d7f7e480d9e3cf9e44c9cec60246d01807 100644
(file)
--- a/
libtest/cmdline.cc
+++ b/
libtest/cmdline.cc
@@
-138,7
+138,7
@@
Application::Application(const std::string& arg, const bool _use_libtool_arg) :
{
if (libtool() == NULL)
{
{
if (libtool() == NULL)
{
-
fatal_message
("libtool requested, but know libtool was found");
+
FATAL
("libtool requested, but know libtool was found");
}
}
}
}
@@
-366,15
+366,15
@@
bool Application::slurp()
case EFAULT:
case ENOMEM:
case EFAULT:
case ENOMEM:
-
fatal_message
(strerror(error));
+
FATAL
(strerror(error));
break;
case EINVAL:
break;
case EINVAL:
-
fatal_message
("RLIMIT_NOFILE exceeded, or if OSX the timeout value was invalid");
+
FATAL
("RLIMIT_NOFILE exceeded, or if OSX the timeout value was invalid");
break;
default:
break;
default:
-
fatal_message
(strerror(error));
+
FATAL
(strerror(error));
break;
}
break;
}
@@
-409,8
+409,10
@@
bool Application::slurp()
Application::error_t Application::join()
{
pid_t waited_pid= waitpid(_pid, &_status, 0);
Application::error_t Application::join()
{
pid_t waited_pid= waitpid(_pid, &_status, 0);
+ slurp();
if (waited_pid == _pid and WIFEXITED(_status) == false)
{
if (waited_pid == _pid and WIFEXITED(_status) == false)
{
+
/*
What we are looking for here is how the exit status happened.
- 127 means that posix_spawn() itself had an error.
/*
What we are looking for here is how the exit status happened.
- 127 means that posix_spawn() itself had an error.
@@
-423,7
+425,12
@@
Application::error_t Application::join()
std::string error_string("posix_spawn() failed pid:");
error_string+= _pid;
error_string+= " name:";
std::string error_string("posix_spawn() failed pid:");
error_string+= _pid;
error_string+= " name:";
- error_string+= built_argv[0];
+ error_string+= print_argv(built_argv);
+ if (stderr_result_length())
+ {
+ error_string+= " stderr: ";
+ error_string+= stderr_c_str();
+ }
throw std::logic_error(error_string);
}
else if (WIFSIGNALED(_status))
throw std::logic_error(error_string);
}
else if (WIFSIGNALED(_status))
@@
-431,9
+438,20
@@
Application::error_t Application::join()
if (WTERMSIG(_status) != SIGTERM and WTERMSIG(_status) != SIGHUP)
{
_app_exit_state= Application::INVALID_POSIX_SPAWN;
if (WTERMSIG(_status) != SIGTERM and WTERMSIG(_status) != SIGHUP)
{
_app_exit_state= Application::INVALID_POSIX_SPAWN;
- std::string error_string(
built_argv[0]
);
+ std::string error_string(
print_argv(built_argv)
);
error_string+= " was killed by signal ";
error_string+= strsignal(WTERMSIG(_status));
error_string+= " was killed by signal ";
error_string+= strsignal(WTERMSIG(_status));
+ if (stdout_result_length())
+ {
+ error_string+= " stdout: ";
+ error_string+= stdout_c_str();
+ }
+ if (stderr_result_length())
+ {
+ error_string+= " stderr: ";
+ error_string+= stderr_c_str();
+ }
+
throw std::runtime_error(error_string);
}
throw std::runtime_error(error_string);
}
@@
-589,18
+607,17
@@
void Application::Pipe::reset()
if (pipe(_pipe_fd) == -1)
#endif
{
if (pipe(_pipe_fd) == -1)
#endif
{
-
fatal_message
(strerror(errno));
+
FATAL
(strerror(errno));
}
_open[0]= true;
_open[1]= true;
#if defined(HAVE_PIPE2) && HAVE_PIPE2
}
_open[0]= true;
_open[1]= true;
#if defined(HAVE_PIPE2) && HAVE_PIPE2
- return;
-#endif
{
nonblock();
cloexec();
}
{
nonblock();
cloexec();
}
+#endif
}
void Application::Pipe::cloexec()
}
void Application::Pipe::cloexec()
@@
-656,14
+673,12
@@
void Application::Pipe::dup_for_spawn(posix_spawn_file_actions_t& file_actions)
int ret;
if ((ret= posix_spawn_file_actions_adddup2(&file_actions, _pipe_fd[type], _std_fd )) < 0)
{
int ret;
if ((ret= posix_spawn_file_actions_adddup2(&file_actions, _pipe_fd[type], _std_fd )) < 0)
{
- Error << "posix_spawn_file_actions_adddup2(" << strerror(ret) << ")";
- fatal_message(strerror(ret));
+ FATAL("posix_spawn_file_actions_adddup2(%s)", strerror(ret));
}
if ((ret= posix_spawn_file_actions_addclose(&file_actions, _pipe_fd[type])) < 0)
{
}
if ((ret= posix_spawn_file_actions_addclose(&file_actions, _pipe_fd[type])) < 0)
{
- Error << "posix_spawn_file_actions_adddup2(" << strerror(ret) << ")";
- fatal_message(strerror(ret));
+ FATAL("posix_spawn_file_actions_addclose(%s)", strerror(ret));
}
}
}
}