#include #include #include #include #include "common.h" void print_help(const struct Command* commands, const size_t size) { int longestCommand = 0; for (size_t i = 0; i < size; ++i) { int commandLength = strlen(commands[i].name); if (commandLength > longestCommand) longestCommand = commandLength; } for (size_t i = 0; i < size; ++i) { printf("\t%-*s\t %s\n", longestCommand, commands[i].name, commands[i].description); } } struct stat getStat(const char* path) { // fill with 0s by default in the case stat fails struct stat sb = {0}; // the return value signifies if stat failes (e.g. file not found) // unimportant for us if it fails it won't touch sb stat(path, &sb); return sb; } bool isFile(const char* path) { struct stat sb = getStat(path); return S_ISREG(sb.st_mode) || S_ISLNK(sb.st_mode); } bool isDir(const char* path) { struct stat sb = getStat(path); return S_ISDIR(sb.st_mode) || S_ISLNK(sb.st_mode); } void makeDir(const char* path) { // we do not care about the contents but what stat returns struct stat sb; if (stat(path, &sb) < 0) { mkdir(path, 0755); } }