#include "util/shared.h" #include "command.h" #include #include #include #include #include #include char* cmd; int main (ARGUMENTS) { if (argc < 1) { fprintf(stderr, "fatal: argument 0 missing"); return EXIT_FAILURE; } #ifdef CHECK_LINK 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, tail, head, ed, tee, true, false, tee, whoami, wc, xargs, tac, rm, cp, mkdir, mv\n"); return EXIT_SUCCESS; } argc--; argv = &argv[1]; } #endif 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") || streql(cmd, "dir")) { return ls(NEXT_ARGS); } else if (streql(cmd, "lsd")) { printf("look at all the funny colors\n"); } else if (streql(cmd, "tail")) { return tail(NEXT_ARGS); } else if (streql(cmd, "head")) { return head(NEXT_ARGS); } else if (streql(cmd, "ed")) { return ed(NEXT_ARGS); } else if (streql(cmd, "tee")) { return tee(NEXT_ARGS); } else if (streql(cmd, "true")) { return EXIT_SUCCESS; } else if (streql(cmd, "false")) { return EXIT_FAILURE; } else if (streql(cmd, "whoami")) { return whoami(NEXT_ARGS); } else if (streql(cmd, "wc")) { return wc(NEXT_ARGS); } else if (streql(cmd, "xargs")) { return xargs(NEXT_ARGS); } else if (streql(cmd, "tac")) { return tac(NEXT_ARGS); } else if (streql(cmd, "rm")) { return rm(NEXT_ARGS); } else if (streql(cmd, "cp")) { return cp(NEXT_ARGS); } else if (streql(cmd, "mkdir")) { return makedir(NEXT_ARGS); } else if (streql(cmd, "mv")) { return mv(NEXT_ARGS); } else { fprintf(stderr, "lazysphere: invalid command %s", cmd); return EXIT_FAILURE; } return EXIT_SUCCESS; }