/*
 * 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(self, in_lo_desc, buffer)
    VALUE self, 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);
}