]> pd.if.org Git - pdclib/commitdiff
Added test for %n.
authorsolar <unknown>
Mon, 24 Apr 2006 06:05:32 +0000 (06:05 +0000)
committersolar <unknown>
Mon, 24 Apr 2006 06:05:32 +0000 (06:05 +0000)
draft.c

diff --git a/draft.c b/draft.c
index 1ae90c2088dccd94fd6f6e916535d4046cfef093..570f305353b9352e07b51be7265c5ccb4e981ef7 100644 (file)
--- a/draft.c
+++ b/draft.c
@@ -46,7 +46,8 @@ struct status_t
 
 const char * parse_out( const char * spec, struct status_t * status );
 inline void test( size_t n, const char * expect, ... );
-int _PDCLIB_sprintf( char * buffer, size_t n, const char * format, va_list ap );
+int _PDCLIB_vsnprintf( char * buffer, size_t n, const char * format, va_list ap );
+int _PDCLIB_snprintf( char * s, size_t n, const char * format, ... );
 
 /* The following only for testing. */
 #include <limits.h>
@@ -176,6 +177,16 @@ int main( void )
     test( SIZE_MAX, "%c", 'x' );
     test( SIZE_MAX, "%s", "abcdef" );
     test( SIZE_MAX, "%p", 0xdeadbeef );
+    {
+        char buffer[50];
+        int val1, val2, val3, val4;
+        snprintf( buffer, SIZE_MAX, "123456%n789%n", &val1, &val2 );
+        _PDCLIB_snprintf( buffer, SIZE_MAX, "123456%n789%n", &val3, &val4 );
+        if ( ( val1 != val3 ) || ( val2 != val4 ) )
+        {
+            printf( "Output %d/%d\nExpect %d/%d\n\n", val1, val2, val3, val4 );
+        }
+    }
     return 0;
 }
 
@@ -615,7 +626,7 @@ inline void test( size_t n, const char * expect, ... )
     int rc;
     va_list ap;
     va_start( ap, expect );
-    myrc = _PDCLIB_sprintf( buffer1, n, expect, ap );
+    myrc = _PDCLIB_vsnprintf( buffer1, n, expect, ap );
     rc = vsnprintf( buffer2, n, expect, ap );
     if ( ( strcmp( buffer1, buffer2 ) != 0 ) || ( myrc != rc ) )
     {
@@ -625,7 +636,7 @@ inline void test( size_t n, const char * expect, ... )
     free( buffer2 );
 }
 
-int _PDCLIB_sprintf( char * buffer, size_t n, const char * format, va_list ap )
+int _PDCLIB_vsnprintf( char * buffer, size_t n, const char * format, va_list ap )
 {
     struct status_t status = { 0, 0, n, 0, 0, buffer, 0, 0, NULL, ap };
     while ( *format != '\0' )
@@ -646,6 +657,13 @@ int _PDCLIB_sprintf( char * buffer, size_t n, const char * format, va_list ap )
     return status.i;
 }
 
+int _PDCLIB_snprintf( char * s, size_t n, const char * format, ... )
+{
+    va_list ap;
+    va_start( ap, format );
+    return _PDCLIB_vsnprintf( s, n, format, ap );
+}
+
 #if 0
 int _PDCLIB_fprintf( FILE * stream, const char * format, va_list ap )
 {