From 03ab6cf26e48ba39f981e2076903d1dad55844bf Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Sun, 6 Jan 2013 21:38:05 +0100 Subject: [PATCH] Add program_invocation_short_name(3). --- libc/include/errno.h | 1 + libc/init.cpp | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/libc/include/errno.h b/libc/include/errno.h index 85faed24..25958b98 100644 --- a/libc/include/errno.h +++ b/libc/include/errno.h @@ -33,6 +33,7 @@ __BEGIN_DECLS @include(errno_values.h) extern char* program_invocation_name; +extern char* program_invocation_short_name; __END_DECLS diff --git a/libc/init.cpp b/libc/init.cpp index 66a41f63..a8ac106d 100644 --- a/libc/init.cpp +++ b/libc/init.cpp @@ -28,15 +28,26 @@ extern "C" { char program_invocation_name_data[256] = ""; } extern "C" { char* program_invocation_name = program_invocation_name_data; } +extern "C" { char* program_invocation_short_name; } extern "C" void init_error_functions(); extern "C" void init_stdio(); extern "C" void init_signal(); +static char* find_last_elem(char* str) +{ + size_t len = strlen(str); + for ( size_t i = len; i; i-- ) + if ( str[i-1] == '/' ) + return str + i; + return str; +} + extern "C" void initialize_standard_library(int argc, char* argv[]) { if ( argc ) strcpy(program_invocation_name, argv[0]); + program_invocation_short_name = find_last_elem(program_invocation_name); // Initialize stuff such as errno. init_error_functions();