#include #include #include #include #include #include #include #include #include #include #include #include static void do_mufs_mount(const char *s); static void do_mufs_format(const char *s); static void do_mufs_mkdir(const char *s); static void do_mufs_ls(const char *s); static struct cmd mufs_cmds[] = { { "mount", do_mufs_mount }, { "format", do_mufs_format }, { "mkdir", do_mufs_mkdir }, { "ls", do_mufs_ls }, { NULL, NULL }, }; extern struct flash_dev *flash; struct mufs mufs; static void do_mufs_mount(const char *s) { (void)s; if (!flash) { fprintf(stderr, "error: no flash device probed.\n"); return; } if (mufs_mount(&mufs, flash) < 0) { fprintf(stderr, "error: unable to mount the filesystem.\n"); return; } printf("log2_nentries=%u\n", mufs.log2_nentries); printf("nentries=%u\n", UINT32_C(1) << mufs.log2_nentries); } static void do_mufs_format(const char *s) { (void)s; if (!flash) { fprintf(stderr, "error: no flash device probed.\n"); return; } if (mufs_format(flash) < 0) { fprintf(stderr, "error: unable to format the flash device.\n"); return; } } static void do_mufs_mkdir(const char *s) { if (mufs_mkdir(&mufs, s) < 0) { fprintf(stderr, "error: unable to create the directory\n"); return; } } static void do_mufs_ls(const char *s) { struct mufs_dirent ent; struct mufs_dir *dir; if (!(dir = mufs_opendir(&mufs, s))) { fprintf(stderr, "error: unable to open the directory\n"); return; } while (mufs_readdir(dir, &ent) == 0) { printf("%s\n", ent.path); } mufs_closedir(dir); } void do_mufs_cmd(const char *line) { cmd_exec(mufs_cmds, line); }