summaryrefslogtreecommitdiffstats
path: root/TraceScreen.c
diff options
context:
space:
mode:
authorDaniel (dmilith) Dettlaff <daniel@centra.com>2022-03-13 00:36:58 +0100
committerBenBE <BenBE@geshi.org>2023-12-29 15:19:29 +0100
commitc55401b82b1bb278947f9d2a3aed13a9f0de85a9 (patch)
tree461b2a247edc3b69d603021a28ac18a85663925e /TraceScreen.c
parent7ee92be6fdf8d3718202ab42aefb028d3a7eac94 (diff)
Add support for "truss" (FreeBSD equivalent of "strace")
Diffstat (limited to 'TraceScreen.c')
-rw-r--r--TraceScreen.c23
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);
}

© 2014-2024 Faster IT GmbH | imprint | privacy policy