/*
* call-seq:
* lrg.open( [mode] )
*
* Opens a large object.
* The _mode_ argument specifies the mode for the opened large object,
* which is either +INV_READ+ or +INV_WRITE+.
*/
static VALUE
pglarge_open(argc, argv, obj)
int argc;
VALUE *argv;
VALUE obj;
{
PGlarge *pglarge = get_pglarge(obj);
VALUE nmode;
int fd;
int mode;
if (rb_scan_args(argc, argv, "01", &nmode) == 0) {
mode = INV_READ;
}
else {
mode = FIX2INT(nmode);
}
if((fd = lo_open(pglarge->pgconn, pglarge->lo_oid, mode)) < 0) {
rb_raise(rb_ePGError, "can't open large object");
}
pglarge->lo_fd = fd;
return INT2FIX(pglarge->lo_fd);
}