Mailing-List: contact cygwin-developers-help AT sourceware DOT cygnus DOT com; run by ezmlm
Sender: cygwin-developers-owner AT sourceware DOT cygnus DOT com
Delivered-To: mailing list cygwin-developers AT sourceware DOT cygnus DOT com
Message-Id: <199904122339.SAA16654@modi.xraylith.wisc.edu>
X-Authentication-Warning: modi.xraylith.wisc.edu: localhost.xraylith.wisc.edu [127.0.0.1] didn't use HELO protocol
To: cygwin-developers AT sourceware DOT cygnus DOT com
Subject: struct stat st_dev question
Date: Mon, 12 Apr 1999 18:39:13 -0500
From: Mumit Khan <khan AT xraylith DOT wisc DOT EDU>

I'm trying to debug a problem with egcs and the causes seems to be the
fact that the st_dev member of struct stat is always set to 4096. This 
is with Cygwin b20.1 DLL (and needs to be since egcs-1.2 needs to work
with b20.1 as well as any future release). Can anyone confirm if this 
is indeed intended? 

Here's a simple test case:

=== cut here

  #include <sys/types.h>
  #include <sys/stat.h>
  #include <stdio.h>

  int main (int argc, char *argv[]) {
    const char *path = (argc >= 2) ? argv[1] : "/";
    struct stat s;
    int i = stat (path, &s);
    printf ("stat (%s) = %d\n", path, i);
    printf ("inode = %d\n", s.st_ino);
    printf ("%s.st_dev = %d\n", path, s.st_dev);

    return 0;
  }

=== to here

  $ ./stdev-test-cyg / 
  stat (/) = 0
  inode = 22896814
  /.st_dev = 4096
  $ ./stdev-test-cyg //d
  stat (//d) = 0
  inode = 22642860
  //d.st_dev = 4096
  $ ./stdev-test-cyg //u 
  stat (//u) = 0
  inode = 13213796
  //u.st_dev = 4096

Microsoft's runtime does report different device id's.

Regards,
Mumit