mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-22 10:19:57 +01:00
Use estream_asprintf instead of the GNU asprintf.
This commit is contained in:
parent
edb3dc99e9
commit
5f3bca9682
@ -1,3 +1,9 @@
|
|||||||
|
2007-05-15 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
|
* configure.ac: Call ESTREAM_INIT and define the memory
|
||||||
|
allocators for estream_asprintf.
|
||||||
|
(gl_MODULES): Remove vasprintf.
|
||||||
|
|
||||||
2007-05-09 Werner Koch <wk@g10code.com>
|
2007-05-09 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
Released 2.0.4.
|
Released 2.0.4.
|
||||||
|
4
NEWS
4
NEWS
@ -1,3 +1,7 @@
|
|||||||
|
Noteworthy changes in version 2.0.5
|
||||||
|
------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
Noteworthy changes in version 2.0.4 (2007-05-09)
|
Noteworthy changes in version 2.0.4 (2007-05-09)
|
||||||
------------------------------------------------
|
------------------------------------------------
|
||||||
|
|
||||||
|
@ -30,16 +30,18 @@ Release process:
|
|||||||
* Run "./autogen.sh --force"
|
* Run "./autogen.sh --force"
|
||||||
(--force is required for the svn magic in configure.ac and a good
|
(--force is required for the svn magic in configure.ac and a good
|
||||||
idea in any case)
|
idea in any case)
|
||||||
|
* Run configure as usual.
|
||||||
* Run "make distcheck"
|
* Run "make distcheck"
|
||||||
* Build and test the new tarball (best on a different machine).
|
* Build and test the new tarball (best on a different machine).
|
||||||
* [1.4 only] Build and test the W32 vesion.
|
* [1.4 only] Build and test the W32 version.
|
||||||
|
* Using the final test build run a "make -C doc online".
|
||||||
* Sign the tarball
|
* Sign the tarball
|
||||||
* Get the previous tarball and run "mkdiff gnupg".
|
* Get the previous tarball and run "mkdiff gnupg".
|
||||||
You might need to set a different signature key than mine. mkdiff
|
You might need to set a different signature key than mine. mkdiff
|
||||||
has an option for this.
|
has an option for this.
|
||||||
* If you are satisied with the result tag the release. Use "svn
|
* If you are satisfied with the result tag the release. Use "svn
|
||||||
info" to get the current URL and use an svn cp command similar to
|
info" to get the current URL and use an svn cp command similar to
|
||||||
"svn cp svn+ssh://host/gnupg/trunk svn+ssh://host/gnupg/tags/2.n.m"
|
"svn cp svn+ssh://host/gnupg/trunk svn+ssh://host/gnupg/tags/gnupg-2.n.m"
|
||||||
(for 1.4 you should see "branches/STABLE-BRANCH-1-4" instead of "trunk",
|
(for 1.4 you should see "branches/STABLE-BRANCH-1-4" instead of "trunk",
|
||||||
however tags are all below tags).
|
however tags are all below tags).
|
||||||
* Copy the files to the FTP server
|
* Copy the files to the FTP server
|
||||||
|
2
TODO
2
TODO
@ -121,6 +121,8 @@
|
|||||||
scdaemon stays as a zombie and gpg-agent does not perform any more
|
scdaemon stays as a zombie and gpg-agent does not perform any more
|
||||||
commands.
|
commands.
|
||||||
|
|
||||||
|
* Howtos
|
||||||
|
** Migrate OpenPGP keys to another system
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2007-05-14 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
|
* protect.c (make_shadow_info): Replace sprintf by smklen.
|
||||||
|
|
||||||
2007-04-20 Werner Koch <wk@g10code.com>
|
2007-04-20 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
* gpg-agent.c (my_gcry_logger, my_gcry_outofcore_handler): Removed.
|
* gpg-agent.c (my_gcry_logger, my_gcry_outofcore_handler): Removed.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* protect.c - Un/Protect a secret key
|
/* protect.c - Un/Protect a secret key
|
||||||
* Copyright (C) 1998, 1999, 2000, 2001, 2002,
|
* Copyright (C) 1998, 1999, 2000, 2001, 2002,
|
||||||
* 2003 Free Software Foundation, Inc.
|
* 2003, 2007 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* This file is part of GnuPG.
|
* This file is part of GnuPG.
|
||||||
*
|
*
|
||||||
@ -846,23 +846,21 @@ make_shadow_info (const char *serialno, const char *idstring)
|
|||||||
{
|
{
|
||||||
const char *s;
|
const char *s;
|
||||||
char *info, *p;
|
char *info, *p;
|
||||||
char numbuf[21];
|
char numbuf[20];
|
||||||
int n;
|
size_t n;
|
||||||
|
|
||||||
for (s=serialno, n=0; *s && s[1]; s += 2)
|
for (s=serialno, n=0; *s && s[1]; s += 2)
|
||||||
n++;
|
n++;
|
||||||
|
|
||||||
info = p = xtrymalloc (1 + 21 + n
|
info = p = xtrymalloc (1 + sizeof numbuf + n
|
||||||
+ 21 + strlen (idstring) + 1 + 1);
|
+ sizeof numbuf + strlen (idstring) + 1 + 1);
|
||||||
if (!info)
|
if (!info)
|
||||||
return NULL;
|
return NULL;
|
||||||
*p++ = '(';
|
*p++ = '(';
|
||||||
sprintf (numbuf, "%d:", n);
|
p = stpcpy (p, smklen (numbuf, sizeof numbuf, n, NULL));
|
||||||
p = stpcpy (p, numbuf);
|
|
||||||
for (s=serialno; *s && s[1]; s += 2)
|
for (s=serialno; *s && s[1]; s += 2)
|
||||||
*(unsigned char *)p++ = xtoi_2 (s);
|
*(unsigned char *)p++ = xtoi_2 (s);
|
||||||
sprintf (numbuf, "%u:", (unsigned int)strlen (idstring));
|
p = stpcpy (p, smklen (numbuf, sizeof numbuf, strlen (idstring), NULL));
|
||||||
p = stpcpy (p, numbuf);
|
|
||||||
p = stpcpy (p, idstring);
|
p = stpcpy (p, idstring);
|
||||||
*p++ = ')';
|
*p++ = ')';
|
||||||
*p = 0;
|
*p = 0;
|
||||||
|
@ -1,3 +1,20 @@
|
|||||||
|
2007-05-15 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
|
* util.h: Do not include gnulib's vasprintf. Redefine asprintf
|
||||||
|
and vasprintf.
|
||||||
|
|
||||||
|
* xasprintf.c (xasprintf, xtryasprintf): Use estream_vasprintf.
|
||||||
|
|
||||||
|
* estream-printf.h, estream-printf.c: New. Taken from current
|
||||||
|
libestream SVN.
|
||||||
|
* Makefile.am (common_sources): Add them.
|
||||||
|
|
||||||
|
2007-05-14 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
|
* sexp-parse.h (smklen): New.
|
||||||
|
* sexputil.c: Include sexp-parse.h.
|
||||||
|
(make_simple_sexp_from_hexstr): Replace sprintf by smklen.
|
||||||
|
|
||||||
2007-05-07 Werner Koch <wk@g10code.com>
|
2007-05-07 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
* signal.c (got_fatal_signal): Protect SIG from being clobbered by
|
* signal.c (got_fatal_signal): Protect SIG from being clobbered by
|
||||||
|
@ -54,7 +54,7 @@ common_sources = \
|
|||||||
w32reg.c \
|
w32reg.c \
|
||||||
signal.c \
|
signal.c \
|
||||||
dynload.h \
|
dynload.h \
|
||||||
estream.c estream.h \
|
estream.c estream.h estream-printf.c estream-printf.h \
|
||||||
srv.c srv.h \
|
srv.c srv.h \
|
||||||
dns-cert.c dns-cert.h \
|
dns-cert.c dns-cert.h \
|
||||||
pka.c pka.h \
|
pka.c pka.h \
|
||||||
|
2139
common/estream-printf.c
Normal file
2139
common/estream-printf.c
Normal file
File diff suppressed because it is too large
Load Diff
60
common/estream-printf.h
Normal file
60
common/estream-printf.h
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
/* estream-printf.h - Versatile C-99 compliant printf formatting.
|
||||||
|
* Copyright (C) 2007 g10 Code GmbH
|
||||||
|
*
|
||||||
|
* This file is part of Libestream.
|
||||||
|
*
|
||||||
|
* Libestream 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 of the License,
|
||||||
|
* or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Libestream 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 Libestream; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||||
|
* USA.
|
||||||
|
*
|
||||||
|
* $Id: estream-printf.h 54 2007-05-15 14:12:06Z wk $
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef ESTREAM_PRINTF_H
|
||||||
|
#define ESTREAM_PRINTF_H
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5 )
|
||||||
|
# define ESTREAM_GCC_A_PRINTF( f, a ) __attribute__ ((format (printf,f,a)))
|
||||||
|
#else
|
||||||
|
# define ESTREAM_GCC_A_PRINTF( f, a )
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
typedef int (*estream_printf_out_t)
|
||||||
|
(void *outfncarg, const char *buf, size_t buflen);
|
||||||
|
|
||||||
|
int estream_format (estream_printf_out_t outfnc, void *outfncarg,
|
||||||
|
const char *format, va_list vaargs)
|
||||||
|
ESTREAM_GCC_A_PRINTF(3,0);
|
||||||
|
int estream_printf (const char *format, ...)
|
||||||
|
ESTREAM_GCC_A_PRINTF(1,2);
|
||||||
|
int estream_fprintf (FILE *fp, const char *format, ... )
|
||||||
|
ESTREAM_GCC_A_PRINTF(2,3);
|
||||||
|
int estream_vfprintf (FILE *fp, const char *format, va_list arg_ptr)
|
||||||
|
ESTREAM_GCC_A_PRINTF(2,0);
|
||||||
|
int estream_snprintf (char *buf, size_t bufsize, const char *format, ...)
|
||||||
|
ESTREAM_GCC_A_PRINTF(3,4);
|
||||||
|
int estream_vsnprintf (char *buf,size_t bufsize,
|
||||||
|
const char *format, va_list arg_ptr)
|
||||||
|
ESTREAM_GCC_A_PRINTF(3,0);
|
||||||
|
int estream_asprintf (char **bufp, const char *format, ...)
|
||||||
|
ESTREAM_GCC_A_PRINTF(2,3);
|
||||||
|
int estream_vasprintf (char **bufp, const char *format, va_list arg_ptr)
|
||||||
|
ESTREAM_GCC_A_PRINTF(2,0);
|
||||||
|
|
||||||
|
|
||||||
|
#endif /*ESTREAM_PRINTF_H*/
|
141
common/estream.c
141
common/estream.c
@ -1,5 +1,5 @@
|
|||||||
/* estream.c - Extended Stream I/O Library
|
/* estream.c - Extended Stream I/O Library
|
||||||
* Copyright (C) 2004, 2006, 2007 g10 Code GmbH
|
* Copyright (C) 2004, 2005, 2006, 2007 g10 Code GmbH
|
||||||
*
|
*
|
||||||
* This file is part of Libestream.
|
* This file is part of Libestream.
|
||||||
*
|
*
|
||||||
@ -11,7 +11,7 @@
|
|||||||
* Libestream is distributed in the hope that it will be useful, but
|
* Libestream is distributed in the hope that it will be useful, but
|
||||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Lesser General Public License for more details.
|
* General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with Libestream; if not, write to the Free Software
|
* along with Libestream; if not, write to the Free Software
|
||||||
@ -49,6 +49,7 @@
|
|||||||
# include <pth.h>
|
# include <pth.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* This is for the special hack to use estream.c in GnuPG. */
|
||||||
#ifdef GNUPG_MAJOR_VERSION
|
#ifdef GNUPG_MAJOR_VERSION
|
||||||
#include "../common/util.h"
|
#include "../common/util.h"
|
||||||
#endif
|
#endif
|
||||||
@ -62,7 +63,7 @@ void *memrchr (const void *block, int c, size_t size);
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <estream.h>
|
#include <estream.h>
|
||||||
|
#include <estream-printf.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -747,8 +748,8 @@ static int
|
|||||||
es_convert_mode (const char *mode, unsigned int *flags)
|
es_convert_mode (const char *mode, unsigned int *flags)
|
||||||
{
|
{
|
||||||
|
|
||||||
/* FIXME: We need to allow all combinations for mode flags and for
|
/* FIXME: We need to allow all mode flags permutations and for
|
||||||
binary we need to do a
|
binary mode we need to do a
|
||||||
|
|
||||||
#ifdef HAVE_DOSISH_SYSTEM
|
#ifdef HAVE_DOSISH_SYSTEM
|
||||||
setmode (fd, O_BINARY);
|
setmode (fd, O_BINARY);
|
||||||
@ -1671,29 +1672,19 @@ doreadline (estream_t ES__RESTRICT stream, size_t max_length,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Helper for esprint. */
|
/* Output fucntion used for estream_format. */
|
||||||
#if defined(HAVE_FOPENCOOKIE) || defined(HAVE_FUNOPEN)
|
static int
|
||||||
static my_funopen_hook_ret_t
|
print_writer (void *outfncarg, const char *buf, size_t buflen)
|
||||||
print_fun_writer (void *cookie_arg, const char *buffer, size_t size)
|
|
||||||
{
|
{
|
||||||
estream_t stream = cookie_arg;
|
estream_t stream = outfncarg;
|
||||||
size_t nwritten;
|
size_t nwritten;
|
||||||
|
int rc;
|
||||||
|
|
||||||
/* We don't return an error but let es_print check whether an error
|
nwritten = 0;
|
||||||
has occured. Internally we skip everything after an error. */
|
rc = es_writen (stream, buf, buflen, &nwritten);
|
||||||
if (!stream->intern->print_err)
|
stream->intern->print_ntotal += nwritten;
|
||||||
{
|
return rc;
|
||||||
if (es_writen (stream, buffer, size, &nwritten))
|
|
||||||
{
|
|
||||||
stream->intern->print_err = 1;
|
|
||||||
stream->intern->print_errno = errno;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
stream->intern->print_ntotal += nwritten;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
#endif /* HAVE_FOPENCOOKIE || HAVE_FUNOPEN */
|
|
||||||
|
|
||||||
|
|
||||||
/* The core of our printf function. This is called in locked state. */
|
/* The core of our printf function. This is called in locked state. */
|
||||||
@ -1701,98 +1692,13 @@ static int
|
|||||||
es_print (estream_t ES__RESTRICT stream,
|
es_print (estream_t ES__RESTRICT stream,
|
||||||
const char *ES__RESTRICT format, va_list ap)
|
const char *ES__RESTRICT format, va_list ap)
|
||||||
{
|
{
|
||||||
#if defined(HAVE_FOPENCOOKIE) || defined(HAVE_FUNOPEN)
|
int rc;
|
||||||
|
|
||||||
if (!stream->intern->print_fp)
|
|
||||||
{
|
|
||||||
#ifdef HAVE_FOPENCOOKIE
|
|
||||||
{
|
|
||||||
cookie_io_functions_t io = { NULL };
|
|
||||||
io.write = print_fun_writer;
|
|
||||||
|
|
||||||
stream->intern->print_fp = fopencookie (stream, "w", io);
|
|
||||||
}
|
|
||||||
#else /*!HAVE_FOPENCOOKIE*/
|
|
||||||
stream->intern->print_fp = funopen (stream, NULL,
|
|
||||||
print_fun_writer, NULL, NULL);
|
|
||||||
#endif /*!HAVE_FOPENCOOKIE*/
|
|
||||||
if (!stream->intern->print_fp)
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
stream->intern->print_err = 0;
|
|
||||||
stream->intern->print_errno = 0;
|
|
||||||
stream->intern->print_ntotal = 0;
|
stream->intern->print_ntotal = 0;
|
||||||
|
rc = estream_format (print_writer, stream, format, ap);
|
||||||
if ( vfprintf (stream->intern->print_fp, format, ap) < 0
|
if (rc)
|
||||||
|| fflush (stream->intern->print_fp) )
|
return -1;
|
||||||
{
|
|
||||||
stream->intern->print_errno = errno;
|
|
||||||
stream->intern->print_err = 1;
|
|
||||||
fclose (stream->intern->print_fp);
|
|
||||||
stream->intern->print_fp = NULL;
|
|
||||||
}
|
|
||||||
if (stream->intern->print_err)
|
|
||||||
{
|
|
||||||
errno = stream->intern->print_errno;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (int)stream->intern->print_ntotal;
|
return (int)stream->intern->print_ntotal;
|
||||||
|
|
||||||
#else /* No funopen or fopencookie. */
|
|
||||||
|
|
||||||
char data[BUFFER_BLOCK_SIZE];
|
|
||||||
size_t bytes_read;
|
|
||||||
size_t bytes_written;
|
|
||||||
FILE *tmp_stream;
|
|
||||||
int err;
|
|
||||||
|
|
||||||
bytes_written = 0;
|
|
||||||
tmp_stream = NULL;
|
|
||||||
err = 0;
|
|
||||||
|
|
||||||
tmp_stream = tmpfile ();
|
|
||||||
if (! tmp_stream)
|
|
||||||
{
|
|
||||||
err = errno;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
err = vfprintf (tmp_stream, format, ap);
|
|
||||||
if (err < 0)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
err = fseek (tmp_stream, 0, SEEK_SET);
|
|
||||||
if (err)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
bytes_read = fread (data, 1, sizeof (data), tmp_stream);
|
|
||||||
if (ferror (tmp_stream))
|
|
||||||
{
|
|
||||||
err = -1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
err = es_writen (stream, data, bytes_read, NULL);
|
|
||||||
if (err)
|
|
||||||
break;
|
|
||||||
else
|
|
||||||
bytes_written += bytes_read;
|
|
||||||
if (feof (tmp_stream))
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (err)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
out:
|
|
||||||
if (tmp_stream)
|
|
||||||
fclose (tmp_stream);
|
|
||||||
|
|
||||||
return err ? -1 : bytes_written;
|
|
||||||
#endif /* no funopen or fopencookie */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2718,7 +2624,7 @@ es_vfprintf (estream_t ES__RESTRICT stream, const char *ES__RESTRICT format,
|
|||||||
|
|
||||||
static int
|
static int
|
||||||
es_fprintf_unlocked (estream_t ES__RESTRICT stream,
|
es_fprintf_unlocked (estream_t ES__RESTRICT stream,
|
||||||
const char *ES__RESTRICT format, ...)
|
const char *ES__RESTRICT format, ...)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -2868,8 +2774,6 @@ es_opaque_get (estream_t stream)
|
|||||||
return opaque;
|
return opaque;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Print a BUFFER to STREAM while replacing all control characters and
|
/* Print a BUFFER to STREAM while replacing all control characters and
|
||||||
the characters in DELIMITERS by standard C escape sequences.
|
the characters in DELIMITERS by standard C escape sequences.
|
||||||
Returns 0 on success or -1 on error. If BYTES_WRITTEN is not NULL
|
Returns 0 on success or -1 on error. If BYTES_WRITTEN is not NULL
|
||||||
@ -2992,7 +2896,7 @@ es_write_hexstring (estream_t ES__RESTRICT stream,
|
|||||||
encoding. The interface is the same as es_write_sanitized, however
|
encoding. The interface is the same as es_write_sanitized, however
|
||||||
only one delimiter may be supported.
|
only one delimiter may be supported.
|
||||||
|
|
||||||
THIS IS NOT A STANDARD ESTREAM FUNCTION AND ONLY USED BY GNUPG. */
|
THIS IS NOT A STANDARD ESTREAM FUNCTION AND ONLY USED BY GNUPG!. */
|
||||||
int
|
int
|
||||||
es_write_sanitized_utf8_buffer (estream_t stream,
|
es_write_sanitized_utf8_buffer (estream_t stream,
|
||||||
const void *buffer, size_t length,
|
const void *buffer, size_t length,
|
||||||
@ -3025,6 +2929,3 @@ es_write_sanitized_utf8_buffer (estream_t stream,
|
|||||||
return es_write_sanitized (stream, p, length, delimiters, bytes_written);
|
return es_write_sanitized (stream, p, length, delimiters, bytes_written);
|
||||||
}
|
}
|
||||||
#endif /*GNUPG_MAJOR_VERSION*/
|
#endif /*GNUPG_MAJOR_VERSION*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* estream.h - Extended stream I/O/ Library
|
/* estream.h - Extended stream I/O/ Library
|
||||||
* Copyright (C) 2004 g10 Code GmbH
|
* Copyright (C) 2004, 2005, 2006, 2007 g10 Code GmbH
|
||||||
*
|
*
|
||||||
* This file is part of Libestream.
|
* This file is part of Libestream.
|
||||||
*
|
*
|
||||||
@ -211,7 +211,6 @@ void es_opaque_set (estream_t ES__RESTRICT stream, void *ES__RESTRICT opaque);
|
|||||||
void *es_opaque_get (estream_t stream);
|
void *es_opaque_get (estream_t stream);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef GNUPG_MAJOR_VERSION
|
#ifdef GNUPG_MAJOR_VERSION
|
||||||
int es_write_sanitized_utf8_buffer (estream_t stream,
|
int es_write_sanitized_utf8_buffer (estream_t stream,
|
||||||
const void *buffer, size_t length,
|
const void *buffer, size_t length,
|
||||||
@ -220,5 +219,6 @@ int es_write_sanitized_utf8_buffer (estream_t stream,
|
|||||||
#endif /*GNUPG_MAJOR_VERSION*/
|
#endif /*GNUPG_MAJOR_VERSION*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /*ESTREAM_H*/
|
#endif /*ESTREAM_H*/
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* sexp-parse.h - S-Exp helper functions
|
/* sexp-parse.h - S-Exp helper functions
|
||||||
* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
|
* Copyright (C) 2002, 2003, 2007 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* This file is part of GnuPG.
|
* This file is part of GnuPG.
|
||||||
*
|
*
|
||||||
@ -97,4 +97,34 @@ smatch (unsigned char const **buf, size_t buflen, const char *token)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Format VALUE for use as the length indicatior of an S-expression.
|
||||||
|
The caller needs to provide a buffer HELP_BUFFER wth a length of
|
||||||
|
HELP_BUFLEN. The return value is a pointer into HELP_BUFFER with
|
||||||
|
the formatted length string. The colon and a trailing nul are
|
||||||
|
appended. HELP_BUFLEN must be at least 3 - a more useful value is
|
||||||
|
15. If LENGTH is not NULL, the LENGTH of the resulting string
|
||||||
|
(excluding the terminating nul) is stored at that address. */
|
||||||
|
static inline char *
|
||||||
|
smklen (char *help_buffer, size_t help_buflen, size_t value, size_t *length)
|
||||||
|
{
|
||||||
|
char *p = help_buffer + help_buflen;
|
||||||
|
|
||||||
|
if (help_buflen >= 3)
|
||||||
|
{
|
||||||
|
*--p = 0;
|
||||||
|
*--p = ':';
|
||||||
|
do
|
||||||
|
{
|
||||||
|
*--p = '0' + (value % 10);
|
||||||
|
value /= 10;
|
||||||
|
}
|
||||||
|
while (value && p > help_buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (length)
|
||||||
|
*length = (help_buffer + help_buflen) - p;
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif /*SEXP_PARSE_H*/
|
#endif /*SEXP_PARSE_H*/
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
#include "sexp-parse.h"
|
||||||
|
|
||||||
/* Return the so called "keygrip" which is the SHA-1 hash of the
|
/* Return the so called "keygrip" which is the SHA-1 hash of the
|
||||||
public key parameters expressed in a way depended on the algorithm.
|
public key parameters expressed in a way depended on the algorithm.
|
||||||
@ -115,7 +115,8 @@ make_simple_sexp_from_hexstr (const char *line, size_t *nscanned)
|
|||||||
const char *s;
|
const char *s;
|
||||||
unsigned char *buf;
|
unsigned char *buf;
|
||||||
unsigned char *p;
|
unsigned char *p;
|
||||||
char numbuf[50];
|
char numbuf[50], *numbufp;
|
||||||
|
size_t numbuflen;
|
||||||
|
|
||||||
for (n=0, s=line; hexdigitp (s); s++, n++)
|
for (n=0, s=line; hexdigitp (s); s++, n++)
|
||||||
;
|
;
|
||||||
@ -124,11 +125,12 @@ make_simple_sexp_from_hexstr (const char *line, size_t *nscanned)
|
|||||||
if (!n)
|
if (!n)
|
||||||
return NULL;
|
return NULL;
|
||||||
len = ((n+1) & ~0x01)/2;
|
len = ((n+1) & ~0x01)/2;
|
||||||
sprintf (numbuf, "(%u:", (unsigned int)len);
|
numbufp = smklen (numbuf, sizeof numbuf, len, &numbuflen);
|
||||||
buf = xtrymalloc (strlen (numbuf) + len + 1 + 1);
|
buf = xtrymalloc (1 + numbuflen + len + 1 + 1);
|
||||||
if (!buf)
|
if (!buf)
|
||||||
return NULL;
|
return NULL;
|
||||||
p = (unsigned char *)stpcpy ((char *)buf, numbuf);
|
buf[0] = '(';
|
||||||
|
p = (unsigned char *)stpcpy ((char *)buf+1, numbufp);
|
||||||
s = line;
|
s = line;
|
||||||
if ((n&1))
|
if ((n&1))
|
||||||
{
|
{
|
||||||
|
@ -27,10 +27,6 @@
|
|||||||
#include <errno.h> /* We need errno. */
|
#include <errno.h> /* We need errno. */
|
||||||
#include <gpg-error.h> /* We need gpg_error_t. */
|
#include <gpg-error.h> /* We need gpg_error_t. */
|
||||||
|
|
||||||
/* Common GNUlib includes (-I ../gl/). */
|
|
||||||
#include "vasprintf.h"
|
|
||||||
|
|
||||||
|
|
||||||
/* Hash function used with libksba. */
|
/* Hash function used with libksba. */
|
||||||
#define HASH_FNC ((void (*)(void *, const void*,size_t))gcry_md_write)
|
#define HASH_FNC ((void (*)(void *, const void*,size_t))gcry_md_write)
|
||||||
|
|
||||||
@ -43,6 +39,14 @@
|
|||||||
#include "../jnlib/dotlock.h"
|
#include "../jnlib/dotlock.h"
|
||||||
#include "../jnlib/utf8conv.h"
|
#include "../jnlib/utf8conv.h"
|
||||||
|
|
||||||
|
/* Redefine asprintf by our estream version which uses our own memory
|
||||||
|
allocator.. */
|
||||||
|
#include "estream-printf.h"
|
||||||
|
#define asprintf estream_asprintf
|
||||||
|
#define vasprintf estream_vasprintf
|
||||||
|
|
||||||
|
|
||||||
|
/* GCC attributes. */
|
||||||
#if __GNUC__ >= 4
|
#if __GNUC__ >= 4
|
||||||
# define GNUPG_GCC_A_SENTINEL(a) __attribute__ ((sentinel(a)))
|
# define GNUPG_GCC_A_SENTINEL(a) __attribute__ ((sentinel(a)))
|
||||||
#else
|
#else
|
||||||
@ -175,13 +179,9 @@ void gnupg_rl_initialize (void);
|
|||||||
logging subsystem. */
|
logging subsystem. */
|
||||||
void setup_libgcrypt_logging (void);
|
void setup_libgcrypt_logging (void);
|
||||||
|
|
||||||
/* Same as asprintf but return an allocated buffer suitable to be
|
/* Same as estream_asprintf but die on memory failure. */
|
||||||
freed using xfree. This function simply dies on memory failure,
|
|
||||||
thus no extra check is required. */
|
|
||||||
char *xasprintf (const char *fmt, ...) JNLIB_GCC_A_PRINTF(1,2);
|
char *xasprintf (const char *fmt, ...) JNLIB_GCC_A_PRINTF(1,2);
|
||||||
/* Same as asprintf but return an allocated buffer suitable to be
|
/* This is now an alias to estream_asprintf. */
|
||||||
freed using xfree. This function returns NULL on memory failure and
|
|
||||||
sets errno. */
|
|
||||||
char *xtryasprintf (const char *fmt, ...) JNLIB_GCC_A_PRINTF(1,2);
|
char *xtryasprintf (const char *fmt, ...) JNLIB_GCC_A_PRINTF(1,2);
|
||||||
|
|
||||||
const char *print_fname_stdout (const char *s);
|
const char *print_fname_stdout (const char *s);
|
||||||
|
@ -1,169 +0,0 @@
|
|||||||
/* Like vsprintf but provides a pointer to malloc'd storage, which must
|
|
||||||
be freed by the caller.
|
|
||||||
Copyright (C) 1994, 2002 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
This file is part of the libiberty library.
|
|
||||||
Libiberty is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU Library General Public
|
|
||||||
License as published by the Free Software Foundation; either
|
|
||||||
version 2 of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
Libiberty 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
|
|
||||||
Library General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
|
||||||
License along with libiberty; see the file COPYING.LIB. If
|
|
||||||
not, write to the Free Software Foundation, Inc., 51 Franklin Street,
|
|
||||||
Fifth Floor, Boston, MA 02110-1301, USA. */
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
#include <config.h>
|
|
||||||
#endif
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
|
|
||||||
#ifdef TEST
|
|
||||||
int global_total_width;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int
|
|
||||||
vasprintf (char **result, const char *format, va_list args)
|
|
||||||
{
|
|
||||||
const char *p = format;
|
|
||||||
/* Add one to make sure that it is never zero, which might cause malloc
|
|
||||||
to return NULL. */
|
|
||||||
int total_width = strlen (format) + 1;
|
|
||||||
va_list ap;
|
|
||||||
|
|
||||||
#ifdef va_copy
|
|
||||||
va_copy (ap, args);
|
|
||||||
#else
|
|
||||||
#ifdef __va_copy
|
|
||||||
__va_copy (ap, args);
|
|
||||||
#else
|
|
||||||
memcpy (&ap, args, sizeof (va_list));
|
|
||||||
#endif /* __va_copy */
|
|
||||||
#endif /* va_copy */
|
|
||||||
|
|
||||||
while (*p != '\0')
|
|
||||||
{
|
|
||||||
if (*p++ == '%')
|
|
||||||
{
|
|
||||||
while (strchr ("-+ #0", *p))
|
|
||||||
++p;
|
|
||||||
if (*p == '*')
|
|
||||||
{
|
|
||||||
++p;
|
|
||||||
total_width += abs (va_arg (ap, int));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
total_width += strtoul (p, (char**)&p, 10);
|
|
||||||
if (*p == '.')
|
|
||||||
{
|
|
||||||
++p;
|
|
||||||
if (*p == '*')
|
|
||||||
{
|
|
||||||
++p;
|
|
||||||
total_width += abs (va_arg (ap, int));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
total_width += strtoul (p, (char**)&p, 10);
|
|
||||||
}
|
|
||||||
while (strchr ("hlL", *p))
|
|
||||||
++p;
|
|
||||||
/* Should be big enough for any format specifier except %s
|
|
||||||
and floats. */
|
|
||||||
total_width += 30;
|
|
||||||
switch (*p)
|
|
||||||
{
|
|
||||||
case 'd':
|
|
||||||
case 'i':
|
|
||||||
case 'o':
|
|
||||||
case 'u':
|
|
||||||
case 'x':
|
|
||||||
case 'X':
|
|
||||||
case 'c':
|
|
||||||
(void) va_arg (ap, int);
|
|
||||||
break;
|
|
||||||
case 'f':
|
|
||||||
case 'e':
|
|
||||||
case 'E':
|
|
||||||
case 'g':
|
|
||||||
case 'G':
|
|
||||||
(void) va_arg (ap, double);
|
|
||||||
/* Since an ieee double can have an exponent of 307, we'll
|
|
||||||
make the buffer wide enough to cover the gross case. */
|
|
||||||
total_width += 307;
|
|
||||||
break;
|
|
||||||
case 's':
|
|
||||||
{
|
|
||||||
char *tmp = va_arg (ap, char *);
|
|
||||||
if (tmp)
|
|
||||||
total_width += strlen (tmp);
|
|
||||||
else /* in case the vsprintf does prints a text */
|
|
||||||
total_width += 25; /* e.g. "(null pointer reference)" */
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'p':
|
|
||||||
case 'n':
|
|
||||||
(void) va_arg (ap, char *);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#ifdef TEST
|
|
||||||
global_total_width = total_width;
|
|
||||||
#endif
|
|
||||||
*result = malloc (total_width);
|
|
||||||
if (*result != NULL)
|
|
||||||
return vsprintf (*result, format, args);
|
|
||||||
else
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int
|
|
||||||
asprintf (char **buf, const char *fmt, ...)
|
|
||||||
{
|
|
||||||
int status;
|
|
||||||
va_list ap;
|
|
||||||
|
|
||||||
va_start (ap, fmt);
|
|
||||||
status = vasprintf (buf, fmt, ap);
|
|
||||||
va_end (ap);
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef TEST
|
|
||||||
void
|
|
||||||
checkit (const char* format, ...)
|
|
||||||
{
|
|
||||||
va_list args;
|
|
||||||
char *result;
|
|
||||||
|
|
||||||
va_start (args, format);
|
|
||||||
vasprintf (&result, format, args);
|
|
||||||
if (strlen (result) < global_total_width)
|
|
||||||
printf ("PASS: ");
|
|
||||||
else
|
|
||||||
printf ("FAIL: ");
|
|
||||||
printf ("%d %s\n", global_total_width, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main (void)
|
|
||||||
{
|
|
||||||
checkit ("%d", 0x12345678);
|
|
||||||
checkit ("%200d", 5);
|
|
||||||
checkit ("%.300d", 6);
|
|
||||||
checkit ("%100.150d", 7);
|
|
||||||
checkit ("%s", "jjjjjjjjjiiiiiiiiiiiiiiioooooooooooooooooppppppppppppaa\n\
|
|
||||||
777777777777777777333333333333366666666666622222222222777777777777733333");
|
|
||||||
checkit ("%f%s%d%s", 1.0, "foo", 77, "asdjffffffffffffffiiiiiiiiiiixxxxx");
|
|
||||||
}
|
|
||||||
#endif /* TEST */
|
|
@ -25,6 +25,11 @@
|
|||||||
|
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "iobuf.h"
|
#include "iobuf.h"
|
||||||
|
#include "estream-printf.h"
|
||||||
|
|
||||||
|
#if !defined(ESTREAM_ASPRINTF_MALLOC) || !defined(ESTREAM_ASPRINTF_FREE)
|
||||||
|
#error Need to define ESTREAM_ASPRINTF_MALLOC and _FREE
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Same as asprintf but return an allocated buffer suitable to be
|
/* Same as asprintf but return an allocated buffer suitable to be
|
||||||
freed using xfree. This function simply dies on memory failure,
|
freed using xfree. This function simply dies on memory failure,
|
||||||
@ -33,15 +38,13 @@ char *
|
|||||||
xasprintf (const char *fmt, ...)
|
xasprintf (const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char *buf, *p;
|
char *buf;
|
||||||
|
|
||||||
va_start (ap, fmt);
|
va_start (ap, fmt);
|
||||||
if (vasprintf (&buf, fmt, ap) < 0)
|
if (estream_vasprintf (&buf, fmt, ap) < 0)
|
||||||
log_fatal ("asprintf failed: %s\n", strerror (errno));
|
log_fatal ("estream_asprintf failed: %s\n", strerror (errno));
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
p = xstrdup (buf);
|
return buf;
|
||||||
free (buf);
|
|
||||||
return p;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Same as above but return NULL on memory failure. */
|
/* Same as above but return NULL on memory failure. */
|
||||||
@ -50,14 +53,12 @@ xtryasprintf (const char *fmt, ...)
|
|||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char *buf, *p;
|
char *buf;
|
||||||
|
|
||||||
va_start (ap, fmt);
|
va_start (ap, fmt);
|
||||||
rc = vasprintf (&buf, fmt, ap);
|
rc = estream_vasprintf (&buf, fmt, ap);
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
p = xtrystrdup (buf);
|
return buf;
|
||||||
free (buf);
|
|
||||||
return p;
|
|
||||||
}
|
}
|
||||||
|
17
configure.ac
17
configure.ac
@ -26,8 +26,8 @@ min_automake_version="1.10"
|
|||||||
# Remember to change the version number immediately *after* a release.
|
# Remember to change the version number immediately *after* a release.
|
||||||
# Set my_issvn to "yes" for non-released code. Remember to run an
|
# Set my_issvn to "yes" for non-released code. Remember to run an
|
||||||
# "svn up" and "autogen.sh" right before creating a distribution.
|
# "svn up" and "autogen.sh" right before creating a distribution.
|
||||||
m4_define([my_version], [2.0.4])
|
m4_define([my_version], [2.0.5])
|
||||||
m4_define([my_issvn], [no])
|
m4_define([my_issvn], [yes])
|
||||||
|
|
||||||
|
|
||||||
m4_define([svn_revision], m4_esyscmd([echo -n $( (svn info 2>/dev/null \
|
m4_define([svn_revision], m4_esyscmd([echo -n $( (svn info 2>/dev/null \
|
||||||
@ -426,6 +426,11 @@ AH_BOTTOM([
|
|||||||
currently enables it by default for no reason. */
|
currently enables it by default for no reason. */
|
||||||
#define PTH_SYSCALL_SOFT 0
|
#define PTH_SYSCALL_SOFT 0
|
||||||
|
|
||||||
|
/* We want to use the libgcrypt provided memory allocation for
|
||||||
|
asprintf. */
|
||||||
|
#define ESTREAM_ASPRINTF_MALLOC gcry_malloc
|
||||||
|
#define ESTREAM_ASPRINTF_FREE gcry_free
|
||||||
|
#define ESTREAM_PRINTF_EXTRA_INCLUDE "util.h"
|
||||||
|
|
||||||
#endif /*GNUPG_CONFIG_H_INCLUDED*/
|
#endif /*GNUPG_CONFIG_H_INCLUDED*/
|
||||||
])
|
])
|
||||||
@ -986,7 +991,7 @@ AC_CHECK_FUNCS([flockfile funlockfile fopencookie funopen])
|
|||||||
#
|
#
|
||||||
gl_SOURCE_BASE([gl])
|
gl_SOURCE_BASE([gl])
|
||||||
gl_M4_BASE([gl/m4])
|
gl_M4_BASE([gl/m4])
|
||||||
gl_MODULES([setenv mkdtemp vasprintf xsize])
|
gl_MODULES([setenv mkdtemp xsize])
|
||||||
gl_INIT
|
gl_INIT
|
||||||
|
|
||||||
|
|
||||||
@ -1188,6 +1193,12 @@ if test "$have_w32_system" = yes; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Prepare building of estream
|
||||||
|
#
|
||||||
|
estream_INIT
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Decide what to build
|
# Decide what to build
|
||||||
#
|
#
|
||||||
|
@ -1,5 +1,11 @@
|
|||||||
|
2007-05-11 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
|
* gpgsm.texi (--export): Enhanced description.
|
||||||
|
|
||||||
2007-05-09 Werner Koch <wk@g10code.com>
|
2007-05-09 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
|
* examples/gpgconf.conf: Remove active example line.
|
||||||
|
|
||||||
* Makefile.am (online): Distinguish between released and svn manuals.
|
* Makefile.am (online): Distinguish between released and svn manuals.
|
||||||
|
|
||||||
2007-05-08 Werner Koch <wk@g10code.com>
|
2007-05-08 Werner Koch <wk@g10code.com>
|
||||||
|
@ -52,7 +52,5 @@
|
|||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
# Deny all users to change the allow-mark-trusted option.
|
|
||||||
* gpg-agent allow-mark-trusted [no-change]
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -228,8 +228,14 @@ Delete the keys matching @var{pattern}.
|
|||||||
@item --export [@var{pattern}]
|
@item --export [@var{pattern}]
|
||||||
@opindex export
|
@opindex export
|
||||||
Export all certificates stored in the Keybox or those specified by the
|
Export all certificates stored in the Keybox or those specified by the
|
||||||
optional @var{pattern}. When using along with the @code{--armor} option
|
optional @var{pattern}. Those pattern consist of a list of user ids
|
||||||
a few informational lines are prepended before each block.
|
(@pxref{how-to-specify-a-user-id}). When used along with the
|
||||||
|
@option{--armor} option a few informational lines are prepended before
|
||||||
|
each block. There is one limitation: As there is no commonly agreed
|
||||||
|
upon way to pack more than one certificate into an ASN.1 structure, the
|
||||||
|
binary export (i.e. without using @option{armor}) works only for the
|
||||||
|
export of one certificate. Thus it is required to specify a
|
||||||
|
@var{pattern} which yields exactly one certificate.
|
||||||
|
|
||||||
@item --export-secret-key-p12 @var{key-id}
|
@item --export-secret-key-p12 @var{key-id}
|
||||||
@opindex export
|
@opindex export
|
||||||
|
@ -59,18 +59,6 @@ libgnu_a_SOURCES += setenv.h
|
|||||||
|
|
||||||
## end gnulib module setenv
|
## end gnulib module setenv
|
||||||
|
|
||||||
## begin gnulib module vasnprintf
|
|
||||||
|
|
||||||
libgnu_a_SOURCES += printf-args.h printf-parse.h vasnprintf.h
|
|
||||||
|
|
||||||
## end gnulib module vasnprintf
|
|
||||||
|
|
||||||
## begin gnulib module vasprintf
|
|
||||||
|
|
||||||
libgnu_a_SOURCES += vasprintf.h
|
|
||||||
|
|
||||||
## end gnulib module vasprintf
|
|
||||||
|
|
||||||
## begin gnulib module xsize
|
## begin gnulib module xsize
|
||||||
|
|
||||||
libgnu_a_SOURCES += xsize.h
|
libgnu_a_SOURCES += xsize.h
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2007-05-15 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
|
* estream.m4: New.
|
||||||
|
|
||||||
2007-05-09 Werner Koch <wk@g10code.com>
|
2007-05-09 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
* gpg-error.m4, ksba.m4, libassuan.m4, libgcrypt.m4: Updated.
|
* gpg-error.m4, ksba.m4, libassuan.m4, libgcrypt.m4: Updated.
|
||||||
|
@ -8,3 +8,7 @@ EXTRA_DIST += gpg-error.m4 libgcrypt.m4 libassuan.m4 ksba.m4
|
|||||||
|
|
||||||
EXTRA_DIST += autobuild.m4
|
EXTRA_DIST += autobuild.m4
|
||||||
|
|
||||||
|
EXTRA_DIST += estream.m4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
48
m4/estream.m4
Normal file
48
m4/estream.m4
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
dnl Autoconf macros for libestream
|
||||||
|
dnl Copyright (C) 2007 g10 Code GmbH
|
||||||
|
dnl
|
||||||
|
dnl This file is free software; as a special exception the author gives
|
||||||
|
dnl unlimited permission to copy and/or distribute it, with or without
|
||||||
|
dnl modifications, as long as this notice is preserved.
|
||||||
|
dnl
|
||||||
|
dnl This file is distributed in the hope that it will be useful, but
|
||||||
|
dnl WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
|
||||||
|
dnl implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
|
||||||
|
dnl estream_PRINTF_INIT
|
||||||
|
dnl Prepare build of source included estream-printf.c
|
||||||
|
dnl
|
||||||
|
AC_DEFUN([estream_PRINTF_INIT],
|
||||||
|
[
|
||||||
|
AC_MSG_NOTICE([checking system features for estream-printf])
|
||||||
|
AC_TYPE_LONG_LONG_INT
|
||||||
|
AC_TYPE_LONG_DOUBLE
|
||||||
|
AC_TYPE_INTMAX_T
|
||||||
|
AC_TYPE_UINTMAX_T
|
||||||
|
AC_CHECK_TYPES([ptrdiff_t])
|
||||||
|
AC_CHECK_SIZEOF([unsigned long])
|
||||||
|
AC_CHECK_SIZEOF([void *])
|
||||||
|
AC_CACHE_CHECK([for nl_langinfo and THOUSANDS_SEP],
|
||||||
|
estream_cv_langinfo_thousands_sep,
|
||||||
|
[AC_TRY_LINK([#include <langinfo.h>],
|
||||||
|
[char* cs = nl_langinfo(THOUSANDS_SEP); return !cs;],
|
||||||
|
estream_cv_langinfo_thousands_sep=yes,
|
||||||
|
estream_cv_langinfo_thousands_sep=no)
|
||||||
|
])
|
||||||
|
if test $estream_cv_langinfo_thousands_sep = yes; then
|
||||||
|
AC_DEFINE(HAVE_LANGINFO_THOUSANDS_SEP, 1,
|
||||||
|
[Define if you have <langinfo.h> and nl_langinfo(THOUSANDS_SEP).])
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl estream_INIT
|
||||||
|
dnl Prepare build of source included estream.c
|
||||||
|
dnl
|
||||||
|
AC_DEFUN([estream_INIT],
|
||||||
|
[
|
||||||
|
AC_REQUIRE([estream_PRINTF_INIT])
|
||||||
|
AC_MSG_NOTICE([checking system features for estream])
|
||||||
|
|
||||||
|
])
|
Loading…
x
Reference in New Issue
Block a user