I'm writing a c program to list the files in a given directory but I also want to display the hidden files. I can't figure this out in c. Does anyone know how to do this? Here's the code I have so far:
#include <unistd.h>
#include <stdio.h>
#include <dirent.h>
#include <string.h>
#include <sys/stat.h>
#include <stdlib.h>
void printdir( char *dir, int depth );
int main( int argc, char *argv[ ] )
{
printf( "\n\nDirectory scan of %s\n", argv[1] );
printdir( argv[1], 0 );
printf( "done.\n");
return 0;
}
void printdir( char *dir, int depth )
{
DIR *dp;
struct dirent *entry;
struct stat statbuf;
if( ( dp = opendir( dir ) ) == NULL )
{
perror( "Cannot open directory:\n" );
return;
}
chdir( dir );
while( ( entry = readdir( dp )) != NULL )
{
lstat( entry->d_name, &statbuf );
if( S_ISDIR( statbuf.st_mode) )
{
if( strcmp( ".", entry->d_name ) == 0 || strcmp( "..", entry->d_name ) == 0 )
{
continue;
}
printf( "%*s%s/\n", depth, "", entry->d_name );
printdir( entry->d_name, depth+4 );
}
else
{
printf( "%*s%s\n", depth, "", entry->d_name );
}
}
chdir( ".." );
closedir( dp );
}