From 655f41b76907269af71fd67a87cbe0391b90a99f Mon Sep 17 00:00:00 2001 From: Jakob Kaivo Date: Tue, 4 Feb 2020 17:03:59 -0500 Subject: initial commit of code --- .gitignore | 3 +++ getprogname.c | 29 +++++++++++++++++++++++++++++ getprogname.h | 9 +++++++++ 3 files changed, 41 insertions(+) create mode 100644 .gitignore create mode 100644 getprogname.c create mode 100644 getprogname.h diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..33ec174 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.o +*.so +*.a diff --git a/getprogname.c b/getprogname.c new file mode 100644 index 0000000..9294f44 --- /dev/null +++ b/getprogname.c @@ -0,0 +1,29 @@ +#define _POSIX_C_SOURCE 2 +#include +#include +#include + +char *get_program_name(size_t n, char buf[static n]) +{ + char cmd[_POSIX_ARG_MAX]; + snprintf(cmd, sizeof(cmd), "ps -p %ld -o comm=", (long)getpid()); + + FILE *pip = popen(cmd, "r"); + if (pip == NULL) { + return NULL; + } + + if (fscanf(pip, "%s", buf) != 1) { + pclose(pip); + return NULL; + } + + pclose(pip); + return buf; +} + +char *getprogname(void) +{ + static char progname[_POSIX_NAME_MAX]; + return get_program_name(sizeof(progname), progname); +} diff --git a/getprogname.h b/getprogname.h new file mode 100644 index 0000000..f8f55bb --- /dev/null +++ b/getprogname.h @@ -0,0 +1,9 @@ +#ifndef GETPROGNAME_H +#define GETPROGNAME_H + +#include + +char *get_program_name(size_t n, char buf[static n]); +char *getprogname(void); + +#endif -- cgit v1.2.1