summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Olsa <Jiri Olsa jolsa@redhat.com>2011-06-15 22:57:26 +0200
committerJiri Olsa <Jiri Olsa jolsa@redhat.com>2011-06-16 10:38:57 +0200
commitbe08addc50d60683fdcc9c3b8cf4488d940e3b96 (patch)
tree940a6d3f2d26cfb943f19692121f90b62e5b3977
parent1e797a2b262191a3b96f167c1b99c71442300100 (diff)
downloadlatrace-be08addc50d60683fdcc9c3b8cf4488d940e3b96.tar.gz
latrace-be08addc50d60683fdcc9c3b8cf4488d940e3b96.tar.xz
latrace-be08addc50d60683fdcc9c3b8cf4488d940e3b96.zip
make tracer return actual tracee status
-rw-r--r--ChangeLog1
-rw-r--r--src/latrace.c7
-rw-r--r--src/run.c3
3 files changed, 7 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index d455f1a..3c6ae78 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
2011-06-15 Jiri Olsa <olsajiri@gmail.com>
* global_symbol fix - proper tree management
+ * make tracer return actual tracee status
2011-06-02 Jiri Olsa <olsajiri@gmail.com>
* adding large file support
diff --git a/src/latrace.c b/src/latrace.c
index 48006ad..6c45338 100644
--- a/src/latrace.c
+++ b/src/latrace.c
@@ -66,11 +66,12 @@ static int get_type(char *name)
static int main_latrace(int argc, char **argv)
{
+ int ret;
+
if (-1 == lt_config(&cfg, argc, argv))
return -1;
- if (-1 == lt_run(&cfg))
- return -1;
+ ret = lt_run(&cfg);
if ((lt_sh(&cfg, pipe)) && (*lt_sh(&cfg, output)))
fclose(lt_sh(&cfg, fout));
@@ -78,7 +79,7 @@ static int main_latrace(int argc, char **argv)
if (lt_sh(&cfg, counts))
lt_stats_show(&cfg);
- return 0;
+ return ret;
}
int main(int argc, char **argv)
diff --git a/src/run.c b/src/run.c
index 7f48b53..3f1eb2d 100644
--- a/src/run.c
+++ b/src/run.c
@@ -427,9 +427,9 @@ static int kill_child(struct lt_config_app *cfg,
int lt_run(struct lt_config_app *cfg)
{
+ char ret = (char) -1;
char str_dir[LT_MAXFILE];
struct lt_process_args pa = { .dir = str_dir };
- int ret = -1;
if (setup_signals())
return -1;
@@ -469,6 +469,7 @@ int lt_run(struct lt_config_app *cfg)
printf("killed by signal %d\n", WTERMSIG(status));
}
+ ret = WEXITSTATUS(status);
} while(0);
run_cleanup(cfg, &pa);