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