Subversion Repositories Kolibri OS

Rev

Rev 7805 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7805 Rev 8827
1
int cmd_cd(char dir[])
-
 
2
{
1
int cmd_cd(char dir[])
3
 
2
{
4
char temp[256];
-
 
5
unsigned result;
3
	char temp[256];
6
 
4
	unsigned result;
7
if (NULL == dir)
5
 
8
	{
6
	if (NULL == dir) {
9
	#if LANG_ENG
-
 
10
		printf("  cd \n\r");
-
 
11
	#elif LANG_RUS
7
		printf(CMD_CD_USAGE);
12
		printf("  cd <¤¨à¥ªâ®à¨ï>\n\r");
-
 
13
	#endif
-
 
14
	return TRUE;
-
 
15
	}
8
		return TRUE;
16
 
9
	}
17
if ( 0 == strcmp(dir, ".") || 0 == strcmp(dir, "./") )
10
 
18
	return TRUE;
11
	if ( 0 == strcmp(dir, ".") || 0 == strcmp(dir, "./") )
19
 
12
		return TRUE;
20
if (  ( 0 == strcmp(dir, "..") ||  0 == strcmp(dir, "../") ) && ( 0 != strcmp(cur_dir, "/")) )
13
 
21
	{
14
	if (  ( 0 == strcmp(dir, "..") ||  0 == strcmp(dir, "../") ) && ( 0 != strcmp(cur_dir, "/")) ) {
22
	cur_dir[strlen(cur_dir)-1]='\0';
-
 
23
	dir_truncate(cur_dir);
15
		cur_dir[strlen(cur_dir)-1]='\0';
24
    set_cwd(cur_dir);
16
		dir_truncate(cur_dir);
25
	return TRUE;
17
		set_cwd(cur_dir);
26
	}
18
		return TRUE;
27
 
19
	}
28
if ( '/' == dir[0])
20
 
29
	{
21
	if ( '/' == dir[0]) {
30
	if ( dir_check(dir) )
-
 
31
		{
22
		if ( dir_check(dir) )
32
		strcpy(cur_dir, dir);
23
			{
33
        set_cwd(cur_dir);
24
			strcpy(cur_dir, dir);
34
		return TRUE;
25
			set_cwd(cur_dir);
35
		}
26
			return TRUE;
36
	return FALSE;
27
			}
37
	}
28
		return FALSE;
38
else
29
	}
39
	{
30
	else {
40
	strcpy(temp, cur_dir);
31
		strcpy(temp, cur_dir);
41
	if (cur_dir[strlen(cur_dir)-1] != '/')
-
 
42
		strcat(temp, "/");
32
		if (cur_dir[strlen(cur_dir)-1] != '/')
43
	strcat(temp, dir);
33
			strcat(temp, "/");
44
 
34
		strcat(temp, dir);
45
	if ( dir_check(temp) )
35
 
46
		{
36
		if ( dir_check(temp) ) {
47
 
-
 
48
		strcpy(cur_dir, temp);
37
 
49
        set_cwd(cur_dir);
38
			strcpy(cur_dir, temp);
50
		return TRUE;
39
			set_cwd(cur_dir);
51
		}
40
			return TRUE;
52
 
41
		}
53
	return FALSE;
42
 
54
	}
43
		return FALSE;
55
 
44
	}
56
}
45
 
-
 
46
}