Subversion Repositories Kolibri OS

Rev

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

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