Commit 1e53a9fd authored by Richard Levitte's avatar Richard Levitte
Browse files

Add z modifier parsing to the BIO_printf et all format string

parent 6edc7145
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -4,6 +4,10 @@
 Changes between 1.1.0e and 1.1.1 [xx XXX xxxx]
  *) Add the z modifier parsing to BIO_printf() et al formatting string,
     to be used for size_t and ssize_t (ossl_ssize_t).
     [Richard Levitte]
  *) Add EC_KEY_get0_engine(), which does for EC_KEY what RSA_get0_engine()
     does for RSA, etc.
     [Richard Levitte]
+12 −1
Original line number Diff line number Diff line
@@ -89,6 +89,7 @@ static int _dopr(char **sbuffer, char **buffer,
#define DP_C_LONG       2
#define DP_C_LDOUBLE    3
#define DP_C_LLONG      4
#define DP_C_SIZE       5

/* Floating point formats */
#define F_FORMAT        0
@@ -214,6 +215,10 @@ _dopr(char **sbuffer,
                cflags = DP_C_LDOUBLE;
                ch = *format++;
                break;
            case 'z':
                cflags = DP_C_SIZE;
                ch = *format++;
                break;
            default:
                break;
            }
@@ -233,6 +238,9 @@ _dopr(char **sbuffer,
                case DP_C_LLONG:
                    value = va_arg(args, LLONG);
                    break;
                case DP_C_SIZE:
                    value = va_arg(args, ossl_ssize_t);
                    break;
                default:
                    value = va_arg(args, int);
                    break;
@@ -258,6 +266,9 @@ _dopr(char **sbuffer,
                case DP_C_LLONG:
                    value = va_arg(args, unsigned LLONG);
                    break;
                case DP_C_SIZE:
                    value = (ossl_ssize_t)va_arg(args, size_t);
                    break;
                default:
                    value = (LLONG) va_arg(args, unsigned int);
                    break;
+10 −4
Original line number Diff line number Diff line
@@ -724,10 +724,16 @@ void BIO_copy_next_retry(BIO *b);
 * long BIO_ghbn_ctrl(int cmd,int iarg,char *parg);
 */

# ifdef __GNUC__
#  define __bio_h__attr__ __attribute__
# else
# define __bio_h__attr__(x)
# if defined(__GNUC__) && defined(__STDC_VERSION__)
    /*
     * Because we support the 'z' modifier, which made its appearance in C99,
     * we can't use __attribute__ with pre C99 dialects.
     */
#  if __STDC_VERSION__ >= 199901L
#   undef __bio_h__attr__
#   define __bio_h__attr__ __attribute__
#  endif
# endif
int BIO_printf(BIO *bio, const char *format, ...)
__bio_h__attr__((__format__(__printf__, 2, 3)));