lo_write (PGconn)

    /*
     * call-seq:
     *    conn.lo_write( lo_desc, buffer ) -> Fixnum
     *
     * Writes the string _buffer_ to the large object _lo_desc_.
     * Returns the number of bytes written.
     */
    static VALUE
    pgconn_lowrite(VALUE self, VALUE in_lo_desc, VALUE buffer)
    {
            int n;
            PGconn *conn = get_pgconn(self);
            int fd = NUM2INT(in_lo_desc);

            Check_Type(buffer, T_STRING);

            if( RSTRING_LEN(buffer) < 0) {
                    rb_raise(rb_ePGError, "write buffer zero string");
            }
            if((n = lo_write(conn, fd, StringValuePtr(buffer),
                                    RSTRING_LEN(buffer))) < 0) {
                    rb_raise(rb_ePGError, "lo_write failed");
            }

            return INT2FIX(n);
    }