NFC: Rearrange code a bit

* Consolidate Android code after main code.

* Move save before load.
This commit is contained in:
Tom Marshall 2015-04-18 09:00:15 -07:00
parent 9df07a3ec1
commit 492cd21d0f
1 changed files with 105 additions and 103 deletions

208
gpted.c
View File

@ -43,85 +43,6 @@ static int cmd_write(struct gpt *gpt, unsigned int argc, const char **argv)
return 0;
}
#if defined(ANDROID) && defined(QCOM)
static const char *non_firmware[] = {
"recovery", "boot",
"system", "userdata", "cache", "sdcard",
/* persist? */
NULL
};
static int cmd_firmware_save(struct gpt *gpt, unsigned int argc, const char **argv)
{
int all = 0;
uint32_t startidx, idx;
if (argc > 1) {
all = !strcmp(argv[1], "all");
}
startidx = (all ? 0 : gpt->pad_idx+1);
for (idx = startidx; idx <= gpt->last_used_idx; ++idx) {
char name[72/2+1];
char filename[72/2+4+1];
int skip = 0;
const char **entry;
gpt_part_name(gpt, idx, name);
for (entry = non_firmware; *entry; ++entry) {
if (!strcmp(name, *entry)) {
skip = 1;
}
}
if (skip) {
printf("Skip %s\n", name);
}
else {
printf("Save %s\n", name);
sprintf(filename, "%s.img", name);
gpt_part_save(gpt, idx, filename);
}
}
return 0;
}
static int cmd_firmware_load(struct gpt *gpt, unsigned int argc, const char **argv)
{
int all = 0;
uint32_t startidx, idx;
if (argc > 1) {
all = !strcmp(argv[1], "all");
}
startidx = (all ? 0 : gpt->pad_idx+1);
for (idx = startidx; idx <= gpt->last_used_idx; ++idx) {
char name[72/2+1];
char filename[72/2+4+1];
int skip = 0;
const char **entry;
gpt_part_name(gpt, idx, name);
for (entry = non_firmware; *entry; ++entry) {
if (!strcmp(name, *entry)) {
skip = 1;
}
}
if (skip) {
printf("Skip %s\n", name);
}
else {
printf("Load %s\n", name);
sprintf(filename, "%s.img", name);
gpt_part_load(gpt, idx, filename);
}
}
return 0;
}
#endif
static int cmd_part_add(struct gpt *gpt, unsigned int argc, const char **argv)
{
printf("E: not implemented\n");
@ -219,25 +140,6 @@ static int cmd_part_resize(struct gpt *gpt, unsigned int argc, const char **argv
return 0;
}
static int cmd_part_load(struct gpt *gpt, unsigned int argc, const char **argv)
{
int rc;
uint32_t idx;
if (argc < 3) {
printf("E: not enough args\n");
return 0;
}
idx = gpt_part_find(gpt, argv[1]);
rc = gpt_part_load(gpt, idx, argv[2]);
if (rc != 0) {
printf("E: failed\n");
return 0;
}
return 0;
}
static int cmd_part_save(struct gpt *gpt, unsigned int argc, const char **argv)
{
int rc;
@ -257,6 +159,106 @@ static int cmd_part_save(struct gpt *gpt, unsigned int argc, const char **argv)
return 0;
}
static int cmd_part_load(struct gpt *gpt, unsigned int argc, const char **argv)
{
int rc;
uint32_t idx;
if (argc < 3) {
printf("E: not enough args\n");
return 0;
}
idx = gpt_part_find(gpt, argv[1]);
rc = gpt_part_load(gpt, idx, argv[2]);
if (rc != 0) {
printf("E: failed\n");
return 0;
}
return 0;
}
#if defined(ANDROID) && defined(QCOM)
static const char *non_firmware[] = {
"recovery", "boot",
"system", "userdata", "cache", "sdcard",
/* persist? */
NULL
};
static int cmd_firmware_save(struct gpt *gpt, unsigned int argc, const char **argv)
{
int all = 0;
uint32_t startidx, idx;
if (argc > 1) {
all = !strcmp(argv[1], "all");
}
startidx = (all ? 0 : gpt->pad_idx+1);
for (idx = startidx; idx <= gpt->last_used_idx; ++idx) {
char name[72/2+1];
char filename[72/2+4+1];
int skip = 0;
const char **entry;
gpt_part_name(gpt, idx, name);
for (entry = non_firmware; *entry; ++entry) {
if (!strcmp(name, *entry)) {
skip = 1;
}
}
if (skip) {
printf("Skip %s\n", name);
}
else {
printf("Save %s\n", name);
sprintf(filename, "%s.img", name);
gpt_part_save(gpt, idx, filename);
}
}
return 0;
}
static int cmd_firmware_load(struct gpt *gpt, unsigned int argc, const char **argv)
{
int all = 0;
uint32_t startidx, idx;
if (argc > 1) {
all = !strcmp(argv[1], "all");
}
startidx = (all ? 0 : gpt->pad_idx+1);
for (idx = startidx; idx <= gpt->last_used_idx; ++idx) {
char name[72/2+1];
char filename[72/2+4+1];
int skip = 0;
const char **entry;
gpt_part_name(gpt, idx, name);
for (entry = non_firmware; *entry; ++entry) {
if (!strcmp(name, *entry)) {
skip = 1;
}
}
if (skip) {
printf("Skip %s\n", name);
}
else {
printf("Load %s\n", name);
sprintf(filename, "%s.img", name);
gpt_part_load(gpt, idx, filename);
}
}
return 0;
}
#endif
struct dispatch_entry
{
const char *cmd;
@ -269,11 +271,6 @@ static struct dispatch_entry dispatch_table[] = {
{ "show", cmd_show },
{ "write", cmd_write },
#if defined(ANDROID) && defined(QCOM)
{ "firmware-save", cmd_firmware_save },
{ "firmware-load", cmd_firmware_load },
#endif
{ "part-add", cmd_part_add },
{ "part-del", cmd_part_del },
{ "part-move", cmd_part_move },
@ -281,6 +278,11 @@ static struct dispatch_entry dispatch_table[] = {
{ "part-load", cmd_part_load },
{ "part-save", cmd_part_save },
#if defined(ANDROID) && defined(QCOM)
{ "firmware-save", cmd_firmware_save },
{ "firmware-load", cmd_firmware_load },
#endif
{ NULL, NULL }
};