1/* vi: set sw=4 ts=4: */ 2/* 3 * Utility routines. 4 * 5 * Based in part on code from sash, Copyright (c) 1999 by David I. Bell 6 * Permission has been granted to redistribute this code under the GPL. 7 * 8 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. 9 */ 10 11#include <sys/stat.h> 12#include "libbb.h" 13 14/* 15 * Return TRUE if fileName is a directory. 16 * Nonexistent files return FALSE. 17 */ 18int FAST_FUNC is_directory(const char *fileName, const int followLinks, struct stat *statBuf) 19{ 20 int status; 21 struct stat astatBuf; 22 23 if (statBuf == NULL) { 24 /* use auto stack buffer */ 25 statBuf = &astatBuf; 26 } 27 28 if (followLinks) 29 status = stat(fileName, statBuf); 30 else 31 status = lstat(fileName, statBuf); 32 33 status = (status == 0 && S_ISDIR(statBuf->st_mode)); 34 35 return status; 36} 37