/*
* call-seq:
* PGconn.quote_ident( str )
*
* Returns a SQL-safe identifier.
*/
static VALUE
pgconn_s_quote_ident(self, string)
VALUE self;
VALUE string;
{
char *str,*ptr;
int i,j=0,len;
VALUE result;
Check_Type(string, T_STRING);
ptr = RSTRING_PTR(string);
len = RSTRING_LEN(string);
str = ALLOCA_N(char, len * 2 + 2 + 1);
str[j++] = '"';
for(i = 0; i < len; i++) {
if(ptr[i] == '"')
str[j++] = '"';
else if(ptr[i] == '\0')
rb_raise(rb_ePGError, "Identifier cannot contain NULL bytes");
str[j++] = ptr[i];
}
str[j++] = '"';
result = rb_str_new(str, j);
OBJ_INFECT(result, string);
return result;
}