=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mg/fileio.c,v retrieving revision 1.53 retrieving revision 1.54 diff -u -r1.53 -r1.54 --- src/usr.bin/mg/fileio.c 2005/10/13 19:46:45 1.53 +++ src/usr.bin/mg/fileio.c 2005/10/13 20:23:01 1.54 @@ -1,4 +1,4 @@ -/* $OpenBSD: fileio.c,v 1.53 2005/10/13 19:46:45 kjell Exp $ */ +/* $OpenBSD: fileio.c,v 1.54 2005/10/13 20:23:01 kjell Exp $ */ /* This file is in the public domain. */ @@ -38,7 +38,7 @@ } /* If 'fn' is a directory open it with dired. */ - if ((stat(fn, &statbuf) == 0) && S_ISDIR(statbuf.st_mode)) + if (fisdir(fn) == TRUE) #ifdef NO_DIRED return (FIOERR); #else @@ -620,4 +620,22 @@ closedir(dirp); return (last); +} + +/* + * Test if a supplied filename refers to a directory + * Returns ABORT on error, TRUE if directory. FALSE otherwise + */ +int +fisdir(const char *fname) +{ + struct stat statbuf; + + if (stat(fname, &statbuf) != 0) + return (ABORT); + + if (S_ISDIR(statbuf.st_mode)) + return (TRUE); + + return (FALSE); }