/** ls1.c ** purpose list contents of directory or directories ** action if no args, use . else list files in args **/ #include #include #include void do_ls(char []); int main(int ac, char *av[]) { if ( ac == 1 ) do_ls( "." ); /* current directory called . */ else while ( --ac ){ printf("%s:\n", *++av ); do_ls( *av ); } return 0; } void do_ls( char dirname[] ) /* * list files in directory called dirname */ { DIR *dir_ptr; /* the directory */ struct dirent *direntp; /* each entry */ if ( ( dir_ptr = opendir( dirname ) ) == NULL ) fprintf(stderr,"ls1: cannot open %s\n", dirname); else { while ( ( direntp = readdir( dir_ptr ) ) != NULL ) if ( direntp->d_name[0] != '.' ) printf("%s\n", direntp->d_name ); closedir(dir_ptr); } }