mysh.c 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /*
  2. * File: mysh.c
  3. * Author: Arthur Brandao
  4. *
  5. * Created on 31 octobre 2018, 12:43
  6. */
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <unistd.h>
  10. #include "parser.h"
  11. void test_write(){
  12. char* a = "azerty\n";
  13. int tmp = write(1, a, strlen(a));
  14. printf("%d\n", tmp);
  15. }
  16. void current_rep(){
  17. char buffer[512];
  18. if (getcwd(buffer, sizeof(buffer)) == NULL){
  19. perror("Erreur getcwd() : ");
  20. }
  21. else {
  22. printf("current working directory is: %s\n", buffer);
  23. }
  24. }
  25. void cd(int argc, char** argv){
  26. current_rep();
  27. if(argc > 2) {
  28. printf("too many arguments : 1 required, %d given\n", argc-1);
  29. }
  30. else {
  31. if(argc == 1) {
  32. if(chdir("/") == ERR){
  33. perror("Erreur chdir() : ");
  34. }
  35. }
  36. else {
  37. if(chdir(argv[1]) == ERR){
  38. printf("path does not exist\n");
  39. }
  40. }
  41. }
  42. current_rep();
  43. }
  44. int main(int argc, char* argv[]) {
  45. /*CommandTab ct;
  46. char str[500];
  47. int a;
  48. //Recup ligne
  49. //printf("%s\n", fgets(str, 500, stdin));&
  50. memset(str, 0, 500);
  51. a = read(STDIN, str, 500);
  52. printf("%s\n", str);
  53. //Separe les commandes
  54. a = parse_line(&ct, str);
  55. printf("Result : %d\n\n", a);
  56. //Parse les commandes
  57. a = parse_all_command(&ct);
  58. printf("Result : %d\n\n", a);
  59. //Affiche resultat
  60. for(int i = 0; i < ct.length; i++){
  61. Command* c = ct.cmd[i];
  62. printf("Commande %d (%s) : \n", i, c->name);
  63. for(int j = 0; j < c->argc; j++){
  64. printf(" Argument %d : %s\n", j, c->argv[j]);
  65. }
  66. printf("\n");
  67. }
  68. //Supprime
  69. clean_command(&ct); */
  70. cd(argc, argv);
  71. return (EXIT_SUCCESS);
  72. }