aboutsummaryrefslogtreecommitdiffstats
path: root/src/mkheader.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2014-01-09 18:14:09 +0000
committerWerner Koch <[email protected]>2014-01-16 08:58:22 +0000
commitff937c39febe63d52c55590d8e3bd3a460f26651 (patch)
tree5eb58c4075c5e8981c13fca80db99ed8f9679742 /src/mkheader.c
parentImprove maintainability by rewriting the mkheader helper. (diff)
downloadlibgpg-error-ff937c39febe63d52c55590d8e3bd3a460f26651.tar.gz
libgpg-error-ff937c39febe63d52c55590d8e3bd3a460f26651.zip
Add gpgrt_lock_ functions.
* src/gpg-error.h.in (GPGRT_LOCK_DEFINE): New. (gpgrt_lock_init): New. (gpgrt_lock_lock): New. (gpgrt_lock_unlock): New. (gpgrt_lock_destroy): New. (gpgrt_yield): New. * src/gpg-error.def.in: Add new functions. * m4/lock.m4, m4/threadlib.m4: New. Taken from current gnulib. * configure.ac: Call gl_LOCK. Check size of pthread_mutex_t. Add LIBTHREAD to GPG_ERROR_CONFIG_LIBS. * src/err-codes.h.in (GPG_ERR_INV_LOCK_OBJ): New. * src/gen-posix-lock-obj.c: New. * src/gen-w32-lock-obj.c: New. * src/lock.h, src/thread.h: New. * src/posix-lock-obj.h, src/w32-lock-obj.h: New. * src/posix-lock.c, src/w32-lock.c: New. * src/posix-thread.c, src/w32-thread.c: * src/w32-lock-obj-pub.in: New. * src/mkheader.c (include_file): Support build time include files. (write_special): Add keyword "include:lock-obj". * src/Makefile.am: (posix-lock-obj-pub.in): New rule. (noinst_PROGRAMS): Add gen-*-lock-obj helpers. * tests/t-common.h: New. * tests/t-lock.c: New. * tests/Makefile.am (t_lock_LDADD): Add new test. -- This patch introduces the gpgrt_ functions which will be extended over time to provide a library of commonly used code in GnuPG and Libgcrypt. Having them in a library named libgpg-error is a misnomer but this way we can achieve a smooth upgrade path. In contrasts to other GnuPG libraries, the gpgrt_ functions return a simple gpg_err_code_t and not gpg_error_t. The rationale for this is that a source of error identifier does not make sense here; it is better to use the source of error identifier of the caller. This can easily be achieved in a component by wrapping these function in a gpg_error macro/inline. There is no cross-compiling support for Posix platforms; the gen-posix-lock-obj tool must be run on the target system. Note that the gen-w32-lock-obj tool is not needed at build time but was used to figure out ABI definitions for Windows. Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'src/mkheader.c')
-rw-r--r--src/mkheader.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/mkheader.c b/src/mkheader.c
index eea7914..e7db729 100644
--- a/src/mkheader.c
+++ b/src/mkheader.c
@@ -132,7 +132,8 @@ write_errnos_in (char *line)
is not further expanded. It may have comments indicated by a
double hash mark at the begin of a line. OUTF is called for each
read line and passed a buffer with the content of line sans line
- line endings. */
+ line endings. If NAME is prefixed with "./" it is included from
+ the current directory and not from the source directory. */
static void
include_file (const char *fname, int lnr, const char *name, void (*outf)(char*))
{
@@ -147,7 +148,11 @@ include_file (const char *fname, int lnr, const char *name, void (*outf)(char*))
fputs (PGM ": out of core\n", stderr);
exit (1);
}
- strcpy (incfname, srcdir);
+
+ if (*name == '.' && name[1] == '/')
+ *incfname = 0;
+ else
+ strcpy (incfname, srcdir);
strcat (incfname, name);
fp = fopen (incfname, "r");
@@ -242,6 +247,15 @@ write_special (const char *fname, int lnr, const char *tag)
include_file (fname, lnr, "w32ce-add.h", write_line);
}
}
+ else if (!strcmp (tag, "include:lock-obj"))
+ {
+ if (!strcmp (host_os, "mingw32"))
+ {
+ include_file (fname, lnr, "w32-lock-obj-pub.in", write_line);
+ }
+ else
+ include_file (fname, lnr, "./posix-lock-obj-pub.in", write_line);
+ }
else
return 0; /* Unknown tag. */