diff options
author | drh <drh@noemail.net> | 2013-12-24 12:09:42 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2013-12-24 12:09:42 +0000 |
commit | d9e3c267b469a4cefa99fc2ec2273eed9810c86e (patch) | |
tree | e00f35398deedb65ae1add14b0dcb8033f6d860d /src/func.c | |
parent | c8d985e09c2adc83a944889bd6e60e4e86864e3e (diff) | |
parent | 3312348cf8d88eb170825aa7b52254ea6219ff4b (diff) | |
download | sqlite-d9e3c267b469a4cefa99fc2ec2273eed9810c86e.tar.gz sqlite-d9e3c267b469a4cefa99fc2ec2273eed9810c86e.zip |
Merge the latest trunk changes into the sessions branch.
FossilOrigin-Name: cfd110bf5db2c1993a5e2ca718648bd9c17ee22c
Diffstat (limited to 'src/func.c')
-rw-r--r-- | src/func.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/func.c b/src/func.c index 951af97b3..1d6ec9f6e 100644 --- a/src/func.c +++ b/src/func.c @@ -219,6 +219,32 @@ static void instrFunc( } /* +** Implementation of the printf() function. +*/ +static void printfFunc( + sqlite3_context *context, + int argc, + sqlite3_value **argv +){ + PrintfArguments x; + StrAccum str; + const char *zFormat; + int n; + + if( argc>=1 && (zFormat = (const char*)sqlite3_value_text(argv[0]))!=0 ){ + x.nArg = argc-1; + x.nUsed = 0; + x.apArg = argv+1; + sqlite3StrAccumInit(&str, 0, 0, SQLITE_MAX_LENGTH); + str.db = sqlite3_context_db_handle(context); + sqlite3XPrintf(&str, SQLITE_PRINTF_SQLFUNC, zFormat, &x); + n = str.nChar; + sqlite3_result_text(context, sqlite3StrAccumFinish(&str), n, + SQLITE_DYNAMIC); + } +} + +/* ** Implementation of the substr() function. ** ** substr(x,p1,p2) returns p2 characters of x[] beginning with p1. @@ -1648,6 +1674,7 @@ void sqlite3RegisterGlobalFunctions(void){ FUNCTION(instr, 2, 0, 0, instrFunc ), FUNCTION(substr, 2, 0, 0, substrFunc ), FUNCTION(substr, 3, 0, 0, substrFunc ), + FUNCTION(printf, -1, 0, 0, printfFunc ), FUNCTION(unicode, 1, 0, 0, unicodeFunc ), FUNCTION(char, -1, 0, 0, charFunc ), FUNCTION(abs, 1, 0, 0, absFunc ), |