]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Add progname gnulib module. gnutls_1_1_15
authorSimon Josefsson <simon@josefsson.org>
Sun, 15 Aug 2004 00:53:50 +0000 (00:53 +0000)
committerSimon Josefsson <simon@josefsson.org>
Sun, 15 Aug 2004 00:53:50 +0000 (00:53 +0000)
configure.in
gl/Makefile.am
gl/progname.c [new file with mode: 0644]
gl/progname.h [new file with mode: 0644]

index c63f675d5c6c52fb83467c7d28e893928ab892d6..f366fd88860e24c19227dc5c605ac49d4a6f87a8 100644 (file)
@@ -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([***
index b0035d01f19c53a0882cbff024adcdf3fdbcf76b..b1cad13b1ca3de97712466ebb6e0a6a66397663d 100644 (file)
@@ -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 (file)
index 0000000..8453706
--- /dev/null
@@ -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 (file)
index 0000000..5292cd1
--- /dev/null
@@ -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 */