Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void ls(void)
- {
- NODE* printDir = NULL;
- //pathSplit();
- strcpy(dirname, pathname);
- printDir = dirSearch();
- if(printDir)
- {
- dirPrint(printDir);
- }
- }
- void dirPrint(NODE* currentDir)
- {
- currentDir = currentDir->childPtr;
- while(currentDir)
- {
- printf("%c %s\n",currentDir->type, currentDir->name);
- currentDir = currentDir->siblingPtr;
- }
- }
- NODE* dirSearch()
- {
- char dname[64];
- NODE* currentDir = NULL;
- int i = 0;
- int j = 0;
- if(dirname[0] == '/')//Absolute
- {
- if(dirname[1] == '\0')
- return root;
- currentDir = root;
- i++;
- }
- else//Relative
- {
- if(dirname[0] == '\0')
- return cwd;
- currentDir = cwd;
- }
- while(i <= strlen(dirname))
- {
- j = 0;
- if(!currentDir->childPtr)
- {
- printf("no such dir\n");
- return NULL;
- }
- currentDir = currentDir->childPtr;
- while(dirname[i] != '/' && dirname[i] != '\0')
- {
- dname[j] = dirname[i];
- i++;
- j++;
- }
- dname[j] ='\0';
- while(strcmp(currentDir->name, dname))
- {
- currentDir = currentDir->siblingPtr;
- if(!currentDir)
- {
- printf("no such dir\n");
- return NULL;
- }
- }
- i++;
- }
- if(currentDir->type == 'd')
- return currentDir;
- printf("is not dir\n");
- return NULL;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement