|
@@ -8,17 +8,19 @@
|
|
|
#include <stdlib.h>
|
|
|
#include <unistd.h>
|
|
|
#include "parser.h"
|
|
|
+#include "mysh.h"
|
|
|
|
|
|
-
|
|
|
+/* --- Fonctions privées --- */
|
|
|
void test_write(){
|
|
|
char* a = "azerty\n";
|
|
|
int tmp = write(1, a, strlen(a));
|
|
|
printf("%d\n", tmp);
|
|
|
}
|
|
|
|
|
|
+/* --- Main --- */
|
|
|
int main(int argc, char* argv[]) {
|
|
|
|
|
|
- CommandTab ct;
|
|
|
+ /*CommandTab ct;
|
|
|
char str[500];
|
|
|
int a;
|
|
|
//Recup ligne
|
|
@@ -42,7 +44,42 @@ int main(int argc, char* argv[]) {
|
|
|
printf("Commande en fond : %d\n\n", ct.bck);
|
|
|
}
|
|
|
//Supprime
|
|
|
- clean_command(&ct);
|
|
|
+ clean_command(&ct); */
|
|
|
+ cd(argc, argv);
|
|
|
return (EXIT_SUCCESS);
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+/* --- Commandes internes --- */
|
|
|
+void cd(int argc, char** argv){
|
|
|
+ //Si trop d'arguments
|
|
|
+ if(argc > 2) {
|
|
|
+ printf("too many arguments : 1 required, %d given\n", argc-1);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ //Si aucun argument on vas à la racine
|
|
|
+ if(argc == 1) {
|
|
|
+ if(chdir("/") == ERR){
|
|
|
+ perror("Erreur chdir() : ");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //Sinon on va dans le dossier indiqué par l'utilisateur
|
|
|
+ else {
|
|
|
+ if(chdir(argv[1]) == ERR){
|
|
|
+ printf("path does not exist\n");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //show_current_dir("current working directory is: ", "\n");
|
|
|
}
|
|
|
|
|
|
+/* --- Fonctions utilitaires --- */
|
|
|
+void show_current_dir(const char* before, const char* after){
|
|
|
+ char buffer[512];
|
|
|
+ if (getcwd(buffer, sizeof(buffer)) == NULL){
|
|
|
+ perror("Erreur getcwd() : ");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ printf("%s%s%s", before, buffer, after);
|
|
|
+ }
|
|
|
+}
|