From: "Wojciech Galazka" Newsgroups: comp.os.msdos.djgpp Subject: fstat works incorrectly under Windows NT Date: Thu, 6 Apr 2000 12:52:07 +0200 Organization: http://news.icm.edu.pl/ Lines: 30 Message-ID: <8chqb5$78u$1@sunsite.icm.edu.pl> NNTP-Posting-Host: plus273.polkomtel.com.pl Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-2 Content-Transfer-Encoding: 8bit X-Trace: sunsite.icm.edu.pl 955018405 7454 212.2.97.146 (6 Apr 2000 10:53:25 GMT) X-Complaints-To: abuse AT news DOT icm DOT edu DOT pl NNTP-Posting-Date: 6 Apr 2000 10:53:25 GMT X-Newsreader: Microsoft Outlook Express 4.72.3110.5 X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Hi, I wonder if anyone had the same problem before and has any ideas how to work over it. Under Windows NT the command 'ln a b' cannot produce a hard link from a file 'a' to a file 'b'. A close inspection of the ln.c soiurce shows that the problem is in libc/posix/unistd/link.c. link() call doesn't work because the call fstat(destination file) (in this case file 'b') returns 0 in the st_dev field of statbuf struct instead of 3 (the file is on drive d:). Consequently the code snippet from link.cpasted below fails /* Fail if path1 and path2 are on different devices */ if (fstat(fd2, &statbuf2) < 0) return -1; if (statbuf1.st_dev != statbuf2.st_dev) { Fstat itself grabs the information for st_dev field from SFT table, which Windows NT does not to fill correctly for a newly created file. All I could think of this for now is to manually 'update' the SFT table while creating the file. Any other ideas?