/*
* call-seq:
* conn.lo_open( oid, [mode] ) -> Fixnum
*
* Open a large object of _oid_. Returns a large object descriptor
* instance on success. The _mode_ argument specifies the mode for
* the opened large object,which is either +INV_READ+, or +INV_WRITE+.
*
* If _mode_ is omitted, the default is +INV_READ+.
*/
static VALUE
pgconn_loopen(int argc, VALUE *argv, VALUE self)
{
Oid lo_oid;
int fd, mode;
VALUE nmode, selfid;
PGconn *conn = get_pgconn(self);
rb_scan_args(argc, argv, "11", &selfid, &nmode);
lo_oid = NUM2INT(selfid);
if(NIL_P(nmode))
mode = INV_READ;
else
mode = NUM2INT(nmode);
if((fd = lo_open(conn, lo_oid, mode)) < 0) {
rb_raise(rb_ePGError, "can't open large object");
}
return INT2FIX(fd);
}