From 5e7ec59ff0820f26e7d57ba6bc3f5ac262bcafe5 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Sat, 6 Jul 2002 00:00:40 +0000 Subject: Stupid filesystems like cramfs fail to guarantee that st_ino and st_dev uniquely identify a file, contrary to SuSv3, so we cannot be quite so precise as to require an exact match. Settle for something less... Grumble... -Erik --- libc/termios/ttyname.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'libc/termios') diff --git a/libc/termios/ttyname.c b/libc/termios/ttyname.c index 695d75ee0..c5f22e405 100644 --- a/libc/termios/ttyname.c +++ b/libc/termios/ttyname.c @@ -21,8 +21,17 @@ static int __check_dir_for_tty_match(char * dirname, struct stat *st, char *buf, while ((d = readdir(fp)) != 0) { strncpy(buf+len, d->d_name, buflen); buf[buflen]='\0'; - if (stat(buf, &dst) == 0 && st->st_dev == dst.st_dev - && st->st_ino == dst.st_ino) +#if 0 + /* Stupid filesystems like cramfs fail to guarantee that + * st_ino and st_dev uniquely identify a file, contrary to + * SuSv3, so we cannot be quite so precise as to require an + * exact match. Settle for something less... Grumble... */ + if (stat(buf, &dst) == 0 && + st->st_dev == dst.st_dev && st->st_ino == dst.st_ino) +#else + if (stat(buf, &dst) == 0 && + S_ISCHR(dst.st_mode) && st->st_rdev == dst.st_rdev) +#endif { closedir(fp); return 0; -- cgit v1.2.3