Esempio n. 1
0
void fs_dump(int show_content)
{
	int i = 0;
    struct dirent *node = 0;
    while ( (node = readdir_fs(fs_root, i)) != 0)
    {
        monitor_write("[Entity] ");
        monitor_write(node->name);
        fs_node_t *fsnode = finddir_fs(fs_root, node->name);

        if ((fsnode->flags&0x7) == FS_DIRECTORY)
        {
            monitor_write("[Dir]\n");
        }
        else
        {
        	monitor_write("[File]\n");
            if(show_content)
            {
		        monitor_write("\n\t Contents: \"");
		        char buf[256];
		        u32int sz = read_fs(fsnode, 0, 256, buf);
		        int j;
		        for (j = 0; j < sz; j++)
		            putch(buf[j]);
		        
		        monitor_write("\n");
        	}
        }
        i++;
    }
    monitor_write("\n");
}
Esempio n. 2
0
void listDir(struct fs_node* nodeDir,int level){
	int i = 0;
	struct dirent* node = 0;
	while ((node=readdir_fs(nodeDir,i))!=0){
		fs_node* fsnode = finddir_fs(nodeDir,node->name);
		for(int i = 0;i<level;i++) kprintf("   "); 
		if (fsnode != NULL){
			if ((fsnode->flags&0x7)==FS_DIRECTORY){
				kprintf("[%s]\n",trim(fsnode->name));
				
				if (fsnode->name[0]!='.')
					listDir(fsnode,level+1);
			}
			else if ((fsnode->flags&0x1)==FS_FILE){
				kprintf("%s\n",fsnode->name);
				char buf[256];
				kprintf("----\n");
				unsigned x = 0;
				while(1==1){
					unsigned int sz = read_fs(fsnode,0+x,256,buf);
					x+=256;
					if (sz != 0){
						for(unsigned int i = 0;i<sz;i++)
							kprint(buf[i]);
					}
					else break;
				}
				kprintf("\n----\n");
			}
			//kprintf("\n");
		}
		i++;
	}
}
Esempio n. 3
0
File: initrd.c Progetto: turbana/dor
void
initrd_list()
{
	u32int i, count;
	u8int buffer[256];
	struct fs_node *node, *root;
	struct dirent *entry;

	kprintf("Listing Initial Ramdisk:\n");

	i = 1;
	root = &root_nodes[0];

	while((entry = readdir_fs(root, i++)) != NULL) {
		node = finddir_fs(root, entry->name);
		ASSERT(node != NULL);

		if(node->flags & FS_DIRECTORY) {
			kprintf("Found directory %s\n", node->name);
		} else {
			kprintf("Found file %s (%d bytes):\n", node->name, node->length);
			count = read_fs(node, 0, 255, buffer);
			buffer[count] = '\0';
			kprintf("\t%s\n", buffer);
		}
	}
}
Esempio n. 4
0
int ls_cmd(int argc, char **argv) {
    boolean showHidden = false;
    int i = 2;
    if (argc == 1 && strcmp(argv[0], "-a") == 0) {
        showHidden = true;
        i = 0;
    }
    fs_node_t current, *node;
    char perm[MASK_STRING_LEN];
    fs_getFsNode(&current, tty_getCurrentTTY()->currDirectory);
    while ((node = readdir_fs(&current, i)) != NULL) {                 // get directory i
        tty_setFormatToCurrTTY(video_getFormattedColor(LIGHT_BLUE, BLACK));
        if (node->name[0] != '.' || (node->name[0] == '.' && showHidden)) {
            if (showHidden) {
                if (i == 0) strcpy(node->name, "."); else if (i == 1) strcpy(node->name, "..");
            }
            mask_string(node->mask, perm);
            printf("%s\t%5s\t%5s",
                perm,
                user_getName(node->uid),
                group_getName(node->gid));
            _ls_cmd_setColor(FILE_TYPE(node->mask));
            printf("\t%s%s\n",
                node->name,
                _ls_cmd_EndingString(FILE_TYPE(node->mask))
            );
        }
        i++;
    }
    return 0;
}
Esempio n. 5
0
static int sys_readdir(int fd, int index, struct dirent * entry) {
    if (FD_CHECK(fd)) {
        PTR_VALIDATE(entry);
        struct dirent * kentry = readdir_fs(FD_ENTRY(fd), (uint32_t)index);
        if (kentry) {
            memcpy(entry, kentry, sizeof *entry);
            free(kentry);
            return 0;
        } else {
            return 1;
        }
    }
    return -1;
}
int main(struct multiboot *mboot_ptr)
{
    // Initialise all the ISRs and segmentation
    init_descriptor_tables();
    // Initialise the screen (by clearing it)
    monitor_clear();

    // Find the location of our initial ramdisk.
    ASSERT(mboot_ptr->mods_count > 0);
    u32int initrd_location = *((u32int*)mboot_ptr->mods_addr);
    u32int initrd_end = *(u32int*)(mboot_ptr->mods_addr+4);
    // Don't trample our module with placement accesses, please!
    placement_address = initrd_end;

    // Start paging.
    initialise_paging();

    // Initialise the initial ramdisk, and set it as the filesystem root.
    fs_root = initialise_initrd(initrd_location);

    // list the contents of /
    int i = 0;
    struct dirent *node = 0;
    while ( (node = readdir_fs(fs_root, i)) != 0)
    {
        monitor_write("Found file ");
        monitor_write(node->name);
        fs_node_t *fsnode = finddir_fs(fs_root, node->name);

        if ((fsnode->flags&0x7) == FS_DIRECTORY)
        {
            monitor_write("\n\t(directory)\n");
        }
        else
        {
            monitor_write("\n\t contents: \"");
            char buf[256];
            u32int sz = read_fs(fsnode, 0, 256, buf);
            int j;
            for (j = 0; j < sz; j++)
                monitor_put(buf[j]);
            
            monitor_write("\"\n");
        }
        i++;
    }

    return 0;
}
Esempio n. 7
0
void traverse_initrd() {
  int i = 0;
  struct dirent* node = 0;
  while ((node = readdir_fs(fs_root, i)) != 0) {
    printf("Found file %s ", node->name);

    fs_node_t* fsnode = finddir_fs(fs_root, node->name);
    if ((fsnode->flags & 0x7) == FS_DIRECTORY) {
      printf("[directory]\n");
    } else {
      printf("[file of %d bytes]\n", fsnode->length);
    }

    i++;
  }
  printf("\n");
}
Esempio n. 8
0
char * load_initrd_app(char *name, char **argv, char **env)
{
	
	int argc = 0;
	while (argv[argc]) { ++argc; }
		struct dirent* node = 0;
    for (size_t i = 0; (node = readdir_fs(fs_root_initrd, i)) != 0; ++i)
    {
		fs_node_t * fsnode = finddir_fs(fs_root_initrd, node->name);
        if ((fsnode->flags & 0x7) == FS_DIRECTORY)
        {
        }
        else
        {
			char * argv_[] = {
			name,
			NULL,
			NULL,
			NULL
		};
	int argc_ = 0;
	while (argv_[argc_]) {
		argc_++;
	}
				printk("\nSearching!\n");				
                char* buf = malloc_( fsnode->length);         
                printk("%d\n",fsnode->length);
                u32 sz =  read_fs(fsnode, 0, fsnode->length, buf);

                printk("Size: %d bytes\t Name: %s\n", fsnode->length, node->name);
                if(strcmp(node->name, name) == 0)
				{
					return buf;
					elf_exec__(buf, sz, name,argc,argv);
					memset(buf,0,400000);
				}

                
        }
          
    }

return 0;
}
Esempio n. 9
0
// Displays all files in the file system and their contents.
void file_disp(fs_node_t *fs_root) {
  
  // The next section of code is not reentrant so make sure we aren't interrupted during.
  //asm volatile("cli");

  // list the contents of /
  int i = 0;
  struct dirent *node = 0;
  while ((node = readdir_fs(fs_root, i)) != 0) {
    
    printf("Found file ");
    printf(node->name);
    fs_node_t *fsnode = finddir_fs(fs_root, node->name);

    if ((fsnode->flags&0x7) == FS_DIRECTORY) {
      printf("\n\t(directory)\n");
    }
    
    else {
      
      printf("\n\t contents: \"");
      char buf[256];
      u32int sz = read_fs(fsnode, 0, 256, buf);
      int j;
      for (j = 0; j < sz; j++)
		monitor_put(buf[j]);
      
      printf("\"\n");
      
    }
    
    i++;
    
  }
  
  // Enable interrupts
  //asm volatile("sti");
  
  printf("\n");
  
}
Esempio n. 10
0
void listTree() {
    // list the contents of
    int i = 0;
    struct dirent *node = 0;
    while ((node = readdir_fs(fs_root, i)) != 0)
    {
        fs_node_t *fsnode = finddir_fs(fs_root, node->name);

        if ((fsnode->flags & 0x7) == FS_DIRECTORY)
        {
            print("dir \t", 0x0F);
            print(node->name, 0x0F);
            printch('/', 0x0F);
        }
        else
        {
            print("file\t", 0x0F);
            print(node->name, 0x0F);
        }
        newline();
        i++;
    }
}
Esempio n. 11
0
int main(struct multiboot *mboot_ptr, u32int initial_stack)
{
    initial_esp = initial_stack;
    // Initialise all the ISRs and segmentation
    init_descriptor_tables();
    // Initialise the screen (by clearing it)
    monitor_clear();
    // Initialise the PIT to 100Hz
    asm volatile("sti");
    init_timer(50);

    // Find the location of our initial ramdisk.
    ASSERT(mboot_ptr->mods_count > 0);
    u32int initrd_location = *((u32int*)mboot_ptr->mods_addr);
    u32int initrd_end = *(u32int*)(mboot_ptr->mods_addr+4);
    // Don't trample our module with placement accesses, please!
    placement_address = initrd_end;

    // Start paging.
    initialise_paging();

    // Start multitasking.
    initialise_tasking();

    // Initialise the initial ramdisk, and set it as the filesystem root.
    fs_root = initialise_initrd(initrd_location);

    // Create a new process in a new address space which is a clone of this.
    int ret = fork();

    monitor_write("fork() returned ");
    monitor_write_hex(ret);
    monitor_write(", and getpid() returned ");
    monitor_write_hex(getpid());
    monitor_write("\n============================================================================\n");

    // The next section of code is not reentrant so make sure we aren't interrupted during.
    asm volatile("cli");
    // list the contents of /
    int i = 0;
    struct dirent *node = 0;
    while ( (node = readdir_fs(fs_root, i)) != 0)
    {
        monitor_write("Found file ");
        monitor_write(node->name);
        fs_node_t *fsnode = finddir_fs(fs_root, node->name);

        if ((fsnode->flags&0x7) == FS_DIRECTORY)
        {
            monitor_write("\n\t(directory)\n");
        }
        else
        {
            monitor_write("\n\t contents: \"");
            char buf[256];
            u32int sz = read_fs(fsnode, 0, 256, buf);
            int j;
            for (j = 0; j < sz; j++)
                monitor_put(buf[j]);
            
            monitor_write("\"\n");
        }
        i++;
    }
    monitor_write("\n");

    asm volatile("sti");

    return 0;
}