/* Compute a string using sqlite3_vsnprintf() with a maximum length ** of 50 bytes and add it to the hash. */ static void hash_step_vformat( SHA3Context *p, /* Add content to this context */ const char *zFormat, ... ){ va_list ap; int n; char zBuf[50]; va_start(ap, zFormat); sqlite3_vsnprintf(sizeof(zBuf),zBuf,zFormat,ap); va_end(ap); n = (int)strlen(zBuf); SHA3Update(p, (unsigned char*)zBuf, n); }
/* ** Add formatted text to the end of a Block object */ int strPrintf(Block *p, const char *zFormat, ...) { int nNew; for (;;){ if (p->z){ va_list ap; va_start(ap, zFormat); sqlite3_vsnprintf(p->nAlloc - p->nUsed, p->z + p->nUsed, zFormat, ap); va_end(ap); nNew = (int)strlen(p->z + p->nUsed); } else{ nNew = p->nAlloc; } if (p->nUsed + nNew < p->nAlloc - 1){ p->nUsed += nNew; break; } p->nAlloc = p->nAlloc * 2 + 1000; p->z = sqlite3_realloc(p->z, p->nAlloc); if (!p->z) break; } return !!p->z; }
/* Report an error on a CsvReader */ static void csv_errmsg(CsvReader *p, const char *zFormat, ...){ va_list ap; va_start(ap, zFormat); sqlite3_vsnprintf(CSV_MXERR, p->zErr, zFormat, ap); va_end(ap); }