Subversion Repositories Kolibri OS

Rev

Rev 7805 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.  
  2. int cmd_cd(char dir[])
  3. {
  4.         char temp[256];
  5.         unsigned result;
  6.  
  7.         if (NULL == dir) {
  8.                 printf(CMD_CD_USAGE);
  9.                 return TRUE;
  10.         }
  11.  
  12.         if ( 0 == strcmp(dir, ".") || 0 == strcmp(dir, "./") )
  13.                 return TRUE;
  14.  
  15.         if (  ( 0 == strcmp(dir, "..") ||  0 == strcmp(dir, "../") ) && ( 0 != strcmp(cur_dir, "/")) ) {
  16.                 cur_dir[strlen(cur_dir)-1]='\0';
  17.                 dir_truncate(cur_dir);
  18.                 set_cwd(cur_dir);
  19.                 return TRUE;
  20.         }
  21.  
  22.         if ( '/' == dir[0]) {
  23.                 if ( dir_check(dir) )
  24.                         {
  25.                         strcpy(cur_dir, dir);
  26.                         set_cwd(cur_dir);
  27.                         return TRUE;
  28.                         }
  29.                 return FALSE;
  30.         }
  31.         else {
  32.                 strcpy(temp, cur_dir);
  33.                 if (cur_dir[strlen(cur_dir)-1] != '/')
  34.                         strcat(temp, "/");
  35.                 strcat(temp, dir);
  36.  
  37.                 if ( dir_check(temp) ) {
  38.  
  39.                         strcpy(cur_dir, temp);
  40.                         set_cwd(cur_dir);
  41.                         return TRUE;
  42.                 }
  43.  
  44.                 return FALSE;
  45.         }
  46.  
  47. }
  48.  
  49.