diff options
author | Daniel (dmilith) Dettlaff <daniel@centra.com> | 2022-03-13 00:36:58 +0100 |
---|---|---|
committer | BenBE <BenBE@geshi.org> | 2023-12-29 15:19:29 +0100 |
commit | c55401b82b1bb278947f9d2a3aed13a9f0de85a9 (patch) | |
tree | 461b2a247edc3b69d603021a28ac18a85663925e | |
parent | 7ee92be6fdf8d3718202ab42aefb028d3a7eac94 (diff) |
Add support for "truss" (FreeBSD equivalent of "strace")
-rw-r--r-- | TraceScreen.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/TraceScreen.c b/TraceScreen.c index 7a1ce9ac..3febba7e 100644 --- a/TraceScreen.c +++ b/TraceScreen.c @@ -90,13 +90,24 @@ bool TraceScreen_forkTracer(TraceScreen* this) { char buffer[32] = {0}; xSnprintf(buffer, sizeof(buffer), "%d", Process_getPid(this->super.process)); - // Use of NULL in variadic functions must have a pointer cast. - // The NULL constant is not required by standard to have a pointer type. - execlp("strace", "strace", "-T", "-tt", "-s", "512", "-p", buffer, (char*)NULL); - // Should never reach here, unless execlp fails ... - const char* message = "Could not execute 'strace'. Please make sure it is available in your $PATH."; - (void)! write(STDERR_FILENO, message, strlen(message)); + #if defined(HTOP_FREEBSD) || defined(HTOP_OPENBSD) || defined(HTOP_NETBSD) || defined(HTOP_DRAGONFLYBSD) || defined(HTOP_SOLARIS) + // Use of NULL in variadic functions must have a pointer cast. + // The NULL constant is not required by standard to have a pointer type. + execlp("truss", "truss", "-s", "512", "-p", buffer, (void*)NULL); + + const char* message = "Could not execute 'truss'. Please make sure it is available in your $PATH."; + (void)! write(STDERR_FILENO, message, strlen(message)); + #elif defined(HTOP_LINUX) + execlp("strace", "strace", "-T", "-tt", "-s", "512", "-p", buffer, NULL); + + // Should never reach here, unless execlp fails ... + const char* message = "Could not execute 'strace'. Please make sure it is available in your $PATH."; + (void)! write(STDERR_FILENO, message, strlen(message)); + #else // HTOP_DARWIN, HTOP_PCP == HTOP_UNSUPPORTED + const char* message = "Tracing unavailable on not supported system."; + (void)! write(STDERR_FILENO, message, strlen(message)); + #endif exit(127); } |