parser.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*
  2. * File: parser.h
  3. * Author: Arthur Brandao
  4. *
  5. * Created on 31 octobre 2018
  6. */
  7. #ifndef PARSER_H
  8. #define PARSER_H
  9. /* --- Include --- */
  10. #include "constante.h"
  11. /* --- Structure --- */
  12. typedef struct {
  13. char* cmd; //La commande en string
  14. char* name; //Le nom de la commande
  15. int argc; //Le nombre d'argument
  16. char** argv; //Les arguments
  17. int input; //Descripteur de fichier d'entré
  18. int output; //Descripteur de fichier de sortie
  19. int error; //Descripteur de fihier d'erreur
  20. int next; //Lien avec la prochaine commande
  21. } Command;
  22. typedef struct {
  23. char* line; //La ligne de commande
  24. Command** cmd; //Tableau avec toutes les commandes
  25. int length; //Taille du tableau
  26. boolean bck; //Si l'ensemble de commande se fait en fond
  27. } CommandTab;
  28. /* --- Fonctions --- */
  29. /**
  30. * Parse une ligne de commande (separe les commandes et repere le lien entre elle)
  31. * @param CommandTab* La structure contenant le resultat
  32. * @param char* La ligne de commande à parser
  33. * @return int SHELL_OK si réussite, SHELL_ERR sinon
  34. */
  35. int parse_line(CommandTab*, char*);
  36. /**
  37. * Parse une commande (repere changement entrée sortie, wildcard, découpe les
  38. * arguments)
  39. * @param Command* La structure commande à parser (initialisée dans une
  40. * CommandTab par la fonction parse_line)
  41. * @return int SHELL_OK si réussite, SHELL_ERR sinon
  42. */
  43. int parse_command(Command*);
  44. /**
  45. * Parse toutes les commandes d'un CommandTab
  46. * @param CommandTab* La structure contenant les commandes initialisée dans
  47. * la fonctions parse_line)
  48. * @return int SHELL_OK si réussite, SHELL_FAIL si le parse d'une des commandes
  49. * échoue
  50. */
  51. int parse_all_command(CommandTab*);
  52. /**
  53. * Vide un structure CommandTab
  54. * @param CommandTab* La structure à nettoyer
  55. */
  56. void clean_command(CommandTab*);
  57. #endif /* PARSER_H */