command.h 2.8 KB

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