bug-grep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#25146: grep unusable on mingw - SAME_INODE woes


From: Paul Eggert
Subject: bug#25146: grep unusable on mingw - SAME_INODE woes
Date: Fri, 9 Dec 2016 08:34:32 -0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1

On 12/09/2016 07:30 AM, Bruno Haible wrote:

How can we go forward from here? I would propose a gnulib module that defines
a data structure that combines a 'struct stat' with the FILE_ID_INFO for native
Windows, and rebase the 'same-inode' module on it.

The other approach, to override mingw's 'struct stat' and stat/fstat/lstat()
functions, would imply a performance hit to all stat calls, even those that
don't want to access the st_ino field.
For grep's purposes a simple workaround is to have SAME_INODE always return 0 on MinGW, so I installed the attached patch into Gnulib. This isn't perfect (it means MinGW grep won't detect that the input and output are the same file), but it should be good enough to fix the glaring bugs and to conform to POSIX.

Although it might be helpful to have a fancier module that does the work of SAME_INODE but does it more accurately on MinGW, I'm not sure it's worth the hassle. A lot of code assumes that 'struct stat' suffices to identify files, and it would be a pain to clutter it with another struct of our own design that contains a 'struct stat' as a component. Even if we had another module like that, we'd need to keep SAME_INODE for the benefit of programs that cannot easily adopt the new struct.

It seems more plausible to override MinGW's struct stat and stat/etc. functions. To my mind it's OK to take a performance hit in the interest of portability. The performance hit would occur only on programs that need to deduce the equivalent of SAME_INODE.

Attachment: 0001-same-inode-port-to-MinGW.txt
Description: Text document


reply via email to

[Prev in Thread] Current Thread [Next in Thread]