123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- /*
- * File: command.h
- * Author: Arthur Brandao
- *
- * Created on 9 novembre 2018
- */
- #ifndef COMMAND_H
- #define COMMAND_H
- /* --- Include --- */
- #include <sys/types.h>
- #include "constante.h"
- #include "parser.h"
- /* --- Structure --- */
- typedef struct pid_node pid_node;
- struct pid_node{
- pid_t pid;
- int job;
- char* cmd;
- pid_node* prev;
- pid_node* next;
- };
- typedef struct{
- pid_node* first;
- pid_node* last;
- }pid_list;
- /* --- Extern --- */
- extern char* cmdlist[];
- extern boolean exitsh;
- extern int status_cmd;
- extern int result_cmd;
- extern char base_path[];
- extern pid_list pidlist;
- /* --- Fonctions --- */
- /**
- * Initialise la liste de PID
- * @param pid_list* La liste de PID
- */
- void ini_pid_list(pid_list*);
- /**
- * Ajoute un PID dans la liste
- * @param pid_list* La liste de PID
- * @param pid_t Le pid
- * @param int Le numero de job
- * @param char* Le nom de la commande
- * @return Le noeud crée
- */
- pid_node* add_pid(pid_list*, pid_t, int, char*);
- /**
- * Cherche un PID dans la liste
- * @param pid_list* La liste de PID
- * @param pid_t le PID
- * @return Le noeud du pid
- */
- pid_node* search_pid(pid_list*, pid_t);
- /**
- * Supprime un PID de la liste
- * @param pid_list* La liste de PID
- * @param pid_node* Le noeud à supprimer
- */
- void remove_pid(pid_list*, pid_node*);
- /**
- * Vide la liste de PID
- * @param pid_list* La liste de PID
- */
- void clean_pid(pid_list*);
- /**
- * Indique si un commande est une commande interne
- * @param char* La commande
- * @return Truu : oui / False : non
- */
- boolean is_internal_cmd(const char*);
- /**
- * Lance une commande intene
- * @param Commande* La structure de la commande
- * @return Le statut
- */
- int launch_internal_command(Command*);
- /* --- Commandes --- */
- /**
- * Change le dossier de travail actuel
- * @param int argc
- * @param char** argv
- * @return Statut
- */
- int cd(int, char**);
- /**
- * Quitte le shell
- * @param int argc
- * @param char** argv
- * @return Statut
- */
- int exit_sh(int, char**);
- /**
- * Statut de la dernière éxecution
- * @param int argc
- * @param char** argv
- * @return Statut
- */
- int status(int, char**);
- /**
- * AJoute une variable d'environnement
- * @param int argc
- * @param char** argv
- * @return Statut
- */
- int set_env(int, char**);
- /**
- * Supprime une variable d'environnement
- * @param int argc
- * @param char** argv
- * @return Statut
- */
- int unset_env(int, char**);
- /**
- * Ajoute une variable locale
- * @param int argc
- * @param char** argv
- * @return Statut
- */
- int set_local(int, char**);
- /**
- * Supprime une variable locale
- * @param int argc
- * @param char** argv
- * @return Statut
- */
- int unset_local(int, char**);
- /**
- * Execute le programme myls
- * @param int argc
- * @param char** argv
- * @return Statut
- */
- int myls(int, char**);
- /**
- * Execute le programma myps
- * @param int argc
- * @param char** argv
- * @return Statut
- */
- int myps(int, char**);
- /**
- * Affiche tous les jobs
- * @param int argc
- * @param char** argv
- * @return Statut
- */
- int myjobs(int, char**);
- #endif /* COMMAND_H */
|