~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to libdrizzle/query.c

Merge Monty - Added inter-plugin dependencies for controlling plugin load order

Show diffs side-by-side

added added

removed removed

Lines of Context:
348
348
  return DRIZZLE_RETURN_OK;
349
349
}
350
350
 
351
 
ssize_t drizzle_safe_escape_string(char *to, size_t max_to_size, const char *from, size_t from_size)
 
351
size_t drizzle_escape_string(char *to, const char *from, size_t from_size)
352
352
{
353
 
  ssize_t to_size= 0;
 
353
  size_t to_size= 0;
354
354
  char newchar;
355
 
  const char *end;
356
355
 
357
 
  for (end= from + from_size; from < end; from++)
 
356
  while (from_size > 0)
358
357
  {
359
358
    newchar= 0;
360
359
    /* All multi-byte UTF8 characters have the high bit set for all bytes. */
375
374
        newchar= 'Z';
376
375
        break;
377
376
      case '\\':
378
 
        newchar= '\\';
379
 
        break;
380
377
      case '\'':
381
 
        newchar= '\'';
382
 
        break;
383
378
      case '"':
384
 
        newchar= '"';
385
 
        break;
 
379
        *to++= '\\';
 
380
        to_size++;
386
381
      default:
387
382
        break;
388
383
      }
389
384
    }
390
 
    if (newchar != '\0')
 
385
    if (newchar != 0)
391
386
    {
392
 
      if ((size_t)to_size + 2 > max_to_size)
393
 
        return -1;
394
 
 
395
387
      *to++= '\\';
396
388
      *to++= newchar;
397
389
      to_size++;
398
390
    }
399
 
    else
400
 
    {
401
 
      if ((size_t)to_size + 1 > max_to_size)
402
 
        return -1;
403
 
 
404
 
      *to++= *from;
405
 
    }
 
391
    else 
 
392
      *to++= *from++;
 
393
    from_size--;
406
394
    to_size++;
407
395
  }
408
396
 
411
399
  return to_size;
412
400
}
413
401
 
414
 
size_t drizzle_escape_string(char *to, const char *from, size_t from_size)
415
 
{
416
 
  return (size_t) drizzle_safe_escape_string(to, (from_size * 2), from, from_size);
417
 
}
418
 
 
419
402
size_t drizzle_hex_string(char *to, const char *from, size_t from_size)
420
403
{
421
404
  static const char hex_map[]= "0123456789ABCDEF";