How can I check whether this is directory-path or any filename-path?

15,792

Solution 1

man 2 stat:

NAME
     fstat, fstat64, lstat, lstat64, stat, stat64 -- get file status

...

     struct stat {
         dev_t           st_dev;           /* ID of device containing file */
         mode_t          st_mode;          /* Mode of file (see below) */

...

     The status information word st_mode has the following bits:

...

     #define        S_IFDIR  0040000  /* directory */

Solution 2

You can use S_ISDIR macro .

Solution 3

thanks zed_0xff and lgor Oks

this things can be check by this sample code

#include<stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int main()
{
struct stat statbuf;

FILE *fb = fopen("/home/jeegar/","r");
if(fb==NULL)
    printf("its null\n");
else
    printf("not null\n");

stat("/home/jeegar/", &statbuf);

if(S_ISDIR(statbuf.st_mode))
    printf("directory\n");
else
    printf("file\n");
return 0;
}

output is

its null
directory
Share:
15,792
Jeegar Patel
Author by

Jeegar Patel

Written first piece of code at Age 14 in HTML &amp; pascal Written first piece of code in c programming language at Age 18 in 2007 Professional Embedded Software engineer (Multimedia) since 2011 Worked in Gstreamer, Yocto, OpenMAX OMX-IL, H264, H265 video codec internal, ALSA framework, MKV container format internals, FFMPEG, Linux device driver development, Android porting, Android native app development (JNI interface) Linux application layer programming, Firmware development on various RTOS system like(TI's SYS/BIOS, Qualcomm Hexagon DSP, Custom RTOS on custom microprocessors)

Updated on June 09, 2022

Comments

  • Jeegar Patel
    Jeegar Patel almost 2 years

    by this

    Why does fopen("any_path_name",'r') not give NULL as return?

    i get to know that in linux directories and files are considered to be file. so when i give any directory-path or file-path in fopen with read mode it doesnt give NULL file descriptor and?

    so how can i check that whether it is dirctory path or file-path ? if i am getting some path from command argument?