return p;
}
+void ventoy_memfile_env_set(const char *prefix, const void *buf, unsigned long long len)
+{
+ char name[128];
+ char val[64];
+
+ grub_snprintf(name, sizeof(name), "%s_addr", prefix);
+ grub_snprintf(val, sizeof(val), "0x%llx", (ulonglong)(ulong)buf);
+ grub_env_set(name, val);
+
+ grub_snprintf(name, sizeof(name), "%s_size", prefix);
+ grub_snprintf(val, sizeof(val), "%llu", len);
+ grub_env_set(name, val);
+
+ return;
+}
static int ventoy_arch_mode_init(void)
{
int totlen = 0;
int offset = 0;
grub_file_t file;
- char name[32];
- char value[32];
char *buf = NULL;
char *data = NULL;
ventoy_iso9660_override *dirent;
grub_file_read(file, data + sizeof(ventoy_chain_head) + len, file->size);
grub_file_close(file);
- grub_snprintf(name, sizeof(name), "%s_addr", args[1]);
- grub_snprintf(value, sizeof(value), "0x%llx", (ulonglong)(ulong)data);
- grub_env_set(name, value);
-
- grub_snprintf(name, sizeof(name), "%s_size", args[1]);
- grub_snprintf(value, sizeof(value), "%d", (int)(totlen));
- grub_env_set(name, value);
+ ventoy_memfile_env_set(args[1], data, (ulonglong)totlen);
return 0;
}
static grub_err_t ventoy_cmd_load_file_to_mem(grub_extcmd_context_t ctxt, int argc, char **args)
{
int rc = 1;
- char name[32];
- char value[32];
char *buf = NULL;
grub_file_t file;
enum grub_file_type type;
grub_file_read(file, buf, file->size);
}
- grub_snprintf(name, sizeof(name), "%s_addr", args[2]);
- grub_snprintf(value, sizeof(value), "0x%llx", (unsigned long long)(unsigned long)buf);
- grub_env_set(name, value);
-
- grub_snprintf(name, sizeof(name), "%s_size", args[2]);
- grub_snprintf(value, sizeof(value), "%llu", (unsigned long long)file->size);
- grub_env_set(name, value);
+ ventoy_memfile_env_set(args[2], buf, (ulonglong)(file->size));
grub_file_close(file);
rc = 0;
{
int rc = 1;
int headlen;
- char name[32];
- char value[32];
char *buf = NULL;
grub_file_t file;
grub_file_read(file, buf + headlen, file->size);
- grub_snprintf(name, sizeof(name), "%s_addr", args[1]);
- grub_snprintf(value, sizeof(value), "0x%llx", (unsigned long long)(unsigned long)buf);
- grub_env_set(name, value);
-
- grub_snprintf(name, sizeof(name), "%s_size", args[1]);
- grub_snprintf(value, sizeof(value), "%llu", (unsigned long long)file->size);
- grub_env_set(name, value);
+ ventoy_memfile_env_set(args[1], buf, (ulonglong)(file->size));
grub_file_close(file);
rc = 0;
grub_uint8_t *bufend;
cpio_newc_header *head;
grub_file_t file;
- char value[64];
const grub_uint8_t trailler[124] = {
0x30, 0x37, 0x30, 0x37, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
name = (char *)(head + 1);
}
}
-
- grub_snprintf(value, sizeof(value), "0x%llx", (ulonglong)(ulong)g_ventoy_cpio_buf);
- ventoy_set_env("ventoy_cpio_addr", value);
- grub_snprintf(value, sizeof(value), "%d", bufsize);
- ventoy_set_env("ventoy_cpio_size", value);
+
+ ventoy_memfile_env_set("ventoy_cpio", g_ventoy_cpio_buf, (ulonglong)bufsize);
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
}
const char *pLastChain = NULL;
const char *compatible;
ventoy_chain_head *chain;
- char envbuf[64];
(void)ctxt;
(void)argc;
return 1;
}
- grub_snprintf(envbuf, sizeof(envbuf), "0x%lx", (unsigned long)chain);
- grub_env_set("vtoy_chain_mem_addr", envbuf);
- grub_snprintf(envbuf, sizeof(envbuf), "%u", size);
- grub_env_set("vtoy_chain_mem_size", envbuf);
+ ventoy_memfile_env_set("vtoy_chain_mem", chain, (ulonglong)size);
grub_memset(chain, 0, sizeof(ventoy_chain_head));
grub_err_t ventoy_cmd_linux_systemd_menu(grub_extcmd_context_t ctxt, int argc, char **args)
{
static char *buf = NULL;
- char name[128];
- char value[64];
grub_fs_t fs;
char *device_name = NULL;
grub_device_t dev = NULL;
ctx.len = VTOY_LINUX_SYSTEMD_MENU_MAX_BUF;
fs->fs_dir(dev, "/loader/entries", ventoy_systemd_conf_hook, &ctx);
- grub_snprintf(name, sizeof(name), "%s_addr", args[1]);
- grub_snprintf(value, sizeof(value), "0x%llx", (ulonglong)(ulong)buf);
- grub_env_set(name, value);
-
- grub_snprintf(name, sizeof(name), "%s_size", args[1]);
- grub_snprintf(value, sizeof(value), "%d", ctx.pos);
- grub_env_set(name, value);
+ ventoy_memfile_env_set(args[1], buf, (ulonglong)(ctx.pos));
end:
grub_check_free(device_name);
char *start = NULL;
char *nextline = NULL;
grub_file_t file = NULL;
- char name[128];
- char value[64];
char *title = NULL;
char *kernel = NULL;
char *initrd = NULL;
sub = 0;
}
- grub_snprintf(name, sizeof(name), "%s_addr", args[1]);
- grub_snprintf(value, sizeof(value), "0x%llx", (ulonglong)(ulong)buf);
- grub_env_set(name, value);
-
- grub_snprintf(name, sizeof(name), "%s_size", args[1]);
- grub_snprintf(value, sizeof(value), "%d", pos);
- grub_env_set(name, value);
+ ventoy_memfile_env_set(args[1], buf, (ulonglong)pos);
end:
grub_check_free(filebuf);
const char *pLastChain = NULL;
const char *compatible;
ventoy_chain_head *chain;
- char envbuf[64];
(void)ctxt;
(void)argc;
return 1;
}
- grub_snprintf(envbuf, sizeof(envbuf), "0x%lx", (unsigned long)chain);
- grub_env_set("vtoy_chain_mem_addr", envbuf);
- grub_snprintf(envbuf, sizeof(envbuf), "%u", size);
- grub_env_set("vtoy_chain_mem_size", envbuf);
+ ventoy_memfile_env_set("vtoy_chain_mem", chain, (ulonglong)size);
grub_memset(chain, 0, sizeof(ventoy_chain_head));
int patchoffset[2];
ventoy_patch_vhd *patch1;
ventoy_patch_vhd *patch2;
- char envbuf[64];
(void)ctxt;
(void)argc;
/* set buffer and size */
#ifdef GRUB_MACHINE_EFI
- grub_snprintf(envbuf, sizeof(envbuf), "0x%lx", (ulong)g_vhdboot_totbuf);
- grub_env_set("vtoy_vhd_buf_addr", envbuf);
- grub_snprintf(envbuf, sizeof(envbuf), "%d", (int)(g_vhdboot_isolen + sizeof(ventoy_chain_head)));
- grub_env_set("vtoy_vhd_buf_size", envbuf);
+ ventoy_memfile_env_set("vtoy_vhd_buf", g_vhdboot_totbuf, (ulonglong)(g_vhdboot_isolen + sizeof(ventoy_chain_head)));
#else
- grub_snprintf(envbuf, sizeof(envbuf), "0x%lx", (ulong)g_vhdboot_isobuf);
- grub_env_set("vtoy_vhd_buf_addr", envbuf);
- grub_snprintf(envbuf, sizeof(envbuf), "%d", g_vhdboot_isolen);
- grub_env_set("vtoy_vhd_buf_size", envbuf);
+ ventoy_memfile_env_set("vtoy_vhd_buf", g_vhdboot_isobuf, (ulonglong)g_vhdboot_isolen);
#endif
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
grub_disk_t disk;
const char *pLastChain = NULL;
ventoy_chain_head *chain;
- char envbuf[64];
(void)ctxt;
(void)argc;
return 1;
}
- grub_snprintf(envbuf, sizeof(envbuf), "0x%lx", (unsigned long)chain);
- grub_env_set("vtoy_chain_mem_addr", envbuf);
- grub_snprintf(envbuf, sizeof(envbuf), "%u", size);
- grub_env_set("vtoy_chain_mem_size", envbuf);
+ ventoy_memfile_env_set("vtoy_chain_mem", chain, (ulonglong)size);
grub_env_export("vtoy_chain_mem_addr");
grub_env_export("vtoy_chain_mem_size");
grub_uint8_t *param = NULL;
grub_uint8_t *exe_data = NULL;
ventoy_windows_data *rtdata = NULL;
- char envbuf[64] = {0};
char exename[128] = {0};
wim_tail wim_data;
rtdata = (ventoy_windows_data *)(param + jump_align + sizeof(ventoy_os_param));
ventoy_fill_windows_rtdata(rtdata, chain->os_param.vtoy_img_path, dataflag);
- grub_snprintf(envbuf, sizeof(envbuf), "0x%lx", (ulong)param);
- grub_env_set("vtoy_wimboot_mem_addr", envbuf);
- debug("vtoy_wimboot_mem_addr: %s\n", envbuf);
-
- grub_snprintf(envbuf, sizeof(envbuf), "%u", wim_data.bin_align_len);
- grub_env_set("vtoy_wimboot_mem_size", envbuf);
- debug("vtoy_wimboot_mem_size: %s\n", envbuf);
+ ventoy_memfile_env_set("vtoy_wimboot_mem", param, (ulonglong)(wim_data.bin_align_len));
grub_env_set(args[1], exename);
grub_env_set(args[2], wim64 ? "64" : "32");
const char *pLastChain = NULL;
const char *compatible;
ventoy_chain_head *chain;
- char envbuf[64];
(void)ctxt;
(void)argc;
return 1;
}
- grub_snprintf(envbuf, sizeof(envbuf), "0x%lx", (unsigned long)chain);
- grub_env_set("vtoy_chain_mem_addr", envbuf);
- grub_snprintf(envbuf, sizeof(envbuf), "%u", size);
- grub_env_set("vtoy_chain_mem_size", envbuf);
+ ventoy_memfile_env_set("vtoy_chain_mem", chain, (ulonglong)size);
grub_memset(chain, 0, sizeof(ventoy_chain_head));
ventoy_img_chunk *chunknode;
ventoy_override_chunk *override;
ventoy_img_chunk_list wimchunk;
- char envbuf[128];
debug("vlnk wim chain data begin <%s> ...\n", wimfile->name);
return 1;
}
- grub_snprintf(envbuf, sizeof(envbuf), "0x%lx", (unsigned long)chain);
- grub_env_set("vtoy_chain_mem_addr", envbuf);
- grub_snprintf(envbuf, sizeof(envbuf), "%u", size);
- grub_env_set("vtoy_chain_mem_size", envbuf);
+ ventoy_memfile_env_set("vtoy_chain_mem", chain, (ulonglong)size);
grub_memset(chain, 0, sizeof(ventoy_chain_head));
ventoy_img_chunk *chunknode;
ventoy_override_chunk *override;
ventoy_img_chunk_list wimchunk;
- char envbuf[128];
debug("normal wim chain data begin <%s> ...\n", wimfile->name);
return 1;
}
- grub_snprintf(envbuf, sizeof(envbuf), "0x%lx", (unsigned long)chain);
- grub_env_set("vtoy_chain_mem_addr", envbuf);
- grub_snprintf(envbuf, sizeof(envbuf), "%u", size);
- grub_env_set("vtoy_chain_mem_size", envbuf);
+ ventoy_memfile_env_set("vtoy_chain_mem", chain, (ulonglong)size);
grub_memset(chain, 0, sizeof(ventoy_chain_head));
grub_uint64_t *fe_entry_size_offset
);
int ventoy_is_efi_os(void);
+void ventoy_memfile_env_set(const char *prefix, const void *buf, unsigned long long len);
#endif /* __VENTOY_H__ */