mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-02 12:01:32 +01:00
See ChangeLog: Tue Jun 1 16:01:46 CEST 1999 Werner Koch
This commit is contained in:
parent
c34c676958
commit
3dddf602dd
6
NEWS
6
NEWS
@ -1,8 +1,12 @@
|
|||||||
|
|
||||||
* New option -N to insert notations and a --set-policy-url.
|
* New option -N to insert notations and a --set-policy-url.
|
||||||
|
|
||||||
* New subcommand "delsig" in th edit menu.
|
* New subcommand "delsig" in the edit menu.
|
||||||
|
|
||||||
|
* The name of the output file is not anymore the one which is
|
||||||
|
embedded in the processed message, but the used filename with
|
||||||
|
the extension stripped. To revert to the old behaviour you can
|
||||||
|
use the option --use-embedded-filename.
|
||||||
|
|
||||||
Noteworthy changes in version 0.9.7
|
Noteworthy changes in version 0.9.7
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
|
3
TODO
3
TODO
@ -37,7 +37,6 @@ Nice to have
|
|||||||
* replace the keyserver stuff either by a call to a specialized
|
* replace the keyserver stuff either by a call to a specialized
|
||||||
utility and SOCKSify this utility.
|
utility and SOCKSify this utility.
|
||||||
* Do a real fix for bug #7 or document that it is a PGP 5 error.
|
* Do a real fix for bug #7 or document that it is a PGP 5 error.
|
||||||
* clearsig: Keep lineendings while writing the output of a clearsig
|
|
||||||
* preferences of hash algorithms are not yet used.
|
* preferences of hash algorithms are not yet used.
|
||||||
* new menu to delete signatures and list signature in menu
|
* new menu to delete signatures and list signature in menu
|
||||||
* Replace the SIGUSR1 stuff by semaphores to avoid loss of a signal.
|
* Replace the SIGUSR1 stuff by semaphores to avoid loss of a signal.
|
||||||
@ -52,8 +51,6 @@ Nice to have
|
|||||||
* the pubkey encrypt functions should do some sanity checks.
|
* the pubkey encrypt functions should do some sanity checks.
|
||||||
* dynload: implement the hint stuff.
|
* dynload: implement the hint stuff.
|
||||||
* "gpg filename.tar.gz.asc" sollte wie mit --verify funktionieren (-sab).
|
* "gpg filename.tar.gz.asc" sollte wie mit --verify funktionieren (-sab).
|
||||||
* Den Dateinamen aus der message nicht benutzen, sondern nur
|
|
||||||
das gpg/asc strippen.
|
|
||||||
* for messages created with "-t", it might make sense to append the
|
* for messages created with "-t", it might make sense to append the
|
||||||
verification status of the message to the output (i.e. write something to
|
verification status of the message to the output (i.e. write something to
|
||||||
the --output file and not only to stderr.
|
the --output file and not only to stderr.
|
||||||
|
@ -70,6 +70,9 @@
|
|||||||
/* and the real names of the random devices */
|
/* and the real names of the random devices */
|
||||||
#undef NAME_OF_DEV_RANDOM
|
#undef NAME_OF_DEV_RANDOM
|
||||||
#undef NAME_OF_DEV_URANDOM
|
#undef NAME_OF_DEV_URANDOM
|
||||||
|
/* Linux has an ioctl */
|
||||||
|
#undef HAVE_DEV_RANDOM_IOCTL
|
||||||
|
|
||||||
|
|
||||||
#undef USE_DYNAMIC_LINKING
|
#undef USE_DYNAMIC_LINKING
|
||||||
#undef HAVE_DL_DLOPEN
|
#undef HAVE_DL_DLOPEN
|
||||||
|
@ -33,6 +33,13 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
#if 0
|
||||||
|
#ifdef HAVE_LINUX_RANDOM_H
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#include <asm/types.h>
|
||||||
|
#include <linux/random.h>
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "ttyio.h"
|
#include "ttyio.h"
|
||||||
@ -48,6 +55,19 @@ static int open_device( const char *name, int minor );
|
|||||||
static int gather_random( void (*add)(const void*, size_t, int), int requester,
|
static int gather_random( void (*add)(const void*, size_t, int), int requester,
|
||||||
size_t length, int level );
|
size_t length, int level );
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
#ifdef HAVE_DEV_RANDOM_IOCTL
|
||||||
|
static ulong
|
||||||
|
get_entropy_count( int fd )
|
||||||
|
{
|
||||||
|
ulong count;
|
||||||
|
|
||||||
|
if( ioctl( fd, RNDGETENTCNT, &count ) == -1 )
|
||||||
|
g10_log_fatal("ioctl(RNDGETENTCNT) failed: %s\n", strerror(errno) );
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
/****************
|
/****************
|
||||||
* Used to open the Linux and xBSD /dev/random devices
|
* Used to open the Linux and xBSD /dev/random devices
|
||||||
@ -91,6 +111,11 @@ gather_random( void (*add)(const void*, size_t, int), int requester,
|
|||||||
fd = fd_urandom;
|
fd = fd_urandom;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
#ifdef HAVE_DEV_RANDOM_IOCTL
|
||||||
|
g10_log_info("entropy count of %d is %lu\n", fd, get_entropy_count(fd) );
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
while( length ) {
|
while( length ) {
|
||||||
fd_set rfds;
|
fd_set rfds;
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
|
32
configure.in
32
configure.in
@ -330,20 +330,40 @@ if test "$ac_cv_header_sys_shm_h" = "yes"; then
|
|||||||
AC_DEFINE(USE_SHM_COPROCESSING)
|
AC_DEFINE(USE_SHM_COPROCESSING)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
dnl
|
||||||
dnl check whether we have a random device
|
dnl check whether we have a random device
|
||||||
|
dnl
|
||||||
if test "$try_dev_random" = yes ; then
|
if test "$try_dev_random" = yes ; then
|
||||||
AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
|
AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
|
||||||
[if test -c "$NAME_OF_DEV_RANDOM" && test -c "$NAME_OF_DEV_URANDOM" ; then
|
[if test -c "$NAME_OF_DEV_RANDOM" && test -c "$NAME_OF_DEV_URANDOM" ; then
|
||||||
ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
|
ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
|
||||||
if test "$ac_cv_have_dev_random" = yes; then
|
if test "$ac_cv_have_dev_random" = yes; then
|
||||||
AC_DEFINE(HAVE_DEV_RANDOM)
|
AC_DEFINE(HAVE_DEV_RANDOM)
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
AC_MSG_CHECKING(for random device)
|
AC_MSG_CHECKING(for random device)
|
||||||
ac_cv_have_dev_random=no
|
ac_cv_have_dev_random=no
|
||||||
AC_MSG_RESULT(has been disabled)
|
AC_MSG_RESULT(has been disabled)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
dnl
|
||||||
|
dnl and whether this device supports ioctl
|
||||||
|
dnl (Note, that we should do a real test here)
|
||||||
|
dnl
|
||||||
|
if test "$ac_cv_have_dev_random" = yes ; then
|
||||||
|
AC_CHECK_HEADERS(linux/random.h)
|
||||||
|
AC_CACHE_CHECK(for random device ioctl, ac_cv_have_dev_random_ioctl,
|
||||||
|
[ if test "$ac_cv_header_linux_random_h" = yes ; then
|
||||||
|
ac_cv_have_dev_random_ioctl=yes;
|
||||||
|
else
|
||||||
|
ac_cv_have_dev_random_ioctl=no;
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
if test "$ac_cv_have_dev_random_ioctl" = yes; then
|
||||||
|
AC_DEFINE(HAVE_DEV_RANDOM_IOCTL)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
dnl
|
dnl
|
||||||
dnl Figure out the default linkage mode for cipher modules
|
dnl Figure out the default linkage mode for cipher modules
|
||||||
|
@ -1,26 +1,44 @@
|
|||||||
<!doctype book PUBLIC "-//Davenport//DTD DocBook V3.0//EN" [
|
<!doctype book PUBLIC "-//Davenport//DTD DocBook V3.0//EN" [
|
||||||
|
<!entity gnupg "GnuPG">
|
||||||
|
<!entity wwwgnu "http://www.gnu.org">
|
||||||
|
<!entity wwwgnupg "http://www.gnupg.org">
|
||||||
]>
|
]>
|
||||||
<book>
|
<book>
|
||||||
<bookinfo>
|
<bookinfo>
|
||||||
<title>The GNU Privacy Guard</title>
|
<title>The GNU Privacy Guard Manual</title>
|
||||||
|
<titleabbrev>GnuPG-Man</titleabbrev>
|
||||||
|
<edition>v0.0.0</edition>
|
||||||
<authorgroup>
|
<authorgroup>
|
||||||
<author> <firstname>Werner</firstname> <surname>Koch</surname>
|
<!-- Replace with your name and delete mine -->
|
||||||
<affiliation><address><email>wk@gnupg.org</email></address>
|
<author>
|
||||||
</affiliation>
|
<firstname>Joe</firstname>
|
||||||
|
<othername>D.</othername>
|
||||||
|
<surname>Foo</surname>
|
||||||
|
<authorblurb>
|
||||||
|
<para><email>joe@somewhere</email></para>
|
||||||
|
</authorblurb>
|
||||||
|
</author>
|
||||||
|
<author>
|
||||||
|
<firstname>Werner</firstname>
|
||||||
|
<surname>Koch</surname>
|
||||||
|
<authorblurb>
|
||||||
|
<para><email>wk@gnupg.org</email></para>
|
||||||
|
</authorblurb>
|
||||||
</author>
|
</author>
|
||||||
</authorgroup>
|
</authorgroup>
|
||||||
<!-- <version>last modified: <date></version> -->
|
<!-- note, it is possible to give more than 1 year -->
|
||||||
<copyright><year>1998</year><year>1998</year>
|
<copyright><year>1999</year>
|
||||||
<holder>Free Software Foundation, Inc.</holder>
|
<holder>Free Software Foundation, Inc.</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
|
<!-- We have to check, whether this is the right wording -->
|
||||||
<legalnotice>
|
<legalnotice>
|
||||||
<para>This documentation is free software; you can redistribute
|
<para>This manual is free software; you can redistribute
|
||||||
it and/or modify it under the terms of the GNU General Public
|
it and/or modify it under the terms of the GNU General Public
|
||||||
License as published by the Free Software Foundation; either
|
License as published by the Free Software Foundation; either
|
||||||
version 2 of the License, or (at your option) any later
|
version 2 of the License, or (at your option) any later
|
||||||
version.</para>
|
version.</para>
|
||||||
|
|
||||||
<para>This program is distributed in the hope that it will be
|
<para>This manual is distributed in the hope that it will be
|
||||||
useful, but WITHOUT ANY WARRANTY; without even the implied
|
useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||||
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||||
PURPOSE. See the GNU General Public License for more
|
PURPOSE. See the GNU General Public License for more
|
||||||
@ -32,61 +50,52 @@
|
|||||||
MA 02111-1307 USA</para>
|
MA 02111-1307 USA</para>
|
||||||
|
|
||||||
<para>For more details see the file COPYING in the source
|
<para>For more details see the file COPYING in the source
|
||||||
distribution of GNUPG.</para>
|
distribution of &gnupg;.</para>
|
||||||
</legalnotice>
|
</legalnotice>
|
||||||
</bookinfo>
|
</bookinfo>
|
||||||
|
|
||||||
|
<!-- Insert the table of contents -->
|
||||||
<toc></toc>
|
<toc></toc>
|
||||||
|
|
||||||
|
<!--*******************************************
|
||||||
|
********* the first chapter *************
|
||||||
|
*******************************************-->
|
||||||
<chapter id="intro">
|
<chapter id="intro">
|
||||||
<title>Introduction</title>
|
<title>Introduction</title>
|
||||||
<sect1 id="feedback">
|
<sect1 id="feedback">
|
||||||
<title>Feedback</title>
|
<title>Feedback</title>
|
||||||
|
<!-- Hope we can remove this ;-) -->
|
||||||
<para>Well, I'm German and I find it hard to express myself in
|
<para>Well, I'm German and I find it hard to express myself in
|
||||||
English. So if you find some phrases and/or words that I used
|
English. So if you find some phrases and/or words that I used
|
||||||
in a wrong way (and you will find them :-) ), please send me a
|
in a wrong way (and you will find them :-) ), please send me a
|
||||||
mail, to let me correct this. Please send me notes about
|
mail, to let me correct this. Please send me notes about
|
||||||
typos, too.</para>
|
typos, too.
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
|
|
||||||
<sect1 id="whatis">
|
<sect1 id="whatis">
|
||||||
<title>What is GNUPG</title>
|
<title>What is &gnupg;</title>
|
||||||
<para>GNUPG is a free data encryption and signing tool.
|
<para><ulink url="&wwwgnupg;">&gnupg;</> is a tool for digital
|
||||||
|
encryption and signing;
|
||||||
|
it is part of the <ulink url="&wwwgnu;">GNU Project</>.
|
||||||
|
|
||||||
<screen>
|
<para>It has these features:
|
||||||
<prompt/$/ <userinput>gpg --version</>
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>Exciting feature 1
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>Exciting feature 2
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
|
||||||
</screen>
|
<para>How to find out the version of &gnupg;
|
||||||
|
<screen>
|
||||||
|
<prompt/$/ <userinput>gpg --version</>
|
||||||
|
</screen>
|
||||||
|
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|
||||||
<reference>
|
|
||||||
<title>Manual Pages</title>
|
|
||||||
<partintro>
|
|
||||||
<para>These are some short man(1) pages</para>
|
|
||||||
</partintro>
|
|
||||||
<refentry>
|
|
||||||
<refmeta>
|
|
||||||
<refentrytitle>gpg</refentrytitle>
|
|
||||||
<manvolnum>1</manvolnum>
|
|
||||||
<refmiscinfo class="tools">GNU Tools</refmiscinfo></refmiscinfo>
|
|
||||||
</refmeta>
|
|
||||||
|
|
||||||
<refsynopsisdiv>
|
|
||||||
<synopsis>
|
|
||||||
<command>gpg</command>
|
|
||||||
<optional><parameter>options</parameter></optional>
|
|
||||||
<replaceable class="parameter">file name</replaceable>
|
|
||||||
</synopsis>
|
|
||||||
<refpurpose>is the GNU tool for signing and encryption</>
|
|
||||||
<refsect1>
|
|
||||||
<title>Description</title>
|
|
||||||
<para> </para>
|
|
||||||
</refsect1>
|
|
||||||
</refentry>
|
|
||||||
</reference>
|
|
||||||
|
|
||||||
</book>
|
</book>
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
Tue Jun 1 16:01:46 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||||
|
|
||||||
|
* openfile.c (make_outfile_name): New.
|
||||||
|
* plaintext.c (handle_plaintext): Outputfile is now the inputfile
|
||||||
|
without the suffix.
|
||||||
|
* g10.c: New option --use-embedded-filename
|
||||||
|
|
||||||
Mon May 31 19:41:10 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
Mon May 31 19:41:10 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||||
|
|
||||||
* g10.c (main): Fix for SHM init (Michael).
|
* g10.c (main): Fix for SHM init (Michael).
|
||||||
|
@ -144,6 +144,7 @@ enum cmd_and_opt_values { aNull = 0,
|
|||||||
oRunAsShmCP,
|
oRunAsShmCP,
|
||||||
oSetFilename,
|
oSetFilename,
|
||||||
oSetPolicyURL,
|
oSetPolicyURL,
|
||||||
|
oUseEmbeddedFilename,
|
||||||
oComment,
|
oComment,
|
||||||
oThrowKeyid,
|
oThrowKeyid,
|
||||||
oForceV3Sigs,
|
oForceV3Sigs,
|
||||||
@ -301,6 +302,7 @@ static ARGPARSE_OPTS opts[] = {
|
|||||||
{ oEscapeFrom, "escape-from-lines", 0, "@" },
|
{ oEscapeFrom, "escape-from-lines", 0, "@" },
|
||||||
{ oLockOnce, "lock-once", 0, "@" },
|
{ oLockOnce, "lock-once", 0, "@" },
|
||||||
{ oLoggerFD, "logger-fd",1, "@" },
|
{ oLoggerFD, "logger-fd",1, "@" },
|
||||||
|
{ oUseEmbeddedFilename, "use-embedded-filename", 0, "@" },
|
||||||
{0} };
|
{0} };
|
||||||
|
|
||||||
|
|
||||||
@ -718,6 +720,7 @@ main( int argc, char **argv )
|
|||||||
break;
|
break;
|
||||||
case oSetFilename: opt.set_filename = pargs.r.ret_str; break;
|
case oSetFilename: opt.set_filename = pargs.r.ret_str; break;
|
||||||
case oSetPolicyURL: opt.set_policy_url = pargs.r.ret_str; break;
|
case oSetPolicyURL: opt.set_policy_url = pargs.r.ret_str; break;
|
||||||
|
case oUseEmbeddedFilename: opt.use_embedded_filename = 1; break;
|
||||||
case oComment: opt.comment_string = pargs.r.ret_str; break;
|
case oComment: opt.comment_string = pargs.r.ret_str; break;
|
||||||
case oThrowKeyid: opt.throw_keyid = 1; break;
|
case oThrowKeyid: opt.throw_keyid = 1; break;
|
||||||
case oForceV3Sigs: opt.force_v3_sigs = 1; break;
|
case oForceV3Sigs: opt.force_v3_sigs = 1; break;
|
||||||
|
@ -96,6 +96,7 @@ int generate_subkeypair( KBNODE pub_keyblock, KBNODE sec_keyblock );
|
|||||||
|
|
||||||
/*-- openfile.c --*/
|
/*-- openfile.c --*/
|
||||||
int overwrite_filep( const char *fname );
|
int overwrite_filep( const char *fname );
|
||||||
|
char *make_outfile_name( const char *iname );
|
||||||
int open_outfile( const char *iname, int mode, IOBUF *a );
|
int open_outfile( const char *iname, int mode, IOBUF *a );
|
||||||
IOBUF open_sigfile( const char *iname );
|
IOBUF open_sigfile( const char *iname );
|
||||||
void copy_options_file( const char *destdir );
|
void copy_options_file( const char *destdir );
|
||||||
|
@ -70,6 +70,36 @@ overwrite_filep( const char *fname )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/****************
|
||||||
|
* Strip know extensions from iname and return a newly allocated
|
||||||
|
* filename. Return NULL if we can't do that.
|
||||||
|
*/
|
||||||
|
char *
|
||||||
|
make_outfile_name( const char *iname )
|
||||||
|
{
|
||||||
|
size_t n;
|
||||||
|
|
||||||
|
if( (!iname || (*iname=='-' && !iname[1]) ))
|
||||||
|
return m_strdup("-");
|
||||||
|
|
||||||
|
#ifdef HAVE_DRIVE_LETTERS
|
||||||
|
#warning add case insensitive compare
|
||||||
|
#endif
|
||||||
|
n = strlen(iname);
|
||||||
|
if( n > 4 && ( !strcmp(iname+n-4,".gpg")
|
||||||
|
|| !strcmp(iname+n-4,".sig")
|
||||||
|
|| !strcmp(iname+n-4,".asc") ) ) {
|
||||||
|
char *buf = m_strdup( iname );
|
||||||
|
buf[n-4] = 0;
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
log_error(_("%s: unknown suffix\n"), iname );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/****************
|
/****************
|
||||||
* Make an output filename for the inputfile INAME.
|
* Make an output filename for the inputfile INAME.
|
||||||
* Returns an IOBUF and an errorcode
|
* Returns an IOBUF and an errorcode
|
||||||
@ -108,6 +138,7 @@ open_outfile( const char *iname, int mode, IOBUF *a )
|
|||||||
mode==2 ? ".sig" : ".gpg");
|
mode==2 ? ".sig" : ".gpg");
|
||||||
name = buf;
|
name = buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( overwrite_filep( name ) ) {
|
if( overwrite_filep( name ) ) {
|
||||||
if( !(*a = iobuf_create( name )) ) {
|
if( !(*a = iobuf_create( name )) ) {
|
||||||
log_error(_("%s: can't create: %s\n"), name, strerror(errno) );
|
log_error(_("%s: can't create: %s\n"), name, strerror(errno) );
|
||||||
@ -124,6 +155,7 @@ open_outfile( const char *iname, int mode, IOBUF *a )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/****************
|
/****************
|
||||||
* Try to open a file without the extension ".sig" or ".asc"
|
* Try to open a file without the extension ".sig" or ".asc"
|
||||||
* Return NULL if such a file is not available.
|
* Return NULL if such a file is not available.
|
||||||
|
@ -76,6 +76,7 @@ struct {
|
|||||||
int interactive;
|
int interactive;
|
||||||
STRLIST notation_data;
|
STRLIST notation_data;
|
||||||
const char *set_policy_url;
|
const char *set_policy_url;
|
||||||
|
int use_embedded_filename;
|
||||||
} opt;
|
} opt;
|
||||||
|
|
||||||
|
|
||||||
|
@ -63,6 +63,13 @@ handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx,
|
|||||||
log_info(_("data not saved; use option \"--output\" to save it\n"));
|
log_info(_("data not saved; use option \"--output\" to save it\n"));
|
||||||
nooutput = 1;
|
nooutput = 1;
|
||||||
}
|
}
|
||||||
|
else if( !opt.use_embedded_filename ) {
|
||||||
|
fname = make_outfile_name( iobuf_get_real_fname(pt->buf) );
|
||||||
|
if( !fname ) {
|
||||||
|
rc = G10ERR_CREATE_FILE;
|
||||||
|
goto leave;
|
||||||
|
}
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
fname = m_alloc( pt->namelen +1 );
|
fname = m_alloc( pt->namelen +1 );
|
||||||
memcpy( fname, pt->name, pt->namelen );
|
memcpy( fname, pt->name, pt->namelen );
|
||||||
@ -90,7 +97,7 @@ handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx,
|
|||||||
|
|
||||||
if( pt->len ) {
|
if( pt->len ) {
|
||||||
assert( !clearsig );
|
assert( !clearsig );
|
||||||
if( convert ) { // text mode
|
if( convert ) { /* text mode */
|
||||||
for( ; pt->len; pt->len-- ) {
|
for( ; pt->len; pt->len-- ) {
|
||||||
if( (c = iobuf_get(pt->buf)) == -1 ) {
|
if( (c = iobuf_get(pt->buf)) == -1 ) {
|
||||||
log_error("Problem reading source (%u bytes remaining)\n",
|
log_error("Problem reading source (%u bytes remaining)\n",
|
||||||
@ -112,7 +119,7 @@ handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { // binary mode
|
else { /* binary mode */
|
||||||
byte *buffer = m_alloc( 32768 );
|
byte *buffer = m_alloc( 32768 );
|
||||||
while( pt->len ) {
|
while( pt->len ) {
|
||||||
int len = pt->len > 32768 ? 32768 : pt->len;
|
int len = pt->len > 32768 ? 32768 : pt->len;
|
||||||
@ -141,7 +148,7 @@ handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( !clearsig ) {
|
else if( !clearsig ) {
|
||||||
if( convert ) { // text mode
|
if( convert ) { /* text mode */
|
||||||
while( (c = iobuf_get(pt->buf)) != -1 ) {
|
while( (c = iobuf_get(pt->buf)) != -1 ) {
|
||||||
if( mfx->md )
|
if( mfx->md )
|
||||||
md_putc(mfx->md, c );
|
md_putc(mfx->md, c );
|
||||||
@ -157,7 +164,7 @@ handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { // binary mode
|
else { /* binary mode */
|
||||||
byte *buffer = m_alloc( 32768 );
|
byte *buffer = m_alloc( 32768 );
|
||||||
for( ;; ) {
|
for( ;; ) {
|
||||||
int len = iobuf_read( pt->buf, buffer, 32768 );
|
int len = iobuf_read( pt->buf, buffer, 32768 );
|
||||||
|
@ -56,6 +56,7 @@ struct iobuf_struct {
|
|||||||
IOBUF chain, byte *buf, size_t *len);
|
IOBUF chain, byte *buf, size_t *len);
|
||||||
void *filter_ov; /* value for opaque */
|
void *filter_ov; /* value for opaque */
|
||||||
int filter_ov_owner;
|
int filter_ov_owner;
|
||||||
|
char *real_fname;
|
||||||
IOBUF chain; /* next iobuf used for i/o if any (passed to filter) */
|
IOBUF chain; /* next iobuf used for i/o if any (passed to filter) */
|
||||||
int no, subno;
|
int no, subno;
|
||||||
const char *desc;
|
const char *desc;
|
||||||
@ -114,6 +115,7 @@ size_t iobuf_temp_to_buffer( IOBUF a, byte *buffer, size_t buflen );
|
|||||||
void iobuf_unget_and_close_temp( IOBUF a, IOBUF temp );
|
void iobuf_unget_and_close_temp( IOBUF a, IOBUF temp );
|
||||||
|
|
||||||
u32 iobuf_get_filelength( IOBUF a );
|
u32 iobuf_get_filelength( IOBUF a );
|
||||||
|
const char *iobuf_get_real_fname( IOBUF a );
|
||||||
const char *iobuf_get_fname( IOBUF a );
|
const char *iobuf_get_fname( IOBUF a );
|
||||||
|
|
||||||
void iobuf_set_block_mode( IOBUF a, size_t n );
|
void iobuf_set_block_mode( IOBUF a, size_t n );
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
Tue Jun 1 16:01:46 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||||
|
|
||||||
|
* config.links (i[56]86*-*-freebsdelf*): New.
|
||||||
|
|
||||||
Sun May 23 14:20:22 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
Sun May 23 14:20:22 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||||
|
|
||||||
* config.links (sysdep.h): Not any more conditionally created.
|
* config.links (sysdep.h): Not any more conditionally created.
|
||||||
|
@ -12,12 +12,12 @@ echo '/* created by config.links - do not edit */' >./mpi/asm-syntax.h
|
|||||||
|
|
||||||
if test "$try_asm_modules" = "yes" ; then
|
if test "$try_asm_modules" = "yes" ; then
|
||||||
case "${target}" in
|
case "${target}" in
|
||||||
i[34]86*-*-freebsd*-elf | i[34]86*-*-freebsd[34]*)
|
i[34]86*-*-freebsd*-elf | i[34]86*-*-freebsd[34]* | i[34]86*-*-freebsdelf*)
|
||||||
echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
|
echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
|
||||||
cat $srcdir/mpi/i386/syntax.h >>./mpi/asm-syntax.h
|
cat $srcdir/mpi/i386/syntax.h >>./mpi/asm-syntax.h
|
||||||
path="i386"
|
path="i386"
|
||||||
;;
|
;;
|
||||||
i[56]86*-*-freebsd*-elf | i[56]86*-*-freebsd[34]*)
|
i[56]86*-*-freebsd*-elf | i[56]86*-*-freebsd[34]* | i[56]86*-*-freebsdelf*)
|
||||||
echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
|
echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
|
||||||
cat $srcdir/mpi/i386/syntax.h >>./mpi/asm-syntax.h
|
cat $srcdir/mpi/i386/syntax.h >>./mpi/asm-syntax.h
|
||||||
path="i586 i386"
|
path="i586 i386"
|
||||||
|
@ -103,6 +103,12 @@ mpi_alloc_secure( unsigned nlimbs )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
static void *unused_limbs_5;
|
||||||
|
static void *unused_limbs_32;
|
||||||
|
static void *unused_limbs_64;
|
||||||
|
#endif
|
||||||
|
|
||||||
mpi_ptr_t
|
mpi_ptr_t
|
||||||
#ifdef M_DEBUG
|
#ifdef M_DEBUG
|
||||||
mpi_debug_alloc_limb_space( unsigned nlimbs, int secure, const char *info )
|
mpi_debug_alloc_limb_space( unsigned nlimbs, int secure, const char *info )
|
||||||
@ -111,14 +117,37 @@ mpi_alloc_limb_space( unsigned nlimbs, int secure )
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
size_t len = nlimbs * sizeof(mpi_limb_t);
|
size_t len = nlimbs * sizeof(mpi_limb_t);
|
||||||
|
mpi_ptr_t p;
|
||||||
|
|
||||||
if( DBG_MEMORY )
|
if( DBG_MEMORY )
|
||||||
log_debug("mpi_alloc_limb_space(%u)\n", (unsigned)len*8 );
|
log_debug("mpi_alloc_limb_space(%u)\n", (unsigned)len*8 );
|
||||||
#ifdef M_DEBUG
|
#if 0
|
||||||
return secure? m_debug_alloc_secure(len, info):m_debug_alloc( len, info );
|
if( !secure ) {
|
||||||
#else
|
if( nlimbs == 5 && unused_limbs_5 ) { /* DSA 160 bits */
|
||||||
return secure? m_alloc_secure( len ):m_alloc( len );
|
p = unused_limbs_5;
|
||||||
|
unused_limbs_5 = *p;
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
else if( nlimbs == 32 && unused_limbs_32 ) { /* DSA 1024 bits */
|
||||||
|
p = unused_limbs_32;
|
||||||
|
unused_limbs_32 = *p;
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
else if( nlimbs == 64 && unused_limbs_64 ) { /* DSA 2*1024 bits */
|
||||||
|
p = unused_limbs_64;
|
||||||
|
unused_limbs_64 = *p;
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef M_DEBUG
|
||||||
|
p = secure? m_debug_alloc_secure(len, info):m_debug_alloc( len, info );
|
||||||
|
#else
|
||||||
|
p = secure? m_alloc_secure( len ):m_alloc( len );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -132,6 +161,31 @@ mpi_free_limb_space( mpi_ptr_t a )
|
|||||||
return;
|
return;
|
||||||
if( DBG_MEMORY )
|
if( DBG_MEMORY )
|
||||||
log_debug("mpi_free_limb_space of size %lu\n", (ulong)m_size(a)*8 );
|
log_debug("mpi_free_limb_space of size %lu\n", (ulong)m_size(a)*8 );
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
if( !m_is_secure(a) ) {
|
||||||
|
size_t nlimbs = m_size(a) / 4 ;
|
||||||
|
void *p = a;
|
||||||
|
|
||||||
|
if( nlimbs == 5 ) { /* DSA 160 bits */
|
||||||
|
*a = unused_limbs_5;
|
||||||
|
unused_limbs_5 = a;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if( nlimbs == 32 ) { /* DSA 1024 bits */
|
||||||
|
*a = unused_limbs_32;
|
||||||
|
unused_limbs_32 = a;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if( nlimbs == 64 ) { /* DSA 2*1024 bits */
|
||||||
|
*a = unused_limbs_64;
|
||||||
|
unused_limbs_64 = a;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
m_free(a);
|
m_free(a);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
Tue Jun 1 16:01:46 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||||
|
|
||||||
|
* iobuf.c (iobuf_get_real_fname): Made global and now keep a
|
||||||
|
copy of the name in the iobuf struct.
|
||||||
|
|
||||||
Mon May 31 19:41:10 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
Mon May 31 19:41:10 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||||
|
|
||||||
* iobuf.c (file_filter,block_filter): Speed patches (Rémi).
|
* iobuf.c (file_filter,block_filter): Speed patches (Rémi).
|
||||||
|
42
util/iobuf.c
42
util/iobuf.c
@ -58,7 +58,6 @@ typedef struct {
|
|||||||
|
|
||||||
|
|
||||||
static int underflow(IOBUF a);
|
static int underflow(IOBUF a);
|
||||||
static const char *get_real_fname( IOBUF a );
|
|
||||||
|
|
||||||
/****************
|
/****************
|
||||||
* Read data from a file into buf which has an allocated length of *LEN.
|
* Read data from a file into buf which has an allocated length of *LEN.
|
||||||
@ -449,6 +448,7 @@ iobuf_alloc(int use, size_t bufsize)
|
|||||||
a->no = ++number;
|
a->no = ++number;
|
||||||
a->subno = 0;
|
a->subno = 0;
|
||||||
a->opaque = NULL;
|
a->opaque = NULL;
|
||||||
|
a->real_fname = NULL;
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -462,6 +462,7 @@ iobuf_close( IOBUF a )
|
|||||||
|
|
||||||
if( a && a->directfp ) {
|
if( a && a->directfp ) {
|
||||||
fclose( a->directfp );
|
fclose( a->directfp );
|
||||||
|
m_free( a->real_fname );
|
||||||
if( DBG_IOBUF )
|
if( DBG_IOBUF )
|
||||||
log_debug("iobuf_close -> %p\n", a->directfp );
|
log_debug("iobuf_close -> %p\n", a->directfp );
|
||||||
return 0;
|
return 0;
|
||||||
@ -477,6 +478,7 @@ iobuf_close( IOBUF a )
|
|||||||
if( a->filter && (rc = a->filter(a->filter_ov, IOBUFCTRL_FREE,
|
if( a->filter && (rc = a->filter(a->filter_ov, IOBUFCTRL_FREE,
|
||||||
a->chain, NULL, &dummy_len)) )
|
a->chain, NULL, &dummy_len)) )
|
||||||
log_error("IOBUFCTRL_FREE failed on close: %s\n", g10_errstr(rc) );
|
log_error("IOBUFCTRL_FREE failed on close: %s\n", g10_errstr(rc) );
|
||||||
|
m_free(a->real_fname);
|
||||||
m_free(a->d.buf);
|
m_free(a->d.buf);
|
||||||
m_free(a);
|
m_free(a);
|
||||||
}
|
}
|
||||||
@ -489,7 +491,7 @@ iobuf_cancel( IOBUF a )
|
|||||||
const char *s;
|
const char *s;
|
||||||
|
|
||||||
if( a && a->use == 2 ) {
|
if( a && a->use == 2 ) {
|
||||||
s = get_real_fname(a);
|
s = iobuf_get_real_fname(a);
|
||||||
if( s && *s )
|
if( s && *s )
|
||||||
remove(s); /* remove the file. Fixme: this will fail for MSDOZE*/
|
remove(s); /* remove the file. Fixme: this will fail for MSDOZE*/
|
||||||
} /* because the file is still open */
|
} /* because the file is still open */
|
||||||
@ -550,6 +552,8 @@ iobuf_open( const char *fname )
|
|||||||
fcx->fp = fp;
|
fcx->fp = fp;
|
||||||
fcx->print_only_name = print_only;
|
fcx->print_only_name = print_only;
|
||||||
strcpy(fcx->fname, fname );
|
strcpy(fcx->fname, fname );
|
||||||
|
if( !print_only )
|
||||||
|
a->real_fname = m_strdup( fname );
|
||||||
a->filter = file_filter;
|
a->filter = file_filter;
|
||||||
a->filter_ov = fcx;
|
a->filter_ov = fcx;
|
||||||
file_filter( fcx, IOBUFCTRL_DESC, NULL, (byte*)&a->desc, &len );
|
file_filter( fcx, IOBUFCTRL_DESC, NULL, (byte*)&a->desc, &len );
|
||||||
@ -614,6 +618,8 @@ iobuf_create( const char *fname )
|
|||||||
fcx->fp = fp;
|
fcx->fp = fp;
|
||||||
fcx->print_only_name = print_only;
|
fcx->print_only_name = print_only;
|
||||||
strcpy(fcx->fname, fname );
|
strcpy(fcx->fname, fname );
|
||||||
|
if( !print_only )
|
||||||
|
a->real_fname = m_strdup( fname );
|
||||||
a->filter = file_filter;
|
a->filter = file_filter;
|
||||||
a->filter_ov = fcx;
|
a->filter_ov = fcx;
|
||||||
file_filter( fcx, IOBUFCTRL_DESC, NULL, (byte*)&a->desc, &len );
|
file_filter( fcx, IOBUFCTRL_DESC, NULL, (byte*)&a->desc, &len );
|
||||||
@ -644,6 +650,7 @@ iobuf_append( const char *fname )
|
|||||||
fcx = m_alloc( sizeof *fcx + strlen(fname) );
|
fcx = m_alloc( sizeof *fcx + strlen(fname) );
|
||||||
fcx->fp = fp;
|
fcx->fp = fp;
|
||||||
strcpy(fcx->fname, fname );
|
strcpy(fcx->fname, fname );
|
||||||
|
a->real_fname = m_strdup( fname );
|
||||||
a->filter = file_filter;
|
a->filter = file_filter;
|
||||||
a->filter_ov = fcx;
|
a->filter_ov = fcx;
|
||||||
file_filter( fcx, IOBUFCTRL_DESC, NULL, (byte*)&a->desc, &len );
|
file_filter( fcx, IOBUFCTRL_DESC, NULL, (byte*)&a->desc, &len );
|
||||||
@ -670,6 +677,7 @@ iobuf_openrw( const char *fname )
|
|||||||
fcx = m_alloc( sizeof *fcx + strlen(fname) );
|
fcx = m_alloc( sizeof *fcx + strlen(fname) );
|
||||||
fcx->fp = fp;
|
fcx->fp = fp;
|
||||||
strcpy(fcx->fname, fname );
|
strcpy(fcx->fname, fname );
|
||||||
|
a->real_fname = m_strdup( fname );
|
||||||
a->filter = file_filter;
|
a->filter = file_filter;
|
||||||
a->filter_ov = fcx;
|
a->filter_ov = fcx;
|
||||||
file_filter( fcx, IOBUFCTRL_DESC, NULL, (byte*)&a->desc, &len );
|
file_filter( fcx, IOBUFCTRL_DESC, NULL, (byte*)&a->desc, &len );
|
||||||
@ -703,6 +711,7 @@ iobuf_fopen( const char *fname, const char *mode )
|
|||||||
return NULL;
|
return NULL;
|
||||||
a = iobuf_alloc(1, 8192 );
|
a = iobuf_alloc(1, 8192 );
|
||||||
a->directfp = fp;
|
a->directfp = fp;
|
||||||
|
a->real_fname = m_strdup( fname );
|
||||||
|
|
||||||
if( DBG_IOBUF )
|
if( DBG_IOBUF )
|
||||||
log_debug("iobuf_fopen -> %p\n", a->directfp );
|
log_debug("iobuf_fopen -> %p\n", a->directfp );
|
||||||
@ -745,6 +754,10 @@ iobuf_push_filter2( IOBUF a,
|
|||||||
*/
|
*/
|
||||||
b = m_alloc(sizeof *b);
|
b = m_alloc(sizeof *b);
|
||||||
memcpy(b, a, sizeof *b );
|
memcpy(b, a, sizeof *b );
|
||||||
|
/* fixme: it is stupid to keep a copy of the name at every level
|
||||||
|
* but we need the name somewhere because the name known by file_filter
|
||||||
|
* may have been released when we need the name of the file */
|
||||||
|
b->real_fname = a->real_fname? m_strdup(a->real_fname):NULL;
|
||||||
/* remove the filter stuff from the new stream */
|
/* remove the filter stuff from the new stream */
|
||||||
a->filter = NULL;
|
a->filter = NULL;
|
||||||
a->filter_ov = NULL;
|
a->filter_ov = NULL;
|
||||||
@ -811,6 +824,7 @@ pop_filter( IOBUF a, int (*f)(void *opaque, int control,
|
|||||||
b = a->chain;
|
b = a->chain;
|
||||||
assert(b);
|
assert(b);
|
||||||
m_free(a->d.buf);
|
m_free(a->d.buf);
|
||||||
|
m_free(a->real_fname);
|
||||||
memcpy(a,b, sizeof *a);
|
memcpy(a,b, sizeof *a);
|
||||||
m_free(b);
|
m_free(b);
|
||||||
return 0;
|
return 0;
|
||||||
@ -847,6 +861,7 @@ pop_filter( IOBUF a, int (*f)(void *opaque, int control,
|
|||||||
*/
|
*/
|
||||||
b = a->chain;
|
b = a->chain;
|
||||||
m_free(a->d.buf);
|
m_free(a->d.buf);
|
||||||
|
m_free(a->real_fname);
|
||||||
memcpy(a,b, sizeof *a);
|
memcpy(a,b, sizeof *a);
|
||||||
m_free(b);
|
m_free(b);
|
||||||
if( DBG_IOBUF )
|
if( DBG_IOBUF )
|
||||||
@ -884,6 +899,7 @@ underflow(IOBUF a)
|
|||||||
log_debug("iobuf-%d.%d: pop `%s' in underflow\n",
|
log_debug("iobuf-%d.%d: pop `%s' in underflow\n",
|
||||||
a->no, a->subno, a->desc );
|
a->no, a->subno, a->desc );
|
||||||
m_free(a->d.buf);
|
m_free(a->d.buf);
|
||||||
|
m_free(a->real_fname);
|
||||||
memcpy(a, b, sizeof *a);
|
memcpy(a, b, sizeof *a);
|
||||||
m_free(b);
|
m_free(b);
|
||||||
print_chain(a);
|
print_chain(a);
|
||||||
@ -952,6 +968,7 @@ underflow(IOBUF a)
|
|||||||
a->no, a->subno, a->desc );
|
a->no, a->subno, a->desc );
|
||||||
print_chain(a);
|
print_chain(a);
|
||||||
m_free(a->d.buf);
|
m_free(a->d.buf);
|
||||||
|
m_free(a->real_fname);
|
||||||
memcpy(a,b, sizeof *a);
|
memcpy(a,b, sizeof *a);
|
||||||
m_free(b);
|
m_free(b);
|
||||||
print_chain(a);
|
print_chain(a);
|
||||||
@ -1075,18 +1092,22 @@ iobuf_read(IOBUF a, byte *buf, unsigned buflen )
|
|||||||
do {
|
do {
|
||||||
if( n < buflen && a->d.start < a->d.len ) {
|
if( n < buflen && a->d.start < a->d.len ) {
|
||||||
unsigned size = a->d.len - a->d.start;
|
unsigned size = a->d.len - a->d.start;
|
||||||
if( size > buflen - n ) size = buflen - n;
|
if( size > buflen - n )
|
||||||
if( buf ) memcpy( buf, a->d.buf + a->d.start, size );
|
size = buflen - n;
|
||||||
|
if( buf )
|
||||||
|
memcpy( buf, a->d.buf + a->d.start, size );
|
||||||
n += size;
|
n += size;
|
||||||
a->d.start += size;
|
a->d.start += size;
|
||||||
if( buf ) buf += size;
|
if( buf )
|
||||||
|
buf += size;
|
||||||
}
|
}
|
||||||
if( n < buflen ) {
|
if( n < buflen ) {
|
||||||
if( (c=underflow(a)) == -1 ) {
|
if( (c=underflow(a)) == -1 ) {
|
||||||
a->nbytes += n;
|
a->nbytes += n;
|
||||||
return n? n : -1/*EOF*/;
|
return n? n : -1/*EOF*/;
|
||||||
}
|
}
|
||||||
if( buf ) *buf++ = c;
|
if( buf )
|
||||||
|
*buf++ = c;
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
} while( n < buflen );
|
} while( n < buflen );
|
||||||
@ -1251,6 +1272,7 @@ iobuf_get_filelength( IOBUF a )
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Hmmm: file_filter may have already been removed */
|
||||||
for( ; a; a = a->chain )
|
for( ; a; a = a->chain )
|
||||||
if( !a->chain && a->filter == file_filter ) {
|
if( !a->chain && a->filter == file_filter ) {
|
||||||
file_filter_ctx_t *b = a->filter_ov;
|
file_filter_ctx_t *b = a->filter_ov;
|
||||||
@ -1331,9 +1353,13 @@ iobuf_seek( IOBUF a, ulong newpos )
|
|||||||
/****************
|
/****************
|
||||||
* Retrieve the real filename
|
* Retrieve the real filename
|
||||||
*/
|
*/
|
||||||
static const char *
|
const char *
|
||||||
get_real_fname( IOBUF a )
|
iobuf_get_real_fname( IOBUF a )
|
||||||
{
|
{
|
||||||
|
if( a->real_fname )
|
||||||
|
return a->real_fname;
|
||||||
|
|
||||||
|
/* the old solution */
|
||||||
for( ; a; a = a->chain )
|
for( ; a; a = a->chain )
|
||||||
if( !a->chain && a->filter == file_filter ) {
|
if( !a->chain && a->filter == file_filter ) {
|
||||||
file_filter_ctx_t *b = a->filter_ov;
|
file_filter_ctx_t *b = a->filter_ov;
|
||||||
|
@ -48,9 +48,10 @@
|
|||||||
#define EXTRA_ALIGN 0
|
#define EXTRA_ALIGN 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void membug( const char *fmt, ... );
|
|
||||||
|
|
||||||
#ifdef M_DEBUG
|
#ifdef M_DEBUG
|
||||||
|
static void membug( const char *fmt, ... );
|
||||||
|
|
||||||
#ifndef M_GUARD
|
#ifndef M_GUARD
|
||||||
#define M_GUARD 1
|
#define M_GUARD 1
|
||||||
#endif
|
#endif
|
||||||
@ -318,7 +319,6 @@ check_allmem( const char *info )
|
|||||||
check_mem(e->user_p-4-EXTRA_ALIGN, info);
|
check_mem(e->user_p-4-EXTRA_ALIGN, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* M_DEBUG */
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
membug( const char *fmt, ... )
|
membug( const char *fmt, ... )
|
||||||
@ -337,6 +337,7 @@ membug( const char *fmt, ... )
|
|||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* M_DEBUG */
|
||||||
|
|
||||||
void
|
void
|
||||||
m_print_stats( const char *prefix )
|
m_print_stats( const char *prefix )
|
||||||
|
Loading…
x
Reference in New Issue
Block a user