[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Lost] [Patch] [3/3] Shell auf io_get_absolute_path umstellen



Im letzten Schritt wird die Shell auf die Neuerungen angepaßt. shell_get_absolute_path() wird abgeschafft, die Shell arbeitet jetzt mit io_get_absolute_path().
Index: commmands.c
===================================================================
--- commmands.c	(Revision 602)
+++ commmands.c	(Arbeitskopie)
@@ -301,7 +301,7 @@
         return -1;
     } else {
         cd_args++;
-        char* path = shell_get_absolute_path(cd_args);
+        char* path = io_get_absolute_path(cd_args);
 
         DIR* dir = opendir(path);
         if (dir == NULL) {
Index: shell.c
===================================================================
--- shell.c	(Revision 602)
+++ shell.c	(Arbeitskopie)
@@ -150,7 +150,7 @@
     } else if (argc == 2) {
         // Wenn nur ein Argument uebergeben wird, wird das Argument als
         // Dateiname fuer ein Shell-Skript benutzt.
-        char* path = shell_get_absolute_path(argv[1]);
+        char* path = io_get_absolute_path(argv[1]);
         FILE* script = fopen(path, "r");
         free(path);
 
@@ -240,60 +240,6 @@
 }
 
 
-char* shell_get_absolute_path(char* path)
-{
-    char* cwd = getcwd(NULL, 0);
-    char* buffer = malloc(strlen(path) + strlen(cwd) + 2);
-    size_t cwd_len = strlen(cwd);
-    
-    //Ueberpruefen, ob ein relativer pfad vorliegt
-    if(strcmp(path, "..") == 0)
-    {
-        //CWD kopieren
-        memcpy(buffer, cwd, cwd_len + 1);
-
-        int i = strlen(buffer) - 2;
-        for(; i > 0; i--)
-        {
-            if(buffer[i] == '/')
-            {
-                if(buffer[i-1] == ':')
-                {
-                    i++;
-                }
-                buffer[i] = 0;
-                break;
-            }
-        }
-    }
-    else if((strcmp(path, ".") == 0) && (strlen(path) == 1))
-    {
-        memcpy(buffer, cwd, cwd_len);
-        buffer[cwd_len] = 0;
-    }
-    else if(strstr(path, ":/") == NULL)
-    {
-        //CWD kopieren
-        memcpy(buffer, cwd, cwd_len);
-
-
-        if(buffer[cwd_len-1] != '/')
-        {
-            buffer[cwd_len] = '/';
-            memcpy((void*)((dword)buffer + cwd_len + 1), path, strlen(path) + 1);
-        }
-        else
-        {
-            memcpy((void*)((dword)buffer + cwd_len), path, strlen(path) + 1);
-        }
-    }
-    else
-    {
-        memcpy(buffer, path, strlen(path) + 1);
-    }
-    return buffer;
-}
-
 /**
  * Testet ob der Befehl am Anfang der uebergebenen Kommandozeile steht.
  *
Index: shell.h
===================================================================
--- shell.h	(Revision 602)
+++ shell.h	(Arbeitskopie)
@@ -36,8 +36,6 @@
 #ifndef _SHELL_H_
 #define _SHELL_H_
 
-char* shell_get_absolute_path(char* path);
-
 bool shell_match_command(const char* cmd, const char* cmdline);
 
 int shell_command_default(int argc, char* argv[], const char* args);