~skinny.moey/drizzle/innodb-replication

« back to all changes in this revision

Viewing changes to libdrizzle/query.c

  • Committer: Brian Aker
  • Date: 2010-11-08 22:35:57 UTC
  • mfrom: (1802.1.114 trunk)
  • Revision ID: brian@tangent.org-20101108223557-w3xzwp9hjjtjhtc1
MergeĀ inĀ trunk.

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
  }