forked from KolibriOS/kolibrios
48 lines
629 B
C
48 lines
629 B
C
|
|
||
|
int cmd_cd(char dir[])
|
||
|
{
|
||
|
|
||
|
char temp[256];
|
||
|
unsigned result;
|
||
|
|
||
|
if (NULL == dir)
|
||
|
{
|
||
|
printf(" cd directory\n\r");
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
if ( 0 == strcmp(dir, ".") )
|
||
|
return FALSE;
|
||
|
|
||
|
if ( ( 0 == strcmp(dir, "..") ) && ( 0 != strcmp(cur_dir, "/")) )
|
||
|
{
|
||
|
cur_dir[strlen(cur_dir)-1]='\0';
|
||
|
dir_truncate(cur_dir);
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
if ( '/' == dir[0])
|
||
|
{
|
||
|
if ( dir_check(dir) )
|
||
|
{
|
||
|
strcpy(cur_dir, dir);
|
||
|
return TRUE;
|
||
|
}
|
||
|
return FALSE;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
strcpy(temp, cur_dir);
|
||
|
strcat(temp, dir);
|
||
|
|
||
|
if ( dir_check(temp) )
|
||
|
{
|
||
|
strcpy(cur_dir, temp);
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
}
|