2003-01-29 Marcus Brinkmann <marcus@g10code.de>
* configure.ac: Remove all uses of GNUPG_CHECK_TYPEDEF, for byte, ushort, ulong, u16 and u32. * acinclude.m4 (GNUPG_CHECK_TYPEDEF): Remove macro. gpgme/ 2003-01-29 Marcus Brinkmann <marcus@g10code.de> * types.h: Remove byte and ulong types. * util.h (_gpgme_hextobyte): Change prototype to unsigned char instead byte. * conversion.c (_gpgme_hextobyte): Change argument to unsigned char instead byte. (_gpgme_decode_c_string): Likewise, and beautify. Also support a few more escaped characters. Be more strict about buffer size. (_gpgme_data_append_percentstring_for_xml): Change type of SRC, BUF and DST to unsigned char instead byte. * progress.c (_gpgme_progress_status_handler): Use unsigned char instead byte. * debug.c (trim_spaces): Likewise.
This commit is contained in:
parent
6912c46a77
commit
13e4d78a82
@ -1,3 +1,9 @@
|
||||
2003-01-29 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* configure.ac: Remove all uses of GNUPG_CHECK_TYPEDEF, for byte,
|
||||
ushort, ulong, u16 and u32.
|
||||
* acinclude.m4 (GNUPG_CHECK_TYPEDEF): Remove macro.
|
||||
|
||||
2002-12-24 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* configure.ac: New conditional HAVE_LD_VERSION_SCRIPT.
|
||||
|
18
acinclude.m4
18
acinclude.m4
@ -26,24 +26,6 @@ AC_DEFUN(GNUPG_FIX_HDR_VERSION,
|
||||
])
|
||||
|
||||
|
||||
dnl GNUPG_CHECK_TYPEDEF(TYPE, HAVE_NAME)
|
||||
dnl Check whether a typedef exists and create a #define $2 if it exists
|
||||
dnl
|
||||
AC_DEFUN(GNUPG_CHECK_TYPEDEF,
|
||||
[ AC_MSG_CHECKING(for $1 typedef)
|
||||
AC_CACHE_VAL(gnupg_cv_typedef_$1,
|
||||
[AC_TRY_COMPILE([#include <stdlib.h>
|
||||
#include <sys/types.h>], [
|
||||
#undef $1
|
||||
int a = sizeof($1);
|
||||
], gnupg_cv_typedef_$1=yes, gnupg_cv_typedef_$1=no )])
|
||||
AC_MSG_RESULT($gnupg_cv_typedef_$1)
|
||||
if test "$gnupg_cv_typedef_$1" = yes; then
|
||||
AC_DEFINE($2, ,
|
||||
[Define to 1 if $1 is defined in the <sys/types.h> header file.])
|
||||
fi
|
||||
])
|
||||
|
||||
dnl ##
|
||||
dnl ## GNU Pth - The GNU Portable Threads
|
||||
dnl ## Copyright (c) 1999-2002 Ralf S. Engelschall <rse@engelschall.com>
|
||||
|
@ -145,16 +145,9 @@ dnl Checks for header files.
|
||||
dnl
|
||||
AC_CHECK_HEADERS(sys/select.h)
|
||||
|
||||
|
||||
|
||||
dnl
|
||||
dnl Checks for typedefs and structures.
|
||||
dnl Type checks.
|
||||
dnl
|
||||
GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
|
||||
GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
|
||||
GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
|
||||
GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
|
||||
GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
|
||||
|
||||
AC_CHECK_SIZEOF(unsigned int)
|
||||
|
||||
|
@ -1,5 +1,18 @@
|
||||
2003-01-29 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* types.h: Remove byte and ulong types.
|
||||
* util.h (_gpgme_hextobyte): Change prototype to unsigned char
|
||||
instead byte.
|
||||
* conversion.c (_gpgme_hextobyte): Change argument to unsigned
|
||||
char instead byte.
|
||||
(_gpgme_decode_c_string): Likewise, and beautify. Also support a
|
||||
few more escaped characters. Be more strict about buffer size.
|
||||
(_gpgme_data_append_percentstring_for_xml): Change type of SRC,
|
||||
BUF and DST to unsigned char instead byte.
|
||||
* progress.c (_gpgme_progress_status_handler): Use unsigned char
|
||||
instead byte.
|
||||
* debug.c (trim_spaces): Likewise.
|
||||
|
||||
* util.h (mk_error): Remove macro.
|
||||
* conversion.c, data.c, data-compat.c, decrypt.c, delete.c,
|
||||
edit.c, encrypt.c, encrypt-sign.c, engine.c, engine-gpgsm.c,
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* conversion.c - String conversion helper functions.
|
||||
Copyright (C) 2000 Werner Koch (dd9jn)
|
||||
Copyright (C) 2001, 2002 g10 Code GmbH
|
||||
Copyright (C) 2001, 2002, 2003 g10 Code GmbH
|
||||
|
||||
This file is part of GPGME.
|
||||
|
||||
@ -31,9 +31,12 @@
|
||||
#include "gpgme.h"
|
||||
#include "util.h"
|
||||
|
||||
|
||||
|
||||
/* Convert two hexadecimal digits from STR to the value they
|
||||
represent. Returns -1 if one of the characters is not a
|
||||
hexadecimal digit. */
|
||||
int
|
||||
_gpgme_hextobyte (const byte *str)
|
||||
_gpgme_hextobyte (const unsigned char *str)
|
||||
{
|
||||
int val = 0;
|
||||
int i;
|
||||
@ -68,12 +71,18 @@ _gpgme_decode_c_string (const char *src, char **destp, int len)
|
||||
{
|
||||
char *dest;
|
||||
|
||||
/* Set up the destination buffer. */
|
||||
if (len)
|
||||
{
|
||||
if (len < strlen (src) + 1)
|
||||
return GPGME_General_Error;
|
||||
|
||||
dest = *destp;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* We can malloc a buffer of the same length, because the converted
|
||||
string will never be larger. */
|
||||
/* The converted string will never be larger than the original
|
||||
string. */
|
||||
dest = malloc (strlen (src) + 1);
|
||||
if (!dest)
|
||||
return GPGME_Out_Of_Core;
|
||||
@ -81,71 +90,70 @@ _gpgme_decode_c_string (const char *src, char **destp, int len)
|
||||
*destp = dest;
|
||||
}
|
||||
|
||||
/* Convert the string. */
|
||||
while (*src)
|
||||
{
|
||||
if (*src != '\\')
|
||||
{
|
||||
*(dest++) = *(src++);
|
||||
else if (src[1] == '\\')
|
||||
{
|
||||
src++;
|
||||
*(dest++) = *(src++);
|
||||
continue;
|
||||
}
|
||||
else if (src[1] == 'n')
|
||||
|
||||
switch (src[1])
|
||||
{
|
||||
src += 2;
|
||||
*(dest++) = '\n';
|
||||
}
|
||||
else if (src[1] == 'r')
|
||||
{
|
||||
src += 2;
|
||||
*(dest++) = '\r';
|
||||
}
|
||||
else if (src[1] == 'v')
|
||||
{
|
||||
src += 2;
|
||||
*(dest++) = '\v';
|
||||
}
|
||||
else if (src[1] == 'b')
|
||||
{
|
||||
src += 2;
|
||||
*(dest++) = '\b';
|
||||
}
|
||||
else if (src[1] == '0')
|
||||
{
|
||||
/* Hmmm: no way to express this */
|
||||
src += 2;
|
||||
*(dest++) = '\\';
|
||||
*(dest++) = '\0';
|
||||
}
|
||||
else if (src[1] == 'x' && isxdigit (src[2]) && isxdigit (src[3]))
|
||||
#define DECODE_ONE(match,result) \
|
||||
case match: \
|
||||
src += 2; \
|
||||
*(dest++) = result; \
|
||||
break;
|
||||
|
||||
DECODE_ONE ('\'', '\'');
|
||||
DECODE_ONE ('\"', '\"');
|
||||
DECODE_ONE ('\?', '\?');
|
||||
DECODE_ONE ('\\', '\\');
|
||||
DECODE_ONE ('a', '\a');
|
||||
DECODE_ONE ('b', '\b');
|
||||
DECODE_ONE ('f', '\f');
|
||||
DECODE_ONE ('n', '\n');
|
||||
DECODE_ONE ('r', '\r');
|
||||
DECODE_ONE ('t', '\t');
|
||||
DECODE_ONE ('v', '\v');
|
||||
|
||||
case 'x':
|
||||
{
|
||||
int val = _gpgme_hextobyte (&src[2]);
|
||||
|
||||
if (val == -1)
|
||||
{
|
||||
/* Should not happen. */
|
||||
*(dest++) = *(src++);
|
||||
*(dest++) = *(src++);
|
||||
if (*src)
|
||||
*(dest++) = *(src++);
|
||||
if (*src)
|
||||
*(dest++) = *(src++);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!val)
|
||||
{
|
||||
/* A binary zero is not representable in a C
|
||||
string. */
|
||||
*(dest++) = '\\';
|
||||
*(dest++) = '\0';
|
||||
*(dest++) = '0';
|
||||
}
|
||||
else
|
||||
*(byte*)dest++ = val;
|
||||
*((unsigned char *) dest++) = val;
|
||||
src += 4;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
default:
|
||||
{
|
||||
/* should not happen */
|
||||
src++;
|
||||
*(dest++) = '\\';
|
||||
/* Should not happen. */
|
||||
*(dest++) = *(src++);
|
||||
*(dest++) = *(src++);
|
||||
}
|
||||
}
|
||||
}
|
||||
*(dest++) = 0;
|
||||
@ -244,8 +252,8 @@ _gpgme_data_append_string_for_xml (GpgmeData dh, const char *str)
|
||||
GpgmeError
|
||||
_gpgme_data_append_percentstring_for_xml (GpgmeData dh, const char *str)
|
||||
{
|
||||
const byte *src;
|
||||
byte *buf, *dst;
|
||||
const unsigned char *src;
|
||||
unsigned char *buf, *dst;
|
||||
int val;
|
||||
GpgmeError err;
|
||||
|
||||
|
@ -1,24 +1,26 @@
|
||||
/* debug.c - helpful output in desperate situations
|
||||
* Copyright (C) 2001, 2002 g10 Code GmbH
|
||||
*
|
||||
* This file is part of GPGME.
|
||||
*
|
||||
* GPGME 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.
|
||||
*
|
||||
* GPGME 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
|
||||
*/
|
||||
Copyright (C) 2000 Werner Koch (dd9jn)
|
||||
Copyright (C) 2001, 2002, 2003 g10 Code GmbH
|
||||
|
||||
This file is part of GPGME.
|
||||
|
||||
GPGME 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.
|
||||
|
||||
GPGME 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 GPGME; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@ -56,11 +58,11 @@ trim_spaces (char *str)
|
||||
|
||||
string = str;
|
||||
/* Find first non space character. */
|
||||
for (p = string; *p && isspace (*(byte *) p); p++)
|
||||
for (p = string; *p && isspace (*(unsigned char *) p); p++)
|
||||
;
|
||||
/* Move characters. */
|
||||
for (mark = NULL; (*string = *p); string++, p++)
|
||||
if (isspace (*(byte *) p))
|
||||
if (isspace (*(unsigned char *) p))
|
||||
{
|
||||
if (!mark)
|
||||
mark = string;
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* progress.c - status handler for progress status
|
||||
Copyright (C) 2000 Werner Koch (dd9jn)
|
||||
Copyright (C) 2001, 2002 g10 Code GmbH
|
||||
Copyright (C) 2001, 2002, 2003 g10 Code GmbH
|
||||
|
||||
This file is part of GPGME.
|
||||
|
||||
@ -50,7 +50,7 @@ _gpgme_progress_status_handler (GpgmeCtx ctx, GpgmeStatusCode code, char *args)
|
||||
*p++ = 0;
|
||||
if (*p)
|
||||
{
|
||||
type = *(byte *)p;
|
||||
type = *(unsigned char *)p;
|
||||
p = strchr (p+1, ' ');
|
||||
if (p)
|
||||
{
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* types.h - Some type definitions
|
||||
/* types.h - Type definitions.
|
||||
Copyright (C) 2000 Werner Koch (dd9jn)
|
||||
Copyright (C) 2001, 2002 g10 Code GmbH
|
||||
Copyright (C) 2001, 2002, 2003 g10 Code GmbH
|
||||
|
||||
This file is part of GPGME.
|
||||
|
||||
@ -21,19 +21,9 @@
|
||||
#ifndef TYPES_H
|
||||
#define TYPES_H
|
||||
|
||||
#include "gpgme.h" /* external objects and prototypes */
|
||||
#include "gpgme.h"
|
||||
|
||||
#ifndef HAVE_BYTE_TYPEDEF
|
||||
typedef unsigned char byte;
|
||||
#endif
|
||||
#ifndef HAVE_ULONG_TYPEDEF
|
||||
typedef unsigned long ulong;
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Declaration of internal objects
|
||||
*/
|
||||
/* Declaration of internal objects. */
|
||||
|
||||
typedef GpgmeError (*GpgmeStatusHandler) (GpgmeCtx, GpgmeStatusCode code,
|
||||
char *args);
|
||||
@ -94,5 +84,4 @@ typedef struct keylist_result_s *KeylistResult;
|
||||
struct edit_result_s;
|
||||
typedef struct edit_result_s *EditResult;
|
||||
|
||||
|
||||
#endif /* TYPES_H */
|
||||
|
@ -82,6 +82,11 @@ FILE *fopencookie (void *cookie, const char *opentype,
|
||||
|
||||
|
||||
/*-- conversion.c --*/
|
||||
/* Convert two hexadecimal digits from STR to the value they
|
||||
represent. Returns -1 if one of the characters is not a
|
||||
hexadecimal digit. */
|
||||
int _gpgme_hextobyte (const unsigned char *str);
|
||||
|
||||
/* Decode the C formatted string SRC and store the result in the
|
||||
buffer *DESTP which is LEN bytes long. If LEN is zero, then a
|
||||
large enough buffer is allocated with malloc and *DESTP is set to
|
||||
@ -89,6 +94,6 @@ FILE *fopencookie (void *cookie, const char *opentype,
|
||||
is desired or not, the caller is expected to make sure that *DESTP
|
||||
is large enough if LEN is not zero. */
|
||||
GpgmeError _gpgme_decode_c_string (const char *src, char **destp, int len);
|
||||
int _gpgme_hextobyte (const byte *str);
|
||||
|
||||
|
||||
#endif /* UTIL_H */
|
||||
|
Loading…
Reference in New Issue
Block a user