diff options
author | Jakob Kaivo <jkk@ung.org> | 2020-02-04 17:03:59 -0500 |
---|---|---|
committer | Jakob Kaivo <jkk@ung.org> | 2020-02-04 17:03:59 -0500 |
commit | 655f41b76907269af71fd67a87cbe0391b90a99f (patch) | |
tree | cc487099cda98bd3b1a45d656044cac3244a6c53 | |
parent | 289a9431657a58542439fc1968e9b7cfbb8cc321 (diff) |
initial commit of code
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | getprogname.c | 29 | ||||
-rw-r--r-- | getprogname.h | 9 |
3 files changed, 41 insertions, 0 deletions
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 <limits.h> +#include <stdio.h> +#include <unistd.h> + +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 <stddef.h> + +char *get_program_name(size_t n, char buf[static n]); +char *getprogname(void); + +#endif |