diff --git a/manifest b/manifest index ea68d42073..db853d0788 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Do\snot\sflatten\sa\ssubquery\swhich\sis\sthe\sright\sterm\sof\sa\sLEFT\sOUTER\sJOIN\nif\sthe\ssubquery\scontains\sa\sWHERE\sclause.\s\sTicket\s#350.\s(CVS\s1027) -D 2003-06-16T00:40:35 +C Add\sthe\s%z\sformat\sto\sthe\ssqlite_mprintf()\sand\srelated\sfunctions.\s(CVS\s1028) +D 2003-06-16T03:08:19 F Makefile.in 9ad23ed4ca97f9670c4496432e3fbd4b3760ebde F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906 F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd @@ -41,7 +41,7 @@ F src/pager.c 6c50e8dc861bb08f8c52b1fe9aabef6554d61c95 F src/pager.h 5da62c83443f26b1792cfd72c96c422f91aadd31 F src/parse.y 917250e5d86bdee752355e6617ea2e8ee12438bf F src/pragma.c 3b4f5a800e7a2145bc1930f323232e297d4eb782 -F src/printf.c 12ab57e638c8201033c96717df7af59e06933314 +F src/printf.c 12e45d482ac8abcc6f786fc99e5bed7dd9a51af0 F src/random.c 19e8e00fe0df32a742f115773f57651be327cabe F src/select.c 29c53228a4e66bfcebd797b7539678fcd0e2cf64 F src/shell.c 3ed268908fd69c8fd4b28dbe415075cbf0e3991a @@ -50,7 +50,7 @@ F src/sqlite.h.in 54619fa5df4c83b22def66bb3d24808fd03dcbae F src/sqliteInt.h d1d883d9116dadf63ffe1bafe17ba6455b7db59e F src/table.c 4301926464d88d2c2c7cd21c3360aa75bf068b95 F src/tclsqlite.c d6860dcd56348b9521726280b72c412d2a33ae97 -F src/test1.c 4596acd9d9f2a49fda0160a8a6dee5bfc7c6c325 +F src/test1.c b9cfee0bd97d0ade63a3ce76e910b444fb32dce2 F src/test2.c 5014337d8576b731cce5b5a14bec4f0daf432700 F src/test3.c 30985ebdfaf3ee1462a9b0652d3efbdc8d9798f5 F src/threadtest.c d641a5219e718e18a1a80a50eb9bb549f451f42e @@ -101,7 +101,7 @@ F test/notnull.test 7a08117a71e74b0321aaa937dbeb41a09d6eb1d0 F test/null.test 5c2b57307e4b6178aae825eb65ddbee01e76b0fd F test/pager.test dd31da9bee94a82e2e87e58cf286cfe809f8fc5f F test/pragma.test 4c707a6f7d3cbf72d46ed9d9eb0e1ea6e42dc3e4 -F test/printf.test a29b8afa24edb4411adfe473b12ac32c84098fce +F test/printf.test 3ed02f1361402c0767492cd5cef4650e61df8308 F test/quick.test c527bdb899b12a8cd8ceecce45f72922099f4095 F test/quote.test 08f23385c685d3dc7914ec760d492cacea7f6e3d F test/rowid.test e4d6d619d8699a1fa5a48f3f78db39985bd47ebb @@ -165,7 +165,7 @@ F www/speed.tcl 296cc5632d069b56d3ef5409ca0df90f486c10fb F www/sqlite.tcl 4bd1729e320f5fa9125f0022b281fbe839192125 F www/tclsqlite.tcl 1db15abeb446aad0caf0b95b8b9579720e4ea331 F www/vdbe.tcl 14fdcc7fe8a60a6ba8584903636db8dc37eef26a -P bcf5eeecdfd9897bc7c257119d7515fd34d222c1 -R ffe0cc5608b1ae6c3500625d1dc9cf93 +P dd8943e8583cf7ed3b662570a5607856fd246dac +R 284605941d0d05dd0b8d73646e11aab9 U drh -Z d81db5180d17921ff4a8ae510148f465 +Z 92bf3faa2c4ab75022c55b293d1689d3 diff --git a/manifest.uuid b/manifest.uuid index 17938aa296..7c91dbc70d 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -dd8943e8583cf7ed3b662570a5607856fd246dac \ No newline at end of file +eca1398eaac67d772aff2676a470d9a6d96a93ca \ No newline at end of file diff --git a/src/printf.c b/src/printf.c index 67144b26d0..69fbed76df 100644 --- a/src/printf.c +++ b/src/printf.c @@ -66,6 +66,7 @@ enum et_type { /* The type of the format field */ etGENERIC, /* Floating or exponential, depending on exponent. %g */ etSIZE, /* Return number of characters processed so far. %n */ etSTRING, /* Strings. %s */ + etDYNSTRING, /* Dynamically allocated strings. %z */ etPERCENT, /* Percent symbol. %% */ etCHARX, /* Characters. %c */ etERROR, /* Used to indicate no such conversion type */ @@ -97,6 +98,7 @@ typedef struct et_info { /* Information about each format field */ static et_info fmtinfo[] = { { 'd', 10, "0123456789", 1, 0, etRADIX, }, { 's', 0, 0, 0, 0, etSTRING, }, + { 'z', 0, 0, 0, 0, etDYNSTRING, }, { 'q', 0, 0, 0, 0, etSQLESCAPE, }, { 'Q', 0, 0, 0, 0, etSQLESCAPE2, }, { 'c', 0, 0, 0, 0, etCHARX, }, @@ -549,8 +551,13 @@ static int vxprintf( bufpt = buf; break; case etSTRING: + case etDYNSTRING: bufpt = va_arg(ap,char*); - if( bufpt==0 ) bufpt = "(null)"; + if( bufpt==0 ){ + bufpt = ""; + }else if( xtype==etDYNSTRING ){ + zExtra = bufpt; + } length = strlen(bufpt); if( precision>=0 && precision