Browse Source

Dont store to device if no value changes

When fw_setenv is called, it could happen that the new value is same
with the old one, in which case, we should avoid storing data to
device.

Signed-off-by: Ming Liu <liu.ming50@gmail.com>
pull/10/head
Ming Liu 4 years ago
committed by Stefano Babic
parent
commit
ed1a53ecbf
  1. 31
      src/fw_printenv.c

31
src/fw_printenv.c

@ -151,19 +151,32 @@ int main (int argc, char **argv) {
}
}
} else { /* setenv branch */
if (scriptfile)
bool need_store = false;
if (scriptfile) {
libuboot_load_file(ctx, scriptfile);
else {
need_store = true;
} else {
for (i = 0; i < argc; i += 2) {
if (i + 1 == argc)
libuboot_set_env(ctx, argv[i], NULL);
else
libuboot_set_env(ctx, argv[i], argv[i+1]);
value = libuboot_get_env(ctx, argv[i]);
if (i + 1 == argc) {
if (value != NULL) {
libuboot_set_env(ctx, argv[i], NULL);
need_store = true;
}
} else {
if (value == NULL || strcmp(value, argv[i+1]) != 0) {
libuboot_set_env(ctx, argv[i], argv[i+1]);
need_store = true;
}
}
}
}
ret = libuboot_env_store(ctx);
if (ret)
fprintf(stderr, "Error storing the env\n");
if (need_store) {
ret = libuboot_env_store(ctx);
if (ret)
fprintf(stderr, "Error storing the env\n");
}
}
libuboot_close(ctx);

Loading…
Cancel
Save