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; } }