This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Sergey's patches


On Fri, 30 May 1997 08:56:50 +0200, Tomaz Mertelj <tomaz.mertelj@ijs.si>
  wrote:
>It works both on WIN95 and NT4.0 if you replace also B18 cygwin.dll with
>Sergey's patched one. But unfortunately, imake and some other binutils stop
>to work with the new cygwin.dll.
>
>With the new cygwin.dll I was also able to succesfuly build und run the
>exemplary reloctable dll at
>http://www.cygnus.com/misc/gnu-win32/building-reloc-dlls.txt which does not
>run with the original one.

One thing you need to be aware of is that switching to Sergey's
cygwin.dll changes the way symlinks are identified. If you had symlinks
prior to installing the rebuilt cygwin.dll, they don't disappear; but
they are no longer recognized as symlinks until you set their system
bit (requiring the use of attrib, not chmod -- or changing properties
one by one).

As Sergey has explained, the reason for doing this was to spead up
fstats. Previously, each file had to be opened and read to determine if
it was a symbolic link. With Sergey's modifications, the open/read test
is only done if the system bit is set -- if it's not set, cygwin.dll
assumes it's not a symlink.

At one point, I believe Sergey indicated he had a utility to search for
and update these "non-conforming" symlink files; but it was not
included in the files he uploaded for distribution. I found my symlinks
using Start->Find->Files or Folders->Advanced to search for
"!<symlink>". (For more than one partition/drive, you have to set the
"Look in:" field under Name & Location.) Save the list to a file. If
you set the system bit on extra files, it's not catastrophic; but you
lose some of the performance speedup this change is meant to provide so
it would be best if you verify your list to make sure they are actually
symlinks. (For example, cygwin.dll will be found because it contains
"!<symlink>", but it is definitely not a symlink.) Real symlinks will
contain only 1 line ("!<symlink>" & the path pointed to) so they should
be very small -- less than 100 bytes unless you've got REALLY long
directory paths. Once verified, you can do something like
	for f in `cat links.list`; do
	  attrib +s $f
	done
(Realize that attrib expects DOS-style [C:\bin\link] filenames.)

-- 
James Dumser    972-462-5335 dumser@ti.com
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]