int cmd_mkfatfs(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) { struct fat_format_s fmt = FAT_FORMAT_INITIALIZER; char *fullpath = nsh_getfullpath(vtbl, argv[1]); int ret = ERROR; if (fullpath) { ret = mkfatfs(fullpath, &fmt); if (ret < 0) { nsh_output(vtbl, g_fmtcmdfailed, argv[0], "mkfatfs", NSH_ERRNO); } nsh_freefullpath(fullpath); } return ret; }
int usbmsc_archinitialize(void) { uint8_t *pbuffer; int ret; pbuffer = (uint8_t *)kmm_malloc(BUFFER_SIZE); if (!pbuffer) { lowsyslog(LOG_ERR, "ERROR: Failed to allocate ramdisk of size %d\n", BUFFER_SIZE); return -ENOMEM; } /* Register a RAMDISK device to manage this RAM image */ ret = ramdisk_register(CONFIG_SYSTEM_USBMSC_DEVMINOR1, pbuffer, USBMSC_NSECTORS, USBMSC_SECTORSIZE, RDFLAG_WRENABLED | RDFLAG_FUNLINK); if (ret < 0) { syslog(LOG_ERR, "ERROR: create_ramdisk: Failed to register ramdisk at %s: %d\n", g_source, -ret); kmm_free(pbuffer); return ret; } /* Create a FAT filesystem on the ramdisk */ ret = mkfatfs(g_source, &g_fmt); if (ret < 0) { syslog(LOG_ERR, "ERROR: create_ramdisk: Failed to create FAT filesystem on ramdisk at %s\n", g_source); /* kmm_free(pbuffer); -- RAM disk is registered */ return ret; } return 0; }
int usbmsc_archinitialize(void) { uint8_t *pbuffer; int ret; pbuffer = (uint8_t *) malloc (BUFFER_SIZE); if (!pbuffer) { lib_lowprintf ("usbmsc_archinitialize: Failed to allocate ramdisk of size %d\n", BUFFER_SIZE); return -ENOMEM; } /* Register a RAMDISK device to manage this RAM image */ ret = ramdisk_register(CONFIG_EXAMPLES_USBMSC_DEVMINOR1, pbuffer, USBMSC_NSECTORS, USBMSC_SECTORSIZE, true); if (ret < 0) { printf("create_ramdisk: Failed to register ramdisk at %s: %d\n", g_source, -ret); free(pbuffer); return ret; } /* Create a FAT filesystem on the ramdisk */ ret = mkfatfs(g_source, &g_fmt); if (ret < 0) { printf("create_ramdisk: Failed to create FAT filesystem on ramdisk at %s\n", g_source); /* free(pbuffer); -- RAM disk is registered */ return ret; } return 0; }
int cmd_mkfatfs(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) { struct fat_format_s fmt = FAT_FORMAT_INITIALIZER; FAR char *fullpath; bool badarg; int option; int ret = ERROR; /* mkfatfs [-F <fatsize>] <block-driver> */ badarg = false; while ((option = getopt(argc, argv, ":F:")) != ERROR) { switch (option) { case 'F': fmt.ff_fattype = atoi(optarg); if (fmt.ff_fattype != 0 && fmt.ff_fattype != 12 && fmt.ff_fattype != 16 && fmt.ff_fattype != 32) { nsh_output(vtbl, g_fmtargrange, argv[0]); badarg = true; } break; case ':': nsh_output(vtbl, g_fmtargrequired, argv[0]); badarg = true; break; case '?': default: nsh_output(vtbl, g_fmtarginvalid, argv[0]); badarg = true; break; } } /* If a bad argument was encountered, then return without processing the command */ if (badarg) { return ERROR; } /* There should be exactly one parameter left on the command-line */ if (optind == argc-1) { fullpath = nsh_getfullpath(vtbl, argv[optind]); if (!fullpath) { nsh_output(vtbl, g_fmtcmdfailed, argv[0], "nsh_getfullpath", NSH_ERRNO); return ERROR; } } else if (optind >= argc) { nsh_output(vtbl, g_fmttoomanyargs, argv[0]); return ERROR; } else { nsh_output(vtbl, g_fmtargrequired, argv[0]); return ERROR; } /* Now format the FAT file system */ ret = mkfatfs(fullpath, &fmt); if (ret < 0) { nsh_output(vtbl, g_fmtcmdfailed, argv[0], "mkfatfs", NSH_ERRNO); } nsh_freefullpath(fullpath); return ret; }