MCPcopy Create free account
hub / github.com/alliedmodders/sourcemod / CopyString

Method CopyString

extensions/sqlite/driver/SqResults.cpp:268–333  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

266}
267
268DBResult SqResults::CopyString(unsigned int columnId, char *buffer, size_t maxlength, size_t *written)
269{
270 SqField *field = GetField(columnId);
271 if (!field)
272 {
273 return DBVal_Error;
274 }
275
276 DBResult res = DBVal_Data;
277 if (field->type == SQLITE_TEXT || field->type == SQLITE_BLOB)
278 {
279 const char *ptr = m_Strings.GetString(field->u.idx);
280 if (!ptr)
281 {
282 ptr = "";
283 field->type = SQLITE_TEXT;
284 res = DBVal_Null;
285 }
286 size_t wr = 0;
287 if (field->type == SQLITE_TEXT)
288 {
289 wr = strncopy(buffer, ptr, maxlength);
290 } else if (field->type == SQLITE_BLOB) {
291 wr = (maxlength < field->size) ? maxlength : field->size;
292 memcpy(buffer, ptr, wr);
293 }
294 if (written)
295 {
296 *written = wr;
297 }
298 return res;
299 } else if (field->type == SQLITE_INTEGER) {
300 size_t wr = 0;
301 if (buffer)
302 {
303 wr = UTIL_Format(buffer, maxlength, "%d", field->u.idx);
304 }
305 if (written)
306 {
307 *written = wr;
308 }
309 return DBVal_Data;
310 } else if (field->type == SQLITE_FLOAT) {
311 size_t wr = 0;
312 if (buffer)
313 {
314 wr = UTIL_Format(buffer, maxlength, "%f", field->u.f);
315 }
316 if (written)
317 {
318 *written = wr;
319 }
320 return DBVal_Data;
321 }
322
323 if (buffer)
324 {
325 strncopy(buffer, "", maxlength);

Callers

nothing calls this directly

Calls 3

strncopyFunction · 0.70
UTIL_FormatFunction · 0.50
GetStringMethod · 0.45

Tested by

no test coverage detected