aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/ChangeLog12
-rw-r--r--include/cipher.h167
-rw-r--r--include/errors.h16
-rw-r--r--include/iobuf.h161
-rw-r--r--include/mpi.h7
-rw-r--r--include/ttyio.h40
-rw-r--r--include/types.h6
-rw-r--r--include/util.h20
8 files changed, 71 insertions, 358 deletions
diff --git a/include/ChangeLog b/include/ChangeLog
index 3df94bb43..0b1001c3b 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,15 @@
+2003-06-11 Werner Koch <[email protected]>
+
+ * cipher.h: Include gcrypt.h and mapped cipher algo names to
+ gcrypt ones. Removed twofish_old and skipjack. Removed all
+ handle definitions and other raerely used stuff. This file will
+ eventually be entirely removed.
+
+
+2003-06-10 Werner Koch <[email protected]>
+
+ * types.h (struct strlist): Removed.
+
2003-05-24 David Shaw <[email protected]>
* cipher.h, i18n.h, iobuf.h, memory.h, mpi.h, types.h, util.h:
diff --git a/include/cipher.h b/include/cipher.h
index 23a5aeb0d..3058a2ce0 100644
--- a/include/cipher.h
+++ b/include/cipher.h
@@ -22,46 +22,42 @@
#define DBG_CIPHER g10c_debug_mode
-#include "mpi.h"
-#include "../cipher/random.h"
-
-
-#define CIPHER_ALGO_NONE 0
-#define CIPHER_ALGO_IDEA 1
-#define CIPHER_ALGO_3DES 2
-#define CIPHER_ALGO_CAST5 3
-#define CIPHER_ALGO_BLOWFISH 4 /* blowfish 128 bit key */
-#define CIPHER_ALGO_SAFER_SK128 5
-#define CIPHER_ALGO_DES_SK 6
-#define CIPHER_ALGO_AES 7
-#define CIPHER_ALGO_AES192 8
-#define CIPHER_ALGO_AES256 9
+#include <gcrypt.h>
+
+#define CIPHER_ALGO_NONE GCRY_CIPHER_NONE
+#define CIPHER_ALGO_IDEA GCRY_CIPHER_IDEA
+#define CIPHER_ALGO_3DES GCRY_CIPHER_3DES
+#define CIPHER_ALGO_CAST5 GCRY_CIPHER_CAST5
+#define CIPHER_ALGO_BLOWFISH GCRY_CIPHER_BLOWFISH /* 128 bit */
+#define CIPHER_ALGO_SAFER_SK128 GCRY_CIPHER_SK128
+#define CIPHER_ALGO_DES_SK GCRY_CIPHER_DES_SK
+#define CIPHER_ALGO_AES GCRY_CIPHER_AES
+#define CIPHER_ALGO_AES192 GCRY_CIPHER_AES192
+#define CIPHER_ALGO_AES256 GCRY_CIPHER_AES256
#define CIPHER_ALGO_RIJNDAEL CIPHER_ALGO_AES
#define CIPHER_ALGO_RIJNDAEL192 CIPHER_ALGO_AES192
#define CIPHER_ALGO_RIJNDAEL256 CIPHER_ALGO_AES256
-#define CIPHER_ALGO_TWOFISH 10 /* twofish 256 bit */
-#define CIPHER_ALGO_SKIPJACK 101 /* experimental: skipjack */
-#define CIPHER_ALGO_TWOFISH_OLD 102 /* experimental: twofish 128 bit */
+#define CIPHER_ALGO_TWOFISH GCRY_CIPHER_TWOFISH /* 256 bit */
#define CIPHER_ALGO_DUMMY 110 /* no encryption at all */
-#define PUBKEY_ALGO_RSA 1
-#define PUBKEY_ALGO_RSA_E 2 /* RSA encrypt only */
-#define PUBKEY_ALGO_RSA_S 3 /* RSA sign only */
-#define PUBKEY_ALGO_ELGAMAL_E 16 /* encrypt only ElGamal (but not for v3)*/
-#define PUBKEY_ALGO_DSA 17
-#define PUBKEY_ALGO_ELGAMAL 20 /* sign and encrypt elgamal */
+#define PUBKEY_ALGO_RSA GCRY_PK_RSA
+#define PUBKEY_ALGO_RSA_E GCRY_PK_RSA_E
+#define PUBKEY_ALGO_RSA_S GCRY_PK_RSA_S
+#define PUBKEY_ALGO_ELGAMAL_E GCRY_PK_ELG_E
+#define PUBKEY_ALGO_DSA GCRY_PK_DSA
+#define PUBKEY_ALGO_ELGAMAL GCRY_PK_ELG
-#define PUBKEY_USAGE_SIG 1 /* key is good for signatures */
-#define PUBKEY_USAGE_ENC 2 /* key is good for encryption */
+#define PUBKEY_USAGE_SIG GCRY_PK_USAGE_SIGN
+#define PUBKEY_USAGE_ENC GCRY_PK_USAGE_ENCR
#define PUBKEY_USAGE_CERT 4 /* key is also good to certify other keys*/
-#define DIGEST_ALGO_MD5 1
-#define DIGEST_ALGO_SHA1 2
-#define DIGEST_ALGO_RMD160 3
-#define DIGEST_ALGO_TIGER 6
-#define DIGEST_ALGO_SHA256 8
-#define DIGEST_ALGO_SHA384 9
-#define DIGEST_ALGO_SHA512 10
+#define DIGEST_ALGO_MD5 GCRY_MD_MD5
+#define DIGEST_ALGO_SHA1 GCRY_MD_SHA1
+#define DIGEST_ALGO_RMD160 GCRY_MD_RMD160
+#define DIGEST_ALGO_TIGER GCRY_MD_TIGER
+#define DIGEST_ALGO_SHA256 GCRY_MD_SHA256
+#define DIGEST_ALGO_SHA384 GCRY_MD_SHA384
+#define DIGEST_ALGO_SHA512 GCRY_MD_SHA512
#define COMPRESS_ALGO_NONE 0
#define COMPRESS_ALGO_ZIP 1
@@ -79,30 +75,6 @@ typedef struct {
byte key[32]; /* this is the largest used keylen (256 bit) */
} DEK;
-struct cipher_handle_s;
-typedef struct cipher_handle_s *CIPHER_HANDLE;
-
-
-#define CIPHER_MODE_ECB 1
-#define CIPHER_MODE_CFB 2
-#define CIPHER_MODE_PHILS_CFB 3
-#define CIPHER_MODE_AUTO_CFB 4
-#define CIPHER_MODE_DUMMY 5 /* used with algo DUMMY for no encryption */
-#define CIPHER_MODE_CBC 6
-
-struct md_digest_list_s;
-
-struct gcry_md_context {
- int secure;
- FILE *debug;
- int finalized;
- struct md_digest_list_s *list;
- int bufcount;
- int bufsize;
- byte buffer[1];
-};
-
-typedef struct gcry_md_context *MD_HANDLE;
#ifndef EXTERN_UNLESS_MAIN_MODULE
#if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE)
@@ -116,90 +88,13 @@ EXTERN_UNLESS_MAIN_MODULE int g10_opt_verbose;
EXTERN_UNLESS_MAIN_MODULE const char *g10_opt_homedir;
-/*-- dynload.c --*/
-void register_cipher_extension( const char *mainpgm, const char *fname );
-
-/*-- md.c --*/
-int string_to_digest_algo( const char *string );
-const char * digest_algo_to_string( int algo );
-int check_digest_algo( int algo );
-MD_HANDLE md_open( int algo, int secure );
-void md_enable( MD_HANDLE hd, int algo );
-MD_HANDLE md_copy( MD_HANDLE a );
-void md_reset( MD_HANDLE a );
-void md_close(MD_HANDLE a);
-void md_write( MD_HANDLE a, const byte *inbuf, size_t inlen);
-void md_final(MD_HANDLE a);
-byte *md_read( MD_HANDLE a, int algo );
-int md_digest( MD_HANDLE a, int algo, byte *buffer, int buflen );
-int md_get_algo( MD_HANDLE a );
-int md_algo_present( MD_HANDLE a, int algo );
-int md_digest_length( int algo );
-const byte *md_asn_oid( int algo, size_t *asnlen, size_t *mdlen );
-void md_start_debug( MD_HANDLE a, const char *suffix );
-void md_stop_debug( MD_HANDLE a );
-#define md_is_secure(a) ((a)->secure)
-#define md_putc(h,c) \
- do { \
- if( (h)->bufcount == (h)->bufsize ) \
- md_write( (h), NULL, 0 ); \
- (h)->buffer[(h)->bufcount++] = (c) & 0xff; \
- } while(0)
-
-void rmd160_hash_buffer (char *outbuf, const char *buffer, size_t length);
-
-
-/*-- cipher.c --*/
-int string_to_cipher_algo( const char *string );
-const char * cipher_algo_to_string( int algo );
-void disable_cipher_algo( int algo );
-int check_cipher_algo( int algo );
-unsigned cipher_get_keylen( int algo );
-unsigned cipher_get_blocksize( int algo );
-CIPHER_HANDLE cipher_open( int algo, int mode, int secure );
-void cipher_close( CIPHER_HANDLE c );
-int cipher_setkey( CIPHER_HANDLE c, byte *key, unsigned keylen );
-void cipher_setiv( CIPHER_HANDLE c, const byte *iv, unsigned ivlen );
-void cipher_encrypt( CIPHER_HANDLE c, byte *out, byte *in, unsigned nbytes );
-void cipher_decrypt( CIPHER_HANDLE c, byte *out, byte *in, unsigned nbytes );
-void cipher_sync( CIPHER_HANDLE c );
-
-/*-- pubkey.c --*/
+
#define PUBKEY_MAX_NPKEY 4
#define PUBKEY_MAX_NSKEY 6
#define PUBKEY_MAX_NSIG 2
#define PUBKEY_MAX_NENC 2
-int string_to_pubkey_algo( const char *string );
-const char * pubkey_algo_to_string( int algo );
-void disable_pubkey_algo( int algo );
-int check_pubkey_algo( int algo );
-int check_pubkey_algo2( int algo, unsigned use );
-int pubkey_get_npkey( int algo );
-int pubkey_get_nskey( int algo );
-int pubkey_get_nsig( int algo );
-int pubkey_get_nenc( int algo );
-unsigned pubkey_nbits( int algo, MPI *pkey );
-int pubkey_generate( int algo, unsigned nbits, MPI *skey, MPI **retfactors );
-int pubkey_check_secret_key( int algo, MPI *skey );
-int pubkey_encrypt( int algo, MPI *resarr, MPI data, MPI *pkey );
-int pubkey_decrypt( int algo, MPI *result, MPI *data, MPI *skey );
-int pubkey_sign( int algo, MPI *resarr, MPI hash, MPI *skey );
-int pubkey_verify( int algo, MPI hash, MPI *data, MPI *pkey,
- int (*cmp)(void *, MPI), void *opaque );
-
-/*-- smallprime.c --*/
-extern ushort small_prime_numbers[];
-
-/*-- primegen.c --*/
-void register_primegen_progress ( void (*cb)( void *, int), void *cb_data );
-MPI generate_secret_prime( unsigned nbits );
-MPI generate_public_prime( unsigned nbits );
-MPI generate_elg_prime( int mode, unsigned pbits, unsigned qbits,
- MPI g, MPI **factors );
-
-/*-- elsewhere --*/
-void register_pk_dsa_progress ( void (*cb)( void *, int), void *cb_data );
-void register_pk_elg_progress ( void (*cb)( void *, int), void *cb_data );
+#define MD_HANDLE gcry_md_hd_t
+#define CIPHER_HANDLE gcry_cipher_hd_t
#endif /*G10_CIPHER_H*/
diff --git a/include/errors.h b/include/errors.h
index 8e1de0f16..ed437fa99 100644
--- a/include/errors.h
+++ b/include/errors.h
@@ -1,4 +1,4 @@
-/* errors.h - erro code
+/* errors.h - error code
* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
*
* This file is part of GNUPG.
@@ -25,6 +25,8 @@
#error from libgpg-error. The numerical values are identical, though.
#endif
+
+#if 0 /* Not used anymore. */
#define G10ERR_GENERAL 1
#define G10ERR_UNKNOWN_PACKET 2
#define G10ERR_UNKNOWN_VERSION 3 /* Unknown version (in packet) */
@@ -80,10 +82,20 @@
#define G10ERR_UNU_PUBKEY 53
#define G10ERR_UNU_SECKEY 54
#define G10ERR_KEYSERVER 55
-
+#endif
#ifndef HAVE_STRERROR
char *strerror( int n );
#endif
#endif /*GNUPG_INCLUDE_ERRORS_H*/
+
+
+
+
+
+
+
+
+
+
diff --git a/include/iobuf.h b/include/iobuf.h
deleted file mode 100644
index 9ae774207..000000000
--- a/include/iobuf.h
+++ /dev/null
@@ -1,161 +0,0 @@
-/* iobuf.h - I/O buffer
- * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
- *
- * This file is part of GNUPG.
- *
- * GNUPG 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.
- *
- * GNUPG 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 G10_IOBUF_H
-#define G10_IOBUF_H
-
-#include "types.h"
-
-
-#define DBG_IOBUF iobuf_debug_mode
-
-
-#define IOBUFCTRL_INIT 1
-#define IOBUFCTRL_FREE 2
-#define IOBUFCTRL_UNDERFLOW 3
-#define IOBUFCTRL_FLUSH 4
-#define IOBUFCTRL_DESC 5
-#define IOBUFCTRL_CANCEL 6
-#define IOBUFCTRL_USER 16
-
-typedef struct iobuf_struct *IOBUF;
-
-/* fixme: we should hide most of this stuff */
-struct iobuf_struct {
- int use; /* 1 input , 2 output, 3 temp */
- off_t nlimit;
- off_t nbytes; /* used together with nlimit */
- off_t ntotal; /* total bytes read (position of stream) */
- int nofast; /* used by the iobuf_get() */
- void *directfp;
- struct {
- size_t size; /* allocated size */
- size_t start; /* number of invalid bytes at the begin of the buffer */
- size_t len; /* currently filled to this size */
- byte *buf;
- } d;
- int filter_eof;
- int error;
- int (*filter)( void *opaque, int control,
- IOBUF chain, byte *buf, size_t *len);
- void *filter_ov; /* value for opaque */
- int filter_ov_owner;
- char *real_fname;
- IOBUF chain; /* next iobuf used for i/o if any (passed to filter) */
- int no, subno;
- const char *desc;
- void *opaque; /* can be used to hold any information */
- /* this value is copied to all instances */
- struct {
- size_t size; /* allocated size */
- size_t start; /* number of invalid bytes at the begin of the buffer */
- size_t len; /* currently filled to this size */
- byte *buf;
- } unget;
-};
-
-#ifndef EXTERN_UNLESS_MAIN_MODULE
-#if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE)
-#define EXTERN_UNLESS_MAIN_MODULE extern
-#else
-#define EXTERN_UNLESS_MAIN_MODULE
-#endif
-#endif
-EXTERN_UNLESS_MAIN_MODULE int iobuf_debug_mode;
-
-void iobuf_enable_special_filenames ( int yes );
-IOBUF iobuf_alloc(int use, size_t bufsize);
-IOBUF iobuf_temp(void);
-IOBUF iobuf_temp_with_content( const char *buffer, size_t length );
-IOBUF iobuf_open( const char *fname );
-IOBUF iobuf_fdopen( int fd, const char *mode );
-IOBUF iobuf_sockopen( int fd, const char *mode );
-IOBUF iobuf_create( const char *fname );
-IOBUF iobuf_append( const char *fname );
-IOBUF iobuf_openrw( const char *fname );
-int iobuf_ioctl ( IOBUF a, int cmd, int intval, void *ptrval );
-int iobuf_close( IOBUF iobuf );
-int iobuf_cancel( IOBUF iobuf );
-
-int iobuf_push_filter( IOBUF a, int (*f)(void *opaque, int control,
- IOBUF chain, byte *buf, size_t *len), void *ov );
-int iobuf_push_filter2( IOBUF a,
- int (*f)(void *opaque, int control,
- IOBUF chain, byte *buf, size_t *len),
- void *ov, int rel_ov );
-int iobuf_flush(IOBUF a);
-void iobuf_clear_eof(IOBUF a);
-#define iobuf_set_error(a) do { (a)->error = 1; } while(0)
-#define iobuf_error(a) ((a)->error)
-
-void iobuf_set_limit( IOBUF a, off_t nlimit );
-
-off_t iobuf_tell( IOBUF a );
-int iobuf_seek( IOBUF a, off_t newpos );
-
-int iobuf_readbyte(IOBUF a);
-int iobuf_read(IOBUF a, byte *buf, unsigned buflen );
-unsigned iobuf_read_line( IOBUF a, byte **addr_of_buffer,
- unsigned *length_of_buffer, unsigned *max_length );
-int iobuf_peek(IOBUF a, byte *buf, unsigned buflen );
-int iobuf_writebyte(IOBUF a, unsigned c);
-int iobuf_write(IOBUF a, byte *buf, unsigned buflen );
-int iobuf_writestr(IOBUF a, const char *buf );
-
-void iobuf_flush_temp( IOBUF temp );
-int iobuf_write_temp( IOBUF a, IOBUF temp );
-size_t iobuf_temp_to_buffer( IOBUF a, byte *buffer, size_t buflen );
-void iobuf_unget_and_close_temp( IOBUF a, IOBUF temp );
-
-off_t iobuf_get_filelength( IOBUF a );
-#define IOBUF_FILELENGTH_LIMIT 0xffffffff
-const char *iobuf_get_real_fname( IOBUF a );
-const char *iobuf_get_fname( IOBUF a );
-
-void iobuf_set_block_mode( IOBUF a, size_t n );
-void iobuf_set_partial_block_mode( IOBUF a, size_t len );
-int iobuf_in_block_mode( IOBUF a );
-
-int iobuf_translate_file_handle ( int fd, int for_write );
-
-
-/* get a byte form the iobuf; must check for eof prior to this function
- * this function returns values in the range 0 .. 255 or -1 to indicate EOF
- * iobuf_get_noeof() does not return -1 to indicate EOF, but masks the
- * returned value to be in the range 0 ..255.
- */
-#define iobuf_get(a) \
- ( ((a)->nofast || (a)->d.start >= (a)->d.len )? \
- iobuf_readbyte((a)) : ( (a)->nbytes++, (a)->d.buf[(a)->d.start++] ) )
-#define iobuf_get_noeof(a) (iobuf_get((a))&0xff)
-
-/* write a byte to the iobuf and return true on write error
- * This macro does only write the low order byte
- */
-#define iobuf_put(a,c) iobuf_writebyte(a,c)
-
-#define iobuf_where(a) "[don't know]"
-#define iobuf_id(a) ((a)->no)
-
-#define iobuf_get_temp_buffer(a) ( (a)->d.buf )
-#define iobuf_get_temp_length(a) ( (a)->d.len )
-#define iobuf_is_temp(a) ( (a)->use == 3 )
-
-#endif /*G10_IOBUF_H*/
diff --git a/include/mpi.h b/include/mpi.h
index 3198584a2..424e591a0 100644
--- a/include/mpi.h
+++ b/include/mpi.h
@@ -30,6 +30,11 @@
#ifndef G10_MPI_H
#define G10_MPI_H
+#include <gcrypt.h>
+
+#if 0
+
+
#include <config.h>
#include <stdio.h>
#include "iobuf.h"
@@ -192,5 +197,5 @@ void mpi_rshift( MPI x, MPI a, unsigned n );
/*-- mpi-inv.c --*/
void mpi_invm( MPI x, MPI u, MPI v );
-
+#endif
#endif /*G10_MPI_H*/
diff --git a/include/ttyio.h b/include/ttyio.h
deleted file mode 100644
index 5f6557930..000000000
--- a/include/ttyio.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* ttyio.h
- * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
- *
- * This file is part of GNUPG.
- *
- * GNUPG 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.
- *
- * GNUPG 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 G10_TTYIO_H
-#define G10_TTYIO_H
-
-const char *tty_get_ttyname (void);
-int tty_batchmode( int onoff );
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5 )
- void tty_printf (const char *fmt, ... ) __attribute__ ((format (printf,1,2)));
-#else
- void tty_printf (const char *fmt, ... );
-#endif
-void tty_print_string( byte *p, size_t n );
-void tty_print_utf8_string( byte *p, size_t n );
-void tty_print_utf8_string2( byte *p, size_t n, size_t max_n );
-char *tty_get( const char *prompt );
-char *tty_get_hidden( const char *prompt );
-void tty_kill_prompt(void);
-int tty_get_answer_is_yes( const char *prompt );
-int tty_no_terminal(int onoff);
-
-
-#endif /*G10_TTYIO_H*/
diff --git a/include/types.h b/include/types.h
index fc5381965..838897aa5 100644
--- a/include/types.h
+++ b/include/types.h
@@ -132,10 +132,4 @@ typedef union {
double g;
} PROPERLY_ALIGNED_TYPE;
-typedef struct string_list {
- struct string_list *next;
- unsigned int flags;
- char d[1];
-} *STRLIST;
-
#endif /*G10_TYPES_H*/
diff --git a/include/util.h b/include/util.h
index c3d0189c6..ca5e5e431 100644
--- a/include/util.h
+++ b/include/util.h
@@ -20,6 +20,9 @@
#ifndef G10_UTIL_H
#define G10_UTIL_H
+#warning oops, using old util.h
+#if 0 /* Dont use it anymore */
+
#if defined (__MINGW32__) || defined (__CYGWIN32__)
#include <stdarg.h>
#endif
@@ -126,9 +129,6 @@ void g10_log_hexdump( const char *text, const char *buf, size_t len );
#define log_debug_f g10_log_debug_f
-/*-- errors.c --*/
-const char * g10_errstr( int no );
-
/*-- argparse.c --*/
int arg_parse( ARGPARSE_ARGS *arg, ARGPARSE_OPTS *opts);
int optfile_parse( FILE *fp, const char *filename, unsigned *lineno,
@@ -177,15 +177,9 @@ int answer_is_yes( const char *s );
int answer_is_yes_no_quit( const char *s );
/*-- strgutil.c --*/
-void free_strlist( STRLIST sl );
-#define FREE_STRLIST(a) do { free_strlist((a)); (a) = NULL ; } while(0)
-STRLIST add_to_strlist( STRLIST *list, const char *string );
-STRLIST add_to_strlist2( STRLIST *list, const char *string, int is_utf8 );
-STRLIST append_to_strlist( STRLIST *list, const char *string );
-STRLIST append_to_strlist2( STRLIST *list, const char *string, int is_utf8 );
-STRLIST strlist_prev( STRLIST head, STRLIST node );
-STRLIST strlist_last( STRLIST node );
-char *pop_strlist( STRLIST *list );
+
+#include "../jnlib/strlist.h"
+
const char *memistr( const char *buf, size_t buflen, const char *sub );
const char *ascii_memistr( const char *buf, size_t buflen, const char *sub );
char *mem2str( char *, const void *, size_t);
@@ -301,4 +295,6 @@ void riscos_list_openfiles(void);
#endif /* !__RISCOS__C__ */
#endif /* __riscos__ */
+#endif
+
#endif /*G10_UTIL_H*/