Advertisement
Guest User

Untitled

a guest
Feb 12th, 2016
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.24 KB | None | 0 0
  1.  
  2. void ls(void)
  3. {
  4.     NODE* printDir = NULL;
  5.     //pathSplit();
  6.     strcpy(dirname, pathname);
  7.     printDir = dirSearch();
  8.     if(printDir)
  9.     {
  10.         dirPrint(printDir);
  11.     }
  12. }
  13.  
  14. void dirPrint(NODE* currentDir)
  15. {
  16.     currentDir = currentDir->childPtr;
  17.     while(currentDir)
  18.     {
  19.         printf("%c %s\n",currentDir->type, currentDir->name);
  20.         currentDir = currentDir->siblingPtr;
  21.     }
  22. }
  23.  
  24. NODE* dirSearch()
  25. {
  26.     char dname[64];
  27.     NODE* currentDir = NULL;
  28.     int i = 0;
  29.     int j = 0;
  30.     if(dirname[0] == '/')//Absolute
  31.     {
  32.         if(dirname[1] == '\0')
  33.             return root;
  34.         currentDir = root;
  35.         i++;
  36.     }
  37.     else//Relative
  38.     {
  39.         if(dirname[0] == '\0')
  40.             return cwd;
  41.         currentDir = cwd;
  42.     }
  43.  
  44.         while(i <= strlen(dirname))
  45.         {
  46.             j = 0;
  47.             if(!currentDir->childPtr)
  48.             {
  49.                 printf("no such dir\n");
  50.                 return NULL;
  51.             }
  52.             currentDir = currentDir->childPtr;
  53.             while(dirname[i] != '/' && dirname[i] != '\0')
  54.             {
  55.                 dname[j] = dirname[i];
  56.                 i++;
  57.                 j++;
  58.             }
  59.             dname[j] ='\0';
  60.             while(strcmp(currentDir->name, dname))
  61.             {
  62.                 currentDir = currentDir->siblingPtr;
  63.                 if(!currentDir)
  64.                 {
  65.                     printf("no such dir\n");
  66.                     return NULL;
  67.                 }
  68.             }
  69.             i++;
  70.         }
  71.         if(currentDir->type == 'd')
  72.             return currentDir;
  73.         printf("is not dir\n");
  74.         return NULL;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement