Skip to content
Snippets Groups Projects
Select Git revision
  • 8fab4d99e2eb27cf3d99b4518182af721c4470e2
  • main default protected
  • br_A
3 results

file.94.java

Blame
  • main.c 933 B
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #include "commands.h"
    #include "utils.h"
    
    static void release_argv(int argc, char** argv);
    
    int main()
    {
      char buf[8096];
      int argc;
      char** argv;
    
      while (1) {
        fgets(buf, 8096, stdin);
    
        mysh_parse_command(buf, &argc, &argv);
    
        if (strcmp(buf, "") == 0) {
          goto release_and_continue;
        } else if (strcmp(argv[0], "cd") == 0) {
          do_cd(argc, argv);
        } else if (strcmp(argv[0], "pwd") == 0) {
          do_pwd(argc, argv);
        } else if (strcmp(argv[0], "exit") == 0) {
          goto release_and_continue;
        } else {
          fprintf(stderr, "%s: command not found\n", argv[0]);
        }
    release_and_continue:
        release_argv(argc, argv);
        continue;
    release_and_exit:
        release_argv(argc, argv);
        break;
      }
    
      return 0;
    }
    
    static void release_argv(int argc, char** argv) {
      for (int i = 0; i < argc; ++i) {
        free(argv[i]);
      }
      free(argv);
    }