Esempio n. 1
0
//recursive functions to list filenames and apply filters.
void print_dir_entries(const char *pathname, FILTER *filter, int level) {
    struct dirent **namelist;
    int number_of_names;

    if (level == 0) return;
    if (level > 0) level--;
    number_of_names = scandir(pathname, &namelist, 0, alphasort);
    if (number_of_names < 0) {
        fprintf(stderr, "scandir process %s error:", pathname);
        perror("");
    }
    else {
        while (number_of_names--) {
            char *entry_name = namelist[number_of_names]->d_name;
            if (strcmp(entry_name, ".") == 0 || strcmp(entry_name, "..") == 0) {
                continue;
            }
            filter_files(pathname, namelist[number_of_names], filter);
            if (namelist[number_of_names]->d_type == DT_DIR) {
                print_dir_entries(normalize_path(pathname, entry_name), filter, level);
            }
            free(namelist[number_of_names]);
        }
        free(namelist);
    }
}
Esempio n. 2
0
int main(int argc, char **argv) {

	char * path;
	char name[256];

    if(argc != 3) {
        fprintf(stderr, "Usage: ext2_ls <image file name> <file path>\n");
        exit(1);
    }
    if (ext2_init(argv[1]) == -1) return -1;

    path = malloc(strlen(argv[2]));
    split_filepath(argv[2],name,path);

    struct ext2_inode * inode = inode_by_index(find_inode(argv[2]));
	if (inode) {
		if (inode->i_mode & EXT2_S_IFDIR)
			print_dir_entries(inode);
		else
			printf("%s\n", name);

	} else {
		printf("no such file or diretory\n");
	}
    return 0;
}
Esempio n. 3
0
File: fs.c Progetto: mukadr/ghostfs
static int print_dir_entries(struct ghostfs *gfs, int cluster_nr, const char *parent)
{
	struct dir_iter it;
	char buf[256] = "";
	int ret;

	ret = dir_iter_init(gfs, &it, cluster_nr);
	if (ret < 0)
		return ret;

	do {
		if (dir_entry_used(it.entry)) {
			snprintf(buf, sizeof(buf), "%s/%s", parent, it.entry->filename);
			printf("%s", buf);
			if (dir_entry_is_directory(it.entry)) {
				printf("/\n");
				ret = print_dir_entries(gfs, it.entry->cluster, buf);
				if (ret < 0)
					return ret;
			} else {
				printf(" {%d}\n", it.entry->size);
			}
		}
	} while ((ret = dir_iter_next_used(&it)) == 0);

	if (ret != -ENOENT)
		return ret;

	return 0;
}
Esempio n. 4
0
/* Program */
int main(int argc, char **argv) {
	int err = 0;
	int i;
	int len;

	/* Set default applications to open bookmarks */

	g_cmd_name = argv[0];
	g_dir_name = getenv("HOME");
	g_browser_name = "firefox";
	g_filer_name = "rox";
	g_icon_dir = "/usr/share/icons/hicolor/32x32/apps";

	/* If applications is specified. */
	for (i = 1; i < argc; i++) {
		len = strlen(argv[i]);
		if (len > 2 && argv[i][0] == '-') {
			switch (argv[i][1]) {
				case 'd': g_dir_name = get_full_path(argv[i] + 2); break;
				case 'b': g_browser_name = argv[i] + 2; break;
				case 'f': g_filer_name = argv[i] + 2; break;
				case 'i': g_icon_dir = get_full_path(argv[i] + 2); break;
				default:
				    exit(1);
			}
		}
	}

	printf("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
	printf("<openbox_pipe_menu>\n");
	err = print_dir_entries(g_dir_name);
	if (err) {
		printf(ERR_MSG_DIR);
	}

	printf(
		"<separator label=\"編集\" />\n"
		"<item label=\"Open the location with %s\" icon=\"%s/%s.png\">\n"
		"  <action name=\"Execute\"><execute>%s &quot;%s&quot;</execute></action>\n"
		"</item>\n",
		g_filer_name, g_icon_dir, g_filer_name, g_filer_name, g_dir_name
	);

	printf("</openbox_pipe_menu>\n");

	if (g_dir_name != NULL) {
		free(g_dir_name);
	}

	if (g_icon_dir != NULL) {
		free(g_icon_dir);
	}
	return 0;
}
Esempio n. 5
0
// Our version of LS. Gets the needed i node then goes to its i blocks and prints its directory entries
int list_dir(char input[])
{
    int ino, dev = running->cwd->dev;
    MINODE *mip = running->cwd;

    printf(YELLOW "\t...LIST_DIR(%s)" RESET ": Listing entries...\n", input);

    if (strlen(input)>0)    // if we have a path name find it it else use cwd
    {
        //if (input[0]=='/')// why do we do this <=======
        //{dev = root->dev;}
        ino = getino(dev, input);
        MINODE *mip = iget(dev, ino);
        print_dir_entries(mip);
        iput(mip);
        //iput now since theres nothing refrencing this? <=============
    }
    else
    {
        print_dir_entries(mip);
    }

    return 0;
}
Esempio n. 6
0
File: fs.c Progetto: mukadr/ghostfs
int ghostfs_debug(struct ghostfs *gfs)
{
	return print_dir_entries(gfs, 0, "");
}