summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Josefsson <simon@josefsson.org>2004-08-15 00:53:50 +0000
committerSimon Josefsson <simon@josefsson.org>2004-08-15 00:53:50 +0000
commitd8e2b8322d299c72bea8ea5236216bd15e14c40f (patch)
tree2b47ed091ca8f7ef79ecf48a07b4ebaaa9c1d1e0
parentf9aa20fb8dfde524dd8b40e088fd2510da9e9e57 (diff)
downloadgnutls-d8e2b8322d299c72bea8ea5236216bd15e14c40f.tar.gz
Add progname gnulib module.gnutls_1_1_15
-rw-r--r--configure.in2
-rw-r--r--gl/Makefile.am2
-rw-r--r--gl/progname.c53
-rw-r--r--gl/progname.h60
4 files changed, 116 insertions, 1 deletions
diff --git a/configure.in b/configure.in
index c63f675d5c..f366fd8886 100644
--- a/configure.in
+++ b/configure.in
@@ -520,7 +520,7 @@ AC_MSG_RESULT([***
gl_SOURCE_BASE(gl)
gl_M4_BASE(gl/m4)
-gl_MODULES(getline error exit)
+gl_MODULES(getline error exit progname)
gl_INIT
AC_MSG_RESULT([***
diff --git a/gl/Makefile.am b/gl/Makefile.am
index b0035d01f1..b1cad13b1c 100644
--- a/gl/Makefile.am
+++ b/gl/Makefile.am
@@ -33,5 +33,7 @@ EXTRA_DIST += getndelim2.h getndelim2.c
libgnu_la_SOURCES += gettext.h
+libgnu_la_SOURCES += progname.h progname.c
+
libgnu_la_SOURCES += unlocked-io.h
diff --git a/gl/progname.c b/gl/progname.c
new file mode 100644
index 0000000000..8453706c93
--- /dev/null
+++ b/gl/progname.c
@@ -0,0 +1,53 @@
+/* Program name management.
+ Copyright (C) 2001-2003 Free Software Foundation, Inc.
+ Written by Bruno Haible <haible@clisp.cons.org>, 2001.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+/* Specification. */
+#include "progname.h"
+
+#include <string.h>
+
+#undef set_program_name
+
+
+/* String containing name the program is called with.
+ To be initialized by main(). */
+const char *program_name;
+
+/* Set program_name, based on argv[0]. */
+void
+set_program_name (const char *argv0)
+{
+ /* libtool creates a temporary executable whose name is sometimes prefixed
+ with "lt-" (depends on the platform). It also makes argv[0] absolute.
+ Remove this "<dirname>/.libs/" or "<dirname>/.libs/lt-" prefix here. */
+ const char *slash;
+ const char *base;
+
+ slash = strrchr (argv0, '/');
+ base = (slash != NULL ? slash + 1 : argv0);
+ if (base - argv0 >= 7 && memcmp (base - 7, "/.libs/", 7) == 0)
+ argv0 = base;
+ if (strncmp (base, "lt-", 3) == 0)
+ argv0 = base + 3;
+ program_name = argv0;
+}
diff --git a/gl/progname.h b/gl/progname.h
new file mode 100644
index 0000000000..5292cd1bfd
--- /dev/null
+++ b/gl/progname.h
@@ -0,0 +1,60 @@
+/* Program name management.
+ Copyright (C) 2001-2004 Free Software Foundation, Inc.
+ Written by Bruno Haible <haible@clisp.cons.org>, 2001.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifndef _PROGNAME_H
+#define _PROGNAME_H
+
+/* Programs using this file should do the following in main():
+ set_program_name (argv[0]);
+ */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* String containing name the program is called with. */
+extern const char *program_name;
+
+/* Set program_name, based on argv[0]. */
+extern void set_program_name (const char *argv0);
+
+#if ENABLE_RELOCATABLE
+
+/* Set program_name, based on argv[0], and original installation prefix and
+ directory, for relocatability. */
+extern void set_program_name_and_installdir (const char *argv0,
+ const char *orig_installprefix,
+ const char *orig_installdir);
+#define set_program_name(ARG0) \
+ set_program_name_and_installdir (ARG0, INSTALLPREFIX, INSTALLDIR)
+
+/* Return the full pathname of the current executable, based on the earlier
+ call to set_program_name_and_installdir. Return NULL if unknown. */
+extern char *get_full_program_name (void);
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _PROGNAME_H */