-
Notifications
You must be signed in to change notification settings - Fork 515
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Toni Rönkkö
committed
Aug 26, 2017
1 parent
9064fdf
commit d2faf06
Showing
19 changed files
with
506 additions
and
32 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,105 @@ | ||
/* | ||
* Example program demonstrating the use of scandir function. | ||
* | ||
* Compile this file with Visual Studio and run the produced command in | ||
* console with a directory name argument. For example, command | ||
* | ||
* scandir "c:\Program Files" | ||
* | ||
* might output something like | ||
* | ||
* ./ | ||
* ../ | ||
* 7-Zip/ | ||
* Internet Explorer/ | ||
* Microsoft Visual Studio 9.0/ | ||
* Microsoft.NET/ | ||
* Mozilla Firefox/ | ||
* | ||
* Copyright (C) 2006-2012 Toni Ronkko | ||
* This file is part of dirent. Dirent may be freely distributed | ||
* under the MIT license. For all details and documentation, see | ||
* https://github.com/tronkko/dirent | ||
*/ | ||
#include <stdio.h> | ||
#include <stdlib.h> | ||
#include <string.h> | ||
#include <dirent.h> | ||
|
||
static void list_directory (const char *dirname); | ||
|
||
|
||
int | ||
main( | ||
int argc, char *argv[]) | ||
{ | ||
int i; | ||
|
||
/* For each directory in command line */ | ||
i = 1; | ||
while (i < argc) { | ||
list_directory (argv[i]); | ||
i++; | ||
} | ||
|
||
/* List current working directory if no arguments on command line */ | ||
if (argc == 1) { | ||
list_directory ("."); | ||
} | ||
return EXIT_SUCCESS; | ||
} | ||
|
||
/* | ||
* List files and directories within a directory. | ||
*/ | ||
static void | ||
list_directory( | ||
const char *dirname) | ||
{ | ||
struct dirent **files; | ||
int i; | ||
int n; | ||
|
||
/* Scan files in directory */ | ||
n = scandir (dirname, &files, NULL, alphasort); | ||
if (n >= 0) { | ||
|
||
/* Loop through file names */ | ||
for (i = 0; i < n; i++) { | ||
struct dirent *ent; | ||
|
||
/* Get pointer to file entry */ | ||
ent = files[i]; | ||
|
||
/* Output file name */ | ||
switch (ent->d_type) { | ||
case DT_REG: | ||
printf ("%s\n", ent->d_name); | ||
break; | ||
|
||
case DT_DIR: | ||
printf ("%s/\n", ent->d_name); | ||
break; | ||
|
||
case DT_LNK: | ||
printf ("%s@\n", ent->d_name); | ||
break; | ||
|
||
default: | ||
printf ("%s*\n", ent->d_name); | ||
} | ||
|
||
} | ||
|
||
/* Release file names */ | ||
for (i = 0; i < n; i++) { | ||
free (files[i]); | ||
} | ||
free (files); | ||
|
||
} else { | ||
printf ("Cannot open directory %s\n", dirname); | ||
} | ||
} | ||
|
||
|
Oops, something went wrong.