Every call tomkfs()must initialize theFilesystemthat its parameterfilespoints to in such a waythat callingmkfs()on differentFilesystemvariables causes each one to be adifferentfilesystem. Inother words, callingmkfsseveral times on differentFilesystemvariables will not cause them to shareany files or directories.4.2Functions for creating files and directoriesint touch(Filesystem *files, const char arg);This function’s usual effect is to create a file, if it does not already exist. In real UNIX, if thetouchcommand is given with the name of a file that does not exist, a new, empty file will be created with thatname; the usual effect of this function in your project is analogous. In real UNIX, iftouchis given thename of an already–existing file, it will update that file’s timestamp, however, this project has no notionof file or directory modification times or timestamps.• If the function’s argumentargis a name that does not refer to an existing file or directory locatedin the current directory at the time the function is called, its effect is to create a file with that namein the current directory (the current directory is mentioned further below).• Ifargis the name of a subdirectory or a file that already exists in the current directory, or is.(asingle period),.., or/(a single forward slash), this function should have no effect.• Ifargdoes not consist solely of a forward–slash character, yet it contains a forward–slash characteranywhere, the function should return the value-1without making any modification to anythingin itsFilesystemparameter.In the real UNIX shell a command like “touch rodent/hamster” would create a file namedhamsterin the subdirectoryrodentof the current directory (if it existed), because the forward slash is adirectory separator. However, for simplicity in this project, such a command argument will just beinvalid.