[Libsysio-commit] HEAD: libsysio/src getdirentries.c
Brought to you by:
lward
From: Lee W. <lw...@us...> - 2004-04-14 16:03:56
|
Update of /cvsroot/libsysio/libsysio/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2080 Modified Files: getdirentries.c Log Message: Shouldn't call getdirentries inode operation on anything but directories. The default device operation behavior is to abort (it's an illegal op). Index: getdirentries.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/getdirentries.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -w -b -B -p -r1.9 -r1.10 --- getdirentries.c 31 Mar 2004 17:43:18 -0000 1.9 +++ getdirentries.c 14 Apr 2004 16:03:48 -0000 1.10 @@ -1,3 +1,4 @@ +#include <unistd.h> #include <stdlib.h> #ifdef __GLIBC__ #include <alloca.h> @@ -5,6 +6,7 @@ #include <string.h> #include <errno.h> #include <sys/types.h> +#include <sys/stat.h> #include <dirent.h> #include <sys/queue.h> @@ -32,6 +34,11 @@ _getdirentries64(int fd, return -1; } + if (!S_ISDIR(fil->f_ino->i_mode)) { + errno = ENOTDIR; + return -1; + } + cc = (*fil->f_ino->i_ops.inop_getdirentries)(fil->f_ino, buf, |