/* * 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); }