size (PGlarge)

    /*
     * call-seq:
     *    lrg.size()
     *
     * Returns the size of the large object.
     */
    static VALUE
    pglarge_size(obj)
        VALUE obj;
    {
        PGlarge *pglarge = get_pglarge(obj);
        int start, end;

        if ((start = lo_tell(pglarge->pgconn,pglarge->lo_fd)) == -1) {
            rb_raise(rb_ePGError, "error while getting position");
        }

        if ((end = lo_lseek(pglarge->pgconn, pglarge->lo_fd, 0, SEEK_END)) == -1) {
            rb_raise(rb_ePGError, "error while moving cursor");
        }

        if ((start = lo_lseek(pglarge->pgconn, pglarge->lo_fd,start, SEEK_SET)) == -1) {
            rb_raise(rb_ePGError, "error while moving back to posiion");
        }

        return INT2NUM(end);
    }