command.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. /*
  2. * File: command.h
  3. * Author: Arthur Brandao
  4. *
  5. * Created on 9 novembre 2018
  6. */
  7. #ifndef COMMAND_H
  8. #define COMMAND_H
  9. /* --- Include --- */
  10. #include <sys/types.h>
  11. #include "constante.h"
  12. #include "parser.h"
  13. /* --- Structure --- */
  14. typedef struct pid_node pid_node;
  15. struct pid_node{
  16. pid_t pid;
  17. int job;
  18. char* cmd;
  19. pid_node* prev;
  20. pid_node* next;
  21. };
  22. typedef struct{
  23. pid_node* first;
  24. pid_node* last;
  25. }pid_list;
  26. /* --- Extern --- */
  27. extern char* cmdlist[];
  28. extern boolean exitsh;
  29. extern int status_cmd;
  30. extern int result_cmd;
  31. extern char base_path[];
  32. extern pid_list pidlist;
  33. /* --- Fonctions --- */
  34. /**
  35. * Initialise la liste de PID
  36. * @param pid_list* La liste de PID
  37. */
  38. void ini_pid_list(pid_list*);
  39. /**
  40. * Ajoute un PID dans la liste
  41. * @param pid_list* La liste de PID
  42. * @param pid_t Le pid
  43. * @param int Le numero de job
  44. * @param char* Le nom de la commande
  45. * @return Le noeud crée
  46. */
  47. pid_node* add_pid(pid_list*, pid_t, int, char*);
  48. /**
  49. * Cherche un PID dans la liste
  50. * @param pid_list* La liste de PID
  51. * @param pid_t le PID
  52. * @return Le noeud du pid
  53. */
  54. pid_node* search_pid(pid_list*, pid_t);
  55. /**
  56. * Supprime un PID de la liste
  57. * @param pid_list* La liste de PID
  58. * @param pid_node* Le noeud à supprimer
  59. */
  60. void remove_pid(pid_list*, pid_node*);
  61. /**
  62. * Vide la liste de PID
  63. * @param pid_list* La liste de PID
  64. */
  65. void clean_pid(pid_list*);
  66. /**
  67. * Indique si un commande est une commande interne
  68. * @param char* La commande
  69. * @return Truu : oui / False : non
  70. */
  71. boolean is_internal_cmd(const char*);
  72. /**
  73. * Lance une commande intene
  74. * @param Commande* La structure de la commande
  75. * @return Le statut
  76. */
  77. int launch_internal_command(Command*);
  78. /* --- Commandes --- */
  79. /**
  80. * Change le dossier de travail actuel
  81. * @param int argc
  82. * @param char** argv
  83. * @return Statut
  84. */
  85. int cd(int, char**);
  86. /**
  87. * Quitte le shell
  88. * @param int argc
  89. * @param char** argv
  90. * @return Statut
  91. */
  92. int exit_sh(int, char**);
  93. /**
  94. * Statut de la dernière éxecution
  95. * @param int argc
  96. * @param char** argv
  97. * @return Statut
  98. */
  99. int status(int, char**);
  100. /**
  101. * AJoute une variable d'environnement
  102. * @param int argc
  103. * @param char** argv
  104. * @return Statut
  105. */
  106. int set_env(int, char**);
  107. /**
  108. * Supprime une variable d'environnement
  109. * @param int argc
  110. * @param char** argv
  111. * @return Statut
  112. */
  113. int unset_env(int, char**);
  114. /**
  115. * Ajoute une variable locale
  116. * @param int argc
  117. * @param char** argv
  118. * @return Statut
  119. */
  120. int set_local(int, char**);
  121. /**
  122. * Supprime une variable locale
  123. * @param int argc
  124. * @param char** argv
  125. * @return Statut
  126. */
  127. int unset_local(int, char**);
  128. /**
  129. * Execute le programme myls
  130. * @param int argc
  131. * @param char** argv
  132. * @return Statut
  133. */
  134. int myls(int, char**);
  135. /**
  136. * Execute le programma myps
  137. * @param int argc
  138. * @param char** argv
  139. * @return Statut
  140. */
  141. int myps(int, char**);
  142. /**
  143. * Affiche tous les jobs
  144. * @param int argc
  145. * @param char** argv
  146. * @return Statut
  147. */
  148. int myjobs(int, char**);
  149. #endif /* COMMAND_H */