Subversion Repositories Kolibri OS

Rev

Rev 6862 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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