command.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  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. pid_node* prev;
  18. pid_node* next;
  19. };
  20. typedef struct{
  21. pid_node* first;
  22. pid_node* last;
  23. }pid_list;
  24. /* --- Extern --- */
  25. extern char* cmdlist[];
  26. extern boolean exitsh;
  27. /* --- Fonctions --- */
  28. /**
  29. * Initialise la liste de PID
  30. * @param pid_list* La liste de PID
  31. */
  32. void ini_pid_list(pid_list*);
  33. /**
  34. * Ajoute un PID dans la liste
  35. * @param pid_list* La liste de PID
  36. * @param pid_t Le pid
  37. * @param int Le numero de job
  38. * @return Le noeud crée
  39. */
  40. pid_node* add_pid(pid_list*, pid_t, int);
  41. /**
  42. * Cherche un PID dans la liste
  43. * @param pid_list* La liste de PID
  44. * @param pid_t le PID
  45. * @return Le noeud du pid
  46. */
  47. pid_node* search_pid(pid_list*, pid_t);
  48. /**
  49. * Supprime un PID de la liste
  50. * @param pid_list* La liste de PID
  51. * @param pid_node* Le noeud à supprimer
  52. */
  53. void remove_pid(pid_list*, pid_node*);
  54. /**
  55. * Vide la liste de PID
  56. * @param pid_list* La liste de PID
  57. */
  58. void clean_pid(pid_list*);
  59. /**
  60. * Indique si un commande est une commande interne
  61. * @param char* La commande
  62. * @return Truu : oui / False : non
  63. */
  64. boolean is_internal_cmd(const char*);
  65. /**
  66. * Lance une commande intene
  67. * @param Commande* La structure de la commande
  68. * @return Le statut
  69. */
  70. int launch_internal_command(Command*);
  71. /* --- Commandes --- */
  72. /**
  73. * Change le dossier de travail actuel
  74. * @param int argc
  75. * @param char** argv
  76. * @return Statut
  77. */
  78. int cd(int, char**);
  79. /**
  80. * Quitte le shell
  81. * @param int argc
  82. * @param char** argv
  83. * @return Statut
  84. */
  85. int exit_sh(int, char**);
  86. /**
  87. * Statut de la dernière éxecution
  88. * @param int argc
  89. * @param char** argv
  90. * @return Statut
  91. */
  92. int status(int, char**);
  93. int set_env(int, char**);
  94. int unset_env(int, char**);
  95. int set_local(int, char**);
  96. int unset_local(int, char**);
  97. int myls(int, char**);
  98. int myps(int, char**);
  99. #endif /* COMMAND_H */