diff --git a/libc/Android.mk b/libc/Android.mk index 852db739c..d4ccefbe5 100644 --- a/libc/Android.mk +++ b/libc/Android.mk @@ -317,10 +317,12 @@ libc_upstream_netbsd_src_files := \ libc_upstream_openbsd_src_files := \ upstream-openbsd/lib/libc/gen/exec.c \ - upstream-openbsd/lib/libc/gen/ftok.c \ upstream-openbsd/lib/libc/gen/fnmatch.c \ - upstream-openbsd/lib/libc/gen/toupper_.c \ + upstream-openbsd/lib/libc/gen/ftok.c \ + upstream-openbsd/lib/libc/gen/getprogname.c \ + upstream-openbsd/lib/libc/gen/setprogname.c \ upstream-openbsd/lib/libc/gen/tolower_.c \ + upstream-openbsd/lib/libc/gen/toupper_.c \ upstream-openbsd/lib/libc/string/strstr.c \ upstream-openbsd/lib/libc/string/strsep.c \ upstream-openbsd/lib/libc/string/wcslcpy.c \ diff --git a/libc/include/stdlib.h b/libc/include/stdlib.h index 9c04059b3..9595170a3 100644 --- a/libc/include/stdlib.h +++ b/libc/include/stdlib.h @@ -153,6 +153,10 @@ typedef struct { extern lldiv_t lldiv(long long, long long); +/* BSD compatibility. */ +extern const char* getprogname(void); +extern void setprogname(const char*); + #if 1 /* MISSING FROM BIONIC - ENABLED FOR STLPort and libstdc++-v3 */ /* make STLPort happy */ extern int mblen(const char *, size_t); diff --git a/libc/upstream-openbsd/lib/libc/gen/getprogname.c b/libc/upstream-openbsd/lib/libc/gen/getprogname.c new file mode 100644 index 000000000..1cf498c88 --- /dev/null +++ b/libc/upstream-openbsd/lib/libc/gen/getprogname.c @@ -0,0 +1,24 @@ +/* $OpenBSD: getprogname.c,v 1.2 2013/05/31 21:19:01 tedu Exp $ */ +/* + * Copyright (c) 2013 Antoine Jacoutot + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +extern const char *__progname; + +const char * +getprogname(void) +{ + return (__progname); +} diff --git a/libc/upstream-openbsd/lib/libc/gen/setprogname.c b/libc/upstream-openbsd/lib/libc/gen/setprogname.c new file mode 100644 index 000000000..18b2ce03b --- /dev/null +++ b/libc/upstream-openbsd/lib/libc/gen/setprogname.c @@ -0,0 +1,32 @@ +/* $OpenBSD: setprogname.c,v 1.3 2013/06/01 01:43:43 tedu Exp $ */ +/* + * Copyright (c) 2013 Antoine Jacoutot + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include + +extern const char *__progname; + +void +setprogname(const char *progname) +{ + const char *tmpn; + + tmpn = strrchr(progname, '/'); + if (tmpn == NULL) + __progname = progname; + else + __progname = tmpn + 1; +}