~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to libdrizzle/query.c

  • Committer: lbieber at stabletransit
  • Date: 2010-10-18 22:43:30 UTC
  • mfrom: (1857.5.1 trunk-bug-661431)
  • Revision ID: lbieber@drizzle-build-n02.wc1.dfw1.stabletransit.com-20101018224330-m4ebrjbigc4tl3sd
Merge Andrew - fix bug 661431: libdrizzle drizzle_escape_string does not function correctly

Show diffs side-by-side

added added

removed removed

Lines of Context:
325
325
size_t drizzle_escape_string(char *to, const char *from, size_t from_size)
326
326
{
327
327
  size_t to_size= 0;
 
328
  char newchar;
328
329
 
329
330
  while (from_size > 0)
330
331
  {
 
332
    newchar= 0;
331
333
    /* All multi-byte UTF8 characters have the high bit set for all bytes. */
332
334
    if (!(*from & 0x80))
333
335
    {
334
336
      switch (*from)
335
337
      {
336
338
      case 0:
 
339
        newchar= '0';
 
340
        break;
337
341
      case '\n':
 
342
        newchar= 'n';
 
343
        break;
338
344
      case '\r':
 
345
        newchar= 'r';
 
346
        break;
 
347
      case '\032':
 
348
        newchar= 'Z';
 
349
        break;
339
350
      case '\\':
340
351
      case '\'':
341
352
      case '"':
342
 
      case '\032':
343
353
        *to++= '\\';
344
354
        to_size++;
345
355
      default:
346
356
        break;
347
357
      }
348
358
    }
349
 
 
350
 
    *to++= *from++;
 
359
    if (newchar != 0)
 
360
    {
 
361
      *to++= '\\';
 
362
      *to++= newchar;
 
363
      to_size++;
 
364
    }
 
365
    else 
 
366
      *to++= *from++;
351
367
    from_size--;
352
368
    to_size++;
353
369
  }