|
@@ -151,6 +151,14 @@ int get_command(Command* c, char* line){
|
|
|
int set_io(Command* c, char* filename, int redir){
|
|
|
//Declaration variable
|
|
|
int file;
|
|
|
+ //Si fichier existe et on supprime
|
|
|
+ if((redir == SHELLRE_OUT || redir == SHELLRE_ERR || redir == SHELLRE_ALL) && access(filename, F_OK) != ERR){
|
|
|
+ if(unlink(filename) == ERR){
|
|
|
+ addperror("Impossible de supprimer le fichier");
|
|
|
+ serrno = SEOPENF;
|
|
|
+ return SHELL_ERR;
|
|
|
+ }
|
|
|
+ }
|
|
|
//Ouverture du fichier
|
|
|
file = open(filename, O_CREAT | O_RDWR, S_IRWXU);
|
|
|
if(file == ERR){
|
|
@@ -158,6 +166,12 @@ int set_io(Command* c, char* filename, int redir){
|
|
|
serrno = SEOPENF;
|
|
|
return SHELL_ERR;
|
|
|
}
|
|
|
+ //On se met à la fin du fichier
|
|
|
+ if(lseek(file, 0L, SEEK_END) == ERR){
|
|
|
+ addperror("Impossible de se deplacer dans le fichier");
|
|
|
+ serrno = SEOPENF;
|
|
|
+ return SHELL_ERR;
|
|
|
+ }
|
|
|
//Analyse dans quel descripteur il doit etre mis
|
|
|
switch(redir){
|
|
|
case SHELLR_IN:
|