Information

Author(s) Paulin Eliat-Eliat Anthony Doeraene
Deadline No deadline
Submission limit No limitation

Tags

Sign in

Number of files

As you perhaps already know, in Linux : "everything is a file". Indeed, even folders are actually files! The two most important type of files are regular files and folders.

Moreover, the structures of files in Linux can be represented as a tree, with "/" the root of all files.

You must implement a function called get_number_of_files which will take a path in argument, and return the number of regular files contained in this path (or in sub-folder). If the path doesn't exist, your function should return -1;

Hint : Implementing a recursive functions is easier and efficient !

For example:

  • For the folder Documents, which contains : a, b et c (3 regular files) : get_number_of_files("./Documents") returns 3
  • For the folder Home, which contains the folder Documents (see above), and the folder Downloads which itself contains : d (regular file) et y (folder). y contains only e (regular file). get_number_of_files("./Home") returns 5

N.B.: We recommend you to use these functions of the standard library : stat, S_ISREG, opendir, readdir.

Be careful that readdir return also the path to "." et ".." in a folder. You should ignore these path, otherwise, it will create infinite loops.


Get Number Files
/*
 *@pre path is a string containing the path to an hypothetical folder/file
 *@post return - number of files contained in "path"
 *              - -1 if the path doesn't exists
 *              - -2 if opendir failed
 */
int get_number_of_files (const char *path){