quote_ident (PGconn)

    /*
     * call-seq:
     *    PGconn.quote_ident( str ) -> String
     *    conn.quote_ident( str ) -> String
     *
     * Returns a string that is safe for inclusion in a SQL query
     * as an identifier. Note: this is not a quote function for values,
     * but for identifiers.
     *
     * For example, in a typical SQL query: +SELECT FOO FROM MYTABLE+
     * The identifier +FOO+ is folded to lower case, so it actually means
     * +foo+. If you really want to access the case-sensitive field name
     * +FOO+, use this function like +PGconn.quote_ident('FOO')+, which
     * will return +"FOO"+ (with double-quotes). PostgreSQL will see the
     * double-quotes, and it will not fold to lower case.
     *
     * Similarly, this function also protects against special characters,
     * and other things that might allow SQL injection if the identifier
     * comes from an untrusted source.
     */
    static VALUE
    pgconn_s_quote_ident(VALUE self, VALUE in_str)
    {
            VALUE ret;
            char *str = StringValuePtr(in_str);
            /* result size at most NAMEDATALEN*2 plus surrounding
             * double-quotes. */
            char buffer[NAMEDATALEN*2+2];
            unsigned int i=0,j=0;

            if(strlen(str) >= NAMEDATALEN) {
                    rb_raise(rb_eArgError,
                            "Input string is longer than NAMEDATALEN-1 (%d)",
                            NAMEDATALEN-1);
            }
            buffer[j++] = '"';
            for(i = 0; i < strlen(str) && str[i]; i++) {
                    if(str[i] == '"')
                            buffer[j++] = '"';
                    buffer[j++] = str[i];
            }
            buffer[j++] = '"';
            ret = rb_str_new(buffer,j);
            OBJ_INFECT(ret, in_str);
            return ret;
    }