Quellcode durchsuchen

Preparation integration cmd myls et myps

Loquicom vor 6 Jahren
Ursprung
Commit
b044ae285d
4 geänderte Dateien mit 58 neuen und 0 gelöschten Zeilen
  1. 45 0
      command.c
  2. 4 0
      command.h
  3. 8 0
      mysh.c
  4. 1 0
      mysh.h

+ 45 - 0
command.c

@@ -23,6 +23,7 @@ extern Error error;
 extern pid_t last;
 extern int status_cmd;
 extern int result_cmd;
+extern char base_path[];
 char* cmdlist[] = {
     "cd",
     "exit",
@@ -31,6 +32,8 @@ char* cmdlist[] = {
     "unsetenv",
     "set",
     "unset",
+    "myls",
+    "myps",
     NULL
 };
 boolean exitsh = false;
@@ -151,6 +154,16 @@ int launch_internal_command(Command* cmd) {
     else if (strncmp(cmd->name, cmdlist[6], length) == 0) {
         result = unset_local(cmd->argc, cmd->argv);
         return result;
+    }
+    //myls
+    else if (strncmp(cmd->name, cmdlist[7], length) == 0) {
+        result = myls(cmd->argc, cmd->argv);
+        return result;
+    }        
+    //myps
+    else if (strncmp(cmd->name, cmdlist[8], length) == 0) {
+        result = myps(cmd->argc, cmd->argv);
+        return result;
     }   
     //Aucune commande
     else {
@@ -323,4 +336,36 @@ int unset_local(int argc, char** argv){
         return EXIT_FAILURE;
     }
     return EXIT_SUCCESS;
+}
+
+int myls(int argc, char** argv){
+    //Preparation nom cmd
+    int length = strlen(base_path);
+    char* path = malloc(sizeof(char) * (length + 4 + 1));
+    memset(path, 0, length + 4 + 1);
+    strncpy(path, base_path, length);
+    path[length] = '/';
+    path[length + 1] = 'm';
+    path[length + 2] = 'y';
+    path[length + 3] = 'l';
+    path[length + 4] = 's';
+    //Execution
+    //return exec_file(path, argv);
+    return 0;
+}
+
+int myps(int argc, char** argv){
+    //Preparation nom cmd
+    int length = strlen(base_path);
+    char* path = malloc(sizeof(char) * (length + 4 + 1));
+    memset(path, 0, length + 4 + 1);
+    strncpy(path, base_path, length);
+    path[length] = '/';
+    path[length + 1] = 'm';
+    path[length + 2] = 'y';
+    path[length + 3] = 'p';
+    path[length + 4] = 's';
+    //Execution
+    //return exec_file(path, argv);
+    return 0;
 }

+ 4 - 0
command.h

@@ -71,5 +71,9 @@ int set_local(int, char**);
 
 int unset_local(int, char**);
 
+int myls(int, char**);
+
+int myps(int, char**);
+
 #endif /* COMMAND_H */
 

+ 8 - 0
mysh.c

@@ -28,6 +28,7 @@ extern boolean exitsh;
 extern pid_t active;
 int status_cmd = -1;
 int result_cmd = -1;
+char base_path[BUFFER_SIZE];
 
 /* --- Global --- */
 pid_list pidlist;
@@ -150,6 +151,13 @@ int main(int argc, char* argv[], char* envp[]) {
     //Initialisation structures
     error_init();
     ini_pid_list(&pidlist);
+    //Recup chemain de base de l'application
+    if (getcwd(base_path, sizeof (base_path)) == NULL) {
+        addperror("Impossible de récuperer le chemin actuel");
+        error.print("Erreur pendant l'initialisation\n");
+        clean_pid(&pidlist);
+        error.exit_err();
+    }
     //Lancement ipc
     if(!setup_ipc(envp)){
         error.print("Erreur pendant l'initialisation\n");

+ 1 - 0
mysh.h

@@ -11,6 +11,7 @@
 /* --- Extern --- */
 extern int status_cmd;
 extern int result_cmd;
+extern char base_path[];
 
 /* --- Fonctions --- */
 /**