Пример #1
0
my_bool dynstr_append_os_quoted(DYNAMIC_STRING *str, const char *append, ...)
{
#ifdef __WIN__
  const char *quote_str= "\"";
  const uint  quote_len= 1;
#else
  const char *quote_str= "\'";
  const uint  quote_len= 1;
#endif /* __WIN__ */
  my_bool ret= TRUE;
  va_list dirty_text;

  ret&= dynstr_append_mem(str, quote_str, quote_len); /* Leading quote */
  va_start(dirty_text, append);
  while (append != NullS)
  {
    const char  *cur_pos= append;
    const char *next_pos= cur_pos;

    /* Search for quote in each string and replace with escaped quote */
    while(*(next_pos= strcend(cur_pos, quote_str[0])) != '\0')
    {
      ret&= dynstr_append_mem(str, cur_pos, (uint) (next_pos - cur_pos));
      ret&= dynstr_append_mem(str ,"\\", 1);
      ret&= dynstr_append_mem(str, quote_str, quote_len);
      cur_pos= next_pos + 1;
    }
    ret&= dynstr_append_mem(str, cur_pos, (uint) (next_pos - cur_pos));
    append= va_arg(dirty_text, char *);
  }
  va_end(dirty_text);
  ret&= dynstr_append_mem(str, quote_str, quote_len); /* Trailing quote */

  return ret;
}
Пример #2
0
my_bool append_dynamic_string_array(DYNAMIC_STRING_ARRAY *array, 
                                    const char *elem,
                                    size_t elem_len)
{

    dynstr_pos_info pos_info;
    DBUG_ENTER("append_dynamic_string_array");
    if (array && elem) {
        if (!elem_len) {
            DBUG_RETURN(FALSE);
        }

        pos_info.elem_off = array->dynstr->length;
        pos_info.elem_size = elem_len;
        if (dynstr_append_mem(array->dynstr, elem, elem_len) || insert_dynamic(array->pos_info_arr, (uchar *) &pos_info)) {
            DBUG_RETURN(TRUE);
        }
        ++array->cur_idx;
        DBUG_RETURN(FALSE);
    }

    DBUG_RETURN(TRUE);
}
Пример #3
0
my_bool dynstr_append(DYNAMIC_STRING *str, const char *append)
{
  return dynstr_append_mem(str,append,(uint) strlen(append));
}