Browse Source

header: Extract function

master
Daniel Scharrer 1 year ago
parent
commit
cd209a6282
  1. 81
      src/setup/header.cpp
  2. 4
      src/setup/header.hpp

81
src/setup/header.cpp

@ -522,6 +522,48 @@ void header::load(std::istream & is, const version & version) {
(void)util::load<boost::uint8_t>(is);
}
options |= load_flags(is, version);
if(version < INNO_VERSION(3, 0, 4)) {
privileges_required = (options & AdminPrivilegesRequired) ? AdminPriviliges : NoPrivileges;
}
if(version < INNO_VERSION(4, 0, 10)) {
show_language_dialog = (options & ShowLanguageDialog) ? Yes : No;
language_detection = (options & DetectLanguageUsingLocale) ? LocaleLanguage : UILanguage;
}
if(version < INNO_VERSION(4, 1, 5)) {
compression = (options & BzipUsed) ? stream::BZip2 : stream::Zlib;
}
if(version < INNO_VERSION(5, 3, 3)) {
disable_dir_page = (options & DisableDirPage) ? Yes : No;
disable_program_group_page = (options & DisableProgramGroupPage) ? Yes : No;
}
if(version < INNO_VERSION(1, 3, 0)) {
if(license_size > 0) {
license_text.resize(size_t(license_size));
is.read(&license_text[0], license_size);
util::to_utf8(license_text);
}
if(info_before_size > 0) {
info_before.resize(size_t(info_before_size));
is.read(&info_before[0], info_before_size);
util::to_utf8(info_before);
}
if(info_after_size > 0) {
info_after.resize(size_t(info_after_size));
is.read(&info_after[0], info_after_size);
util::to_utf8(info_after);
}
}
}
header::flags header::load_flags(std::istream & is, const version & version) {
stored_flag_reader<flags> flagreader(is, version.bits());
flagreader.add(DisableStartupPrompt);
@ -682,44 +724,7 @@ void header::load(std::istream & is, const version & version) {
flagreader.add(UninstallLogging);
}
options |= flagreader.finalize();
if(version < INNO_VERSION(3, 0, 4)) {
privileges_required = (options & AdminPrivilegesRequired) ? AdminPriviliges : NoPrivileges;
}
if(version < INNO_VERSION(4, 0, 10)) {
show_language_dialog = (options & ShowLanguageDialog) ? Yes : No;
language_detection = (options & DetectLanguageUsingLocale) ? LocaleLanguage : UILanguage;
}
if(version < INNO_VERSION(4, 1, 5)) {
compression = (options & BzipUsed) ? stream::BZip2 : stream::Zlib;
}
if(version < INNO_VERSION(5, 3, 3)) {
disable_dir_page = (options & DisableDirPage) ? Yes : No;
disable_program_group_page = (options & DisableProgramGroupPage) ? Yes : No;
}
if(version < INNO_VERSION(1, 3, 0)) {
if(license_size > 0) {
license_text.resize(size_t(license_size));
is.read(&license_text[0], license_size);
util::to_utf8(license_text);
}
if(info_before_size > 0) {
info_before.resize(size_t(info_before_size));
is.read(&info_before[0], info_before_size);
util::to_utf8(info_before);
}
if(info_after_size > 0) {
info_after.resize(size_t(info_after_size));
is.read(&info_after[0], info_after_size);
util::to_utf8(info_after);
}
}
return flagreader.finalize();
}
void header::decode(util::codepage_id codepage) {

4
src/setup/header.hpp

@ -283,6 +283,10 @@ struct header {
void decode(util::codepage_id codepage);
private:
flags load_flags(std::istream & is, const version & version);
};
} // namespace setup

Loading…
Cancel
Save