Here is a small program to print out the "inode" number
returned by cygwin.
#include <sys/stat.h>
main(int argc, char* argv[])
{
char* path;
struct stat buf;
int err;
path = argv[1];
err = stat(path, &buf);
if (err != 0) {
perror("stat failed");
} else {
printf("ino=%u\n", buf.st_ino);
}
}
let's see what happens:
cd /cygwin/ntfs-partition
$ touch t
$ inode t
ino=45060
$ mv t x
$ inode x
ino=45060
cd /cygwin/fat-partition
$ touch t
$ inode t
ino=3633626
$ mv t x
$ inode x
ino=3633630
Cygwin does return an inode (I thought it didn't, but it might have been
added recently, because I update cygwin from time to time).
It looks like they're using the same trick as linux.
(That makes me wonder: does tla work on a VFAT partition
that is mounted on a linux machine? Could someone try this out?)
Now, the issue is that tla uses the inode value to detect that a file
was renamed. Same inode number == same file. This logic fails
on FAT partitions.