#include "shared.h" #include "command.h" #include #include #include #include #include #include int main (ARGUMENTS) { if (argc < 1) { error("error: argument 0 missing"); } struct stat buf; lstat(argv[0], &buf); if (!S_ISLNK(buf.st_mode)) { if (argc < 2) { printf("usage: lazysphere [function [arguments]...]\n\n"); printf("currently defined functions:\n"); printf("\tdd, cat, yes, echo, printf, id, groups, ls\n"); return EXIT_SUCCESS; } argc--; argv = &argv[1]; } const char* cmd; if (strncmp("./", argv[0], 2) == 0) { cmd = argv[0] + 2; } else { cmd = argv[0]; } if (streql(cmd, "dd")) { return dd(NEXT_ARGS); } else if (streql(cmd, "cat")) { return cat(NEXT_ARGS); } else if (streql(cmd, "yes")) { return yes(NEXT_ARGS); } else if (streql(cmd, "echo")) { return echo(NEXT_ARGS); } else if (streql(cmd, "printf")) { return print(NEXT_ARGS); } else if (streql(cmd, "groups")) { return groups(); } else if (streql(cmd, "id")) { return user_id(); } else if (streql(cmd, "ls")) { return ls(NEXT_ARGS); } else { error("error: invalid command %s", cmd); } return EXIT_SUCCESS; }