/*
 * call-seq:
 *    conn.lo_creat( [mode] ) -> Fixnum
 *
 * Creates a large object with mode _mode_. Returns a large object Oid.
 * On failure, it raises PGError exception.
 */
static VALUE
pgconn_locreat(int argc, VALUE *argv, VALUE self)
{
        Oid lo_oid;
        int mode;
        VALUE nmode;
        PGconn *conn = get_pgconn(self);

        if (rb_scan_args(argc, argv, "01", &nmode) == 0)
                mode = INV_READ;
        else
                mode = NUM2INT(nmode);

        lo_oid = lo_creat(conn, mode);
        if (lo_oid == 0)
                rb_raise(rb_ePGError, "lo_creat failed");

        return INT2FIX(lo_oid);
}