/*
 * 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;
}