#1006: r.terraflow fails to stat() stream file on Windows -----------------------------------+---------------------------------------- Reporter: marisn | Owner: grass-...@… Type: defect | Status: new Priority: critical | Milestone: 6.4.0 Component: Raster | Version: svn-releasebranch64 Keywords: wingrass, r.terraflow | Platform: MSWindows Vista Cpu: x86-32 | -----------------------------------+----------------------------------------
Comment(by glynn): Replying to [comment:52 mmetz]: > stream_len itself is called very often In which case, it shouldn't be calling stat() either. This isn't exactly fast on Unix, is quite slow on Windows, and is extremely slow on Cygwin. On Unix, fstat() is typically significantly faster than stat(), as stat() needs to resolve the pathname to an inode, which requires lookups and permission checks on each component in the path. However: both fstat() and stat() reflect the size of the underlying file, which isn't necessarily the same as the size of the stream (FILE*) if buffering is in use. The only reliable way to determine the size of a stream is fseek(SEEK_END)+ftell(). If stream_len() is called often, it would be better to make the AMI_STREAM class keep track of its own length, updating it in the write_item() and write_array() methods. -- Ticket URL: <http://trac.osgeo.org/grass/ticket/1006#comment:53> GRASS GIS <http://grass.osgeo.org>
_______________________________________________ grass-dev mailing list grass-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/grass-dev