From 0209cce51675512f80e740ce45d568ed6d0029c0 Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Wed, 28 Dec 2016 00:30:34 -0800 Subject: Compile Cydia to arm64 by linking with APT 1.4~b1. --- .gitignore | 2 + .gitmodules | 3 + MobileCydia.mm | 99 +- apt | 1 + apt-contrib/apt-pkg | 1 + apt-deb/apt-pkg | 1 + apt-extra/apti18n.h | 7 + apt-extra/config.h | 48 + apt-extra/endian.h | 1 + apt-tag/apt-pkg/tagfile-keys.cc | 3771 +++++++++++++++++++++++++++++++++++++++ apt-tag/apt-pkg/tagfile-keys.h | 92 + apt.h | 30 + cydia.control | 4 +- fdstream.hpp | 184 ++ make.sh | 2 + makefile | 141 +- uikit.sh | 2 +- 17 files changed, 4305 insertions(+), 84 deletions(-) create mode 160000 apt create mode 120000 apt-contrib/apt-pkg create mode 120000 apt-deb/apt-pkg create mode 100644 apt-extra/apti18n.h create mode 100644 apt-extra/config.h create mode 100644 apt-extra/endian.h create mode 100644 apt-tag/apt-pkg/tagfile-keys.cc create mode 100644 apt-tag/apt-pkg/tagfile-keys.h create mode 100644 apt.h create mode 100644 fdstream.hpp create mode 100755 make.sh diff --git a/.gitignore b/.gitignore index 9a6cc7c..c8bf50a 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,5 @@ Version.h cfversion setnsfpn bins +Objects +cydo diff --git a/.gitmodules b/.gitmodules index f66923f..cc667a6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "icu"] path = icu url = git://git.saurik.com/apple/icu.git +[submodule "apt"] + path = apt + url = git://git.saurik.com/apt.git diff --git a/MobileCydia.mm b/MobileCydia.mm index ed88ae2..813a382 100644 --- a/MobileCydia.mm +++ b/MobileCydia.mm @@ -56,15 +56,17 @@ #include #include +#include #include #include #include #include -#include +#include "fdstream.hpp" #undef ABS +#include "apt.h" #include #include #include @@ -500,6 +502,10 @@ static _finline CFStringRef CYStringCreate(const char *data, size_t size) { CFStringCreateWithBytesNoCopy(kCFAllocatorDefault, reinterpret_cast(data), size, kCFStringEncodingISOLatin1, NO, kCFAllocatorNull); } +static _finline CFStringRef CYStringCreate(const std::string &data) { + return CYStringCreate(data.data(), data.size()); +} + static _finline CFStringRef CYStringCreate(const char *data) { return CYStringCreate(data, strlen(data)); } @@ -2513,15 +2519,7 @@ struct PackageNameOrdering : _end _profile(Package$parse$Tagline) - const char *start, *end; - if (parser->ShortDesc(start, end)) { - const char *stop(reinterpret_cast(memchr(start, '\n', end - start))); - if (stop == NULL) - stop = end; - while (stop != start && stop[-1] == '\r') - --stop; - parsed->tagline_.set(pool_, start, stop - start); - } + parsed->tagline_.set(pool_, parser->ShortDesc()); _end _profile(Package$parse$Retain) @@ -2550,7 +2548,7 @@ struct PackageNameOrdering : version_ = version; - pkgCache::PkgIterator iterator(version.ParentPkg()); + pkgCache::PkgIterator iterator(version_.ParentPkg()); iterator_ = iterator; _profile(Package$initWithVersion$Version) @@ -2558,7 +2556,7 @@ struct PackageNameOrdering : _end _profile(Package$initWithVersion$Cache) - name_.set(NULL, iterator.Display()); + name_.set(NULL, version_.Display()); latest_.set(NULL, StripVersion_(version_.VerStr())); @@ -2622,7 +2620,11 @@ struct PackageNameOrdering : } while (false); _end _profile(Package$initWithVersion$Tags) +#ifdef __arm64__ + pkgCache::TagIterator tag(version_.TagList()); +#else pkgCache::TagIterator tag(iterator.TagList()); +#endif if (!tag.end()) { tags_ = [NSMutableArray arrayWithCapacity:8]; @@ -2852,23 +2854,12 @@ struct PackageNameOrdering : @synchronized (database_) { pkgRecords::Parser &parser([database_ records]->Lookup(file_)); - - const char *start, *end; - if (!parser.ShortDesc(start, end)) + std::string value(parser.ShortDesc()); + if (value.empty()) return nil; - - if (end - start > 200) - end = start + 200; - - /* - if (const char *stop = reinterpret_cast(memchr(start, '\n', end - start))) - end = stop; - - while (end != start && end[-1] == '\r') - --end; - */ - - return [(id) CYStringCreate(start, end - start) autorelease]; + if (value.size() > 200) + value.resize(200); + return [(id) CYStringCreate(value) autorelease]; } } - (unichar) index { @@ -3541,8 +3532,7 @@ class CydiaLogCleaner : } - (void) _readCydia:(NSNumber *)fd { - __gnu_cxx::stdio_filebuf ib([fd intValue], std::ios::in); - std::istream is(&ib); + boost::fdistream is([fd intValue]); std::string line; static RegEx finish_r("finish:([^:]*)"); @@ -3568,8 +3558,7 @@ class CydiaLogCleaner : } - (void) _readStatus:(NSNumber *)fd { - __gnu_cxx::stdio_filebuf ib([fd intValue], std::ios::in); - std::istream is(&ib); + boost::fdistream is([fd intValue]); std::string line; static RegEx conffile_r("status: [^ ]* : conffile-prompt : (.*?) *"); @@ -3625,8 +3614,7 @@ class CydiaLogCleaner : } - (void) _readOutput:(NSNumber *)fd { - __gnu_cxx::stdio_filebuf ib([fd intValue], std::ios::in); - std::istream is(&ib); + boost::fdistream is([fd intValue]); std::string line; while (std::getline(is, line)) { @@ -3653,7 +3641,11 @@ class CydiaLogCleaner : @synchronized (self) { if (static_cast(cache_) == NULL) return nil; - pkgCache::PkgIterator iterator(cache_->FindPkg([name UTF8String])); + pkgCache::PkgIterator iterator(cache_->FindPkg([name UTF8String] +#ifdef __arm64__ + , "any" +#endif + )); return iterator.end() ? nil : [Package packageWithIterator:iterator withZone:NULL inPool:NULL database:self]; } } @@ -4372,6 +4364,7 @@ static _H Diversions_; + (NSArray *) _attributeKeys { return [NSArray arrayWithObjects: + @"bittage", @"bbsnum", @"build", @"cells", @@ -4403,6 +4396,17 @@ static _H Diversions_; return Cydia_; } +- (unsigned) bittage { +#if 0 +#elif defined(__arm64__) + return 64; +#elif defined(__arm__) + return 32; +#else + return 0; +#endif +} + - (NSString *) build { return System_; } @@ -6277,7 +6281,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) { NSString *directory = [stack lastObject]; [stack addObject:[file stringByAppendingString:@"/"]]; [files_ replaceObjectAtIndex:i withObject:[NSString stringWithFormat:@"%*s%@", - ([stack count] - 2) * 3, "", + int(([stack count] - 2) * 3), "", [file substringFromIndex:[directory length]] ]]; } @@ -10215,7 +10219,18 @@ static NSMutableDictionary *AutoreleaseDeepMutableCopyOfDictionary(CFTypeRef typ return [(NSMutableDictionary *) copy autorelease]; } +int main_store(int, char *argv[]); + int main(int argc, char *argv[]) { +#ifdef __arm64__ + const char *argv0(argv[0]); + if (const char *slash = strrchr(argv0, '/')) + argv0 = slash + 1; + if (false); + else if (!strcmp(argv0, "store")) + return main_store(argc, argv); +#endif + int fd(open("/tmp/cydia.log", O_WRONLY | O_APPEND | O_CREAT, 0644)); dup2(fd, 2); close(fd); @@ -10313,7 +10328,7 @@ int main(int argc, char *argv[]) { if (lang != NULL) { setenv("LANG", lang, true); - std::setlocale(LC_ALL, lang); + setlocale(LC_ALL, lang); } /* }}} */ /* Index Collation {{{ */ @@ -10560,8 +10575,12 @@ int main(int argc, char *argv[]) { _assert(pkgInitConfig(*_config)); _assert(pkgInitSystem(*_config, _system)); - if (lang != NULL) - _config->Set("APT::Acquire::Translation", lang); + _config->Set("Acquire::AllowInsecureRepositories", true); + _config->Set("Acquire::Check-Valid-Until", false); + _config->Set("Dir::Bin::Methods::store", "/Applications/Cydia.app/store"); + + _config->Set("pkgCacheGen::ForceEssential", ""); + _config->Set("APT::Acquire::Translation", "environment"); // XXX: this timeout might be important :( //_config->Set("Acquire::http::Timeout", 15); @@ -10582,7 +10601,7 @@ int main(int argc, char *argv[]) { std::string logs("/var/mobile/Library/Logs/Cydia"); mkdir(logs.c_str(), 0755); - _config->Set("Dir::Log::Terminal", logs + "/apt.log"); + _config->Set("Dir::Log", logs); _config->Set("Dir::Bin::dpkg", "/usr/libexec/cydia/cydo"); /* }}} */ diff --git a/apt b/apt new file mode 160000 index 0000000..1242b3b --- /dev/null +++ b/apt @@ -0,0 +1 @@ +Subproject commit 1242b3bdaf3d3682a945f10f0e537bdb3b0599d5 diff --git a/apt-contrib/apt-pkg b/apt-contrib/apt-pkg new file mode 120000 index 0000000..c7d0c77 --- /dev/null +++ b/apt-contrib/apt-pkg @@ -0,0 +1 @@ +../apt/apt-pkg/contrib \ No newline at end of file diff --git a/apt-deb/apt-pkg b/apt-deb/apt-pkg new file mode 120000 index 0000000..40a128e --- /dev/null +++ b/apt-deb/apt-pkg @@ -0,0 +1 @@ +../apt/apt-pkg/deb \ No newline at end of file diff --git a/apt-extra/apti18n.h b/apt-extra/apti18n.h new file mode 100644 index 0000000..a425267 --- /dev/null +++ b/apt-extra/apti18n.h @@ -0,0 +1,7 @@ +#define setlocale(a, b) +#define textdomain(a) +#define bindtextdomain(a, b) +#define _(x) x +#define P_(msg,plural,n) (n == 1 ? msg : plural) +#define N_(x) x +#define dgettext(d, m) m diff --git a/apt-extra/config.h b/apt-extra/config.h new file mode 100644 index 0000000..d281ff5 --- /dev/null +++ b/apt-extra/config.h @@ -0,0 +1,48 @@ +#undef WORDS_BIGENDIAN + +#define HAVE_TIMEGM + +//#cmakedefine HAVE_ZLIB +//#cmakedefine HAVE_BZ2 +//#cmakedefine HAVE_LZMA +//#cmakedefine HAVE_LZ4 + +/* These two are used by the statvfs shim for glibc2.0 and bsd */ +/* Define if we have sys/vfs.h */ +//#cmakedefine HAVE_VFS_H +//#cmakedefine HAVE_STRUCT_STATFS_F_TYPE + +#undef HAVE_MOUNT_H + +#undef HAVE_SYS_ENDIAN_H +#define HAVE_MACHINE_ENDIAN_H + +#define HAVE_PTHREAD + +#undef HAVE_GETRESUID +#undef HAVE_GETRESGID +#undef HAVE_SETRESUID +#undef HAVE_SETRESGID + +#undef HAVE_PTSNAME_R + +#define COMMON_ARCH "iphoneos-arm" +#define PACKAGE "cydia" // XXX +#define PACKAGE_VERSION "${PACKAGE_VERSION}" // XXX +#define PACKAGE_MAIL "saurik@saurik.com" + +#define CMAKE_INSTALL_FULL_BINDIR "/usr/bin" +#define STATE_DIR "/var/lib/apt" +#define CACHE_DIR "/var/cache/apt" +#define LOG_DIR "/var/log/apt" +#define CONF_DIR "/etc/apt" +#define LIBEXEC_DIR "/usr/lib/apt" +#define BIN_DIR "/usr/bin" + +#define ROOT_GROUP "wheel" + +#define APT_8_CLEANER_HEADERS +#define APT_9_CLEANER_HEADERS +#define APT_10_CLEANER_HEADERS + +#define SHA2_UNROLL_TRANSFORM diff --git a/apt-extra/endian.h b/apt-extra/endian.h new file mode 100644 index 0000000..0de2c02 --- /dev/null +++ b/apt-extra/endian.h @@ -0,0 +1 @@ +#include diff --git a/apt-tag/apt-pkg/tagfile-keys.cc b/apt-tag/apt-pkg/tagfile-keys.cc new file mode 100644 index 0000000..9a67820 --- /dev/null +++ b/apt-tag/apt-pkg/tagfile-keys.cc @@ -0,0 +1,3771 @@ +#include "apt-pkg/tagfile-keys.h" +#ifdef __GNUC__ +typedef uint16_t __attribute__((aligned (1))) triehash_uu16; +typedef char static_assert16[__alignof__(triehash_uu16) == 1 ? 1 : -1]; +typedef uint32_t __attribute__((aligned (1))) triehash_uu32; +typedef char static_assert32[__alignof__(triehash_uu32) == 1 ? 1 : -1]; +typedef uint64_t __attribute__((aligned (1))) triehash_uu64; +//\0[__alignof__(triehash_uu64) == 1 ? 1 : -1]; +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +#define onechar(c, s, l) (((uint64_t)(c)) << (s)) +#else +#define onechar(c, s, l) (((uint64_t)(c)) << (l-8-s)) +#endif +#if (!defined(__ARM_ARCH) || defined(__ARM_FEATURE_UNALIGNED)) && !defined(TRIE_HASH_NO_MULTI_BYTE) +#define TRIE_HASH_MULTI_BYTE +#endif +#endif /*GNUC */ +#ifdef TRIE_HASH_MULTI_BYTE +static enum pkgTagSection::Key pkgTagHash3(const char *string) +{ + switch(string[0] | 0x20) { + case 0| onechar('t', 0, 8): + switch(string[1] | 0x20) { + case 0| onechar('a', 0, 8): + switch(string[2] | 0x20) { + case 0| onechar('g', 0, 8): + return pkgTagSection::Key::Tag; + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash4(const char *string) +{ + switch(string[0] | 0x20) { + case 0| onechar('b', 0, 8): + switch(string[1] | 0x20) { + case 0| onechar('u', 0, 8): + switch(string[2] | 0x20) { + case 0| onechar('g', 0, 8): + switch(string[3] | 0x20) { + case 0| onechar('s', 0, 8): + return pkgTagSection::Key::Bugs; + } + } + } + break; + case 0| onechar('s', 0, 8): + switch(string[1] | 0x20) { + case 0| onechar('h', 0, 8): + switch(string[2] | 0x20) { + case 0| onechar('a', 0, 8): + switch(string[3]) { + case 0| onechar('1', 0, 8): + return pkgTagSection::Key::SHA1; + } + } + break; + case 0| onechar('i', 0, 8): + switch(string[2] | 0x20) { + case 0| onechar('z', 0, 8): + switch(string[3] | 0x20) { + case 0| onechar('e', 0, 8): + return pkgTagSection::Key::Size; + } + } + } + break; + case 0| onechar('t', 0, 8): + switch(string[1] | 0x20) { + case 0| onechar('a', 0, 8): + switch(string[2] | 0x20) { + case 0| onechar('s', 0, 8): + switch(string[3] | 0x20) { + case 0| onechar('k', 0, 8): + return pkgTagSection::Key::Task; + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash5(const char *string) +{ + switch(*((triehash_uu32*) &string[0]) | 0x20202020) { + case 0| onechar('c', 0, 32)| onechar('l', 8, 32)| onechar('a', 16, 32)| onechar('s', 24, 32): + switch(string[4] | 0x20) { + case 0| onechar('s', 0, 8): + return pkgTagSection::Key::Class; + } + break; + case 0| onechar('f', 0, 32)| onechar('i', 8, 32)| onechar('l', 16, 32)| onechar('e', 24, 32): + switch(string[4] | 0x20) { + case 0| onechar('s', 0, 8): + return pkgTagSection::Key::Files; + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash6(const char *string) +{ + switch(string[0] | 0x20) { + case 0| onechar('b', 0, 8): + switch(*((triehash_uu32*) &string[1]) | 0x20202020) { + case 0| onechar('i', 0, 32)| onechar('n', 8, 32)| onechar('a', 16, 32)| onechar('r', 24, 32): + switch(string[5] | 0x20) { + case 0| onechar('y', 0, 8): + return pkgTagSection::Key::Binary; + } + break; + case 0| onechar('r', 0, 32)| onechar('e', 8, 32)| onechar('a', 16, 32)| onechar('k', 24, 32): + switch(string[5] | 0x20) { + case 0| onechar('s', 0, 8): + return pkgTagSection::Key::Breaks; + } + } + break; + case 0| onechar('f', 0, 8): + switch(*((triehash_uu32*) &string[1]) | 0x20202020) { + case 0| onechar('o', 0, 32)| onechar('r', 8, 32)| onechar('m', 16, 32)| onechar('a', 24, 32): + switch(string[5] | 0x20) { + case 0| onechar('t', 0, 8): + return pkgTagSection::Key::Format; + } + } + break; + case 0| onechar('m', 0, 8): + switch(string[1] | 0x20) { + case 0| onechar('d', 0, 8): + switch(string[2]) { + case 0| onechar('5', 0, 8): + switch(string[3] | 0x20) { + case 0| onechar('s', 0, 8): + switch(string[4] | 0x20) { + case 0| onechar('u', 0, 8): + switch(string[5] | 0x20) { + case 0| onechar('m', 0, 8): + return pkgTagSection::Key::MD5sum; + } + } + } + } + } + break; + case 0| onechar('o', 0, 8): + switch(*((triehash_uu32*) &string[1]) | 0x20202020) { + case 0| onechar('r', 0, 32)| onechar('i', 8, 32)| onechar('g', 16, 32)| onechar('i', 24, 32): + switch(string[5] | 0x20) { + case 0| onechar('n', 0, 8): + return pkgTagSection::Key::Origin; + } + } + break; + case 0| onechar('s', 0, 8): + switch(string[1] | 0x20) { + case 0| onechar('h', 0, 8): + switch(string[2] | 0x20) { + case 0| onechar('a', 0, 8): + switch(string[3]) { + case 0| onechar('2', 0, 8): + switch(string[4]) { + case 0| onechar('5', 0, 8): + switch(string[5]) { + case 0| onechar('6', 0, 8): + return pkgTagSection::Key::SHA256; + } + } + break; + case 0| onechar('5', 0, 8): + switch(string[4]) { + case 0| onechar('1', 0, 8): + switch(string[5]) { + case 0| onechar('2', 0, 8): + return pkgTagSection::Key::SHA512; + } + } + } + } + break; + case 0| onechar('o', 0, 8): + switch(*((triehash_uu32*) &string[2]) | 0x20202020) { + case 0| onechar('u', 0, 32)| onechar('r', 8, 32)| onechar('c', 16, 32)| onechar('e', 24, 32): + return pkgTagSection::Key::Source; + } + break; + case 0| onechar('t', 0, 8): + switch(*((triehash_uu32*) &string[2]) | 0x20202020) { + case 0| onechar('a', 0, 32)| onechar('t', 8, 32)| onechar('u', 16, 32)| onechar('s', 24, 32): + return pkgTagSection::Key::Status; + } + } + break; + case 0| onechar('v', 0, 8): + switch(string[1] | 0x20) { + case 0| onechar('c', 0, 8): + switch(string[2] | 0x20) { + case 0| onechar('s', 0, 8): + switch(string[3]) { + case 0| onechar('-', 0, 8): + switch(string[4] | 0x20) { + case 0| onechar('h', 0, 8): + switch(string[5] | 0x20) { + case 0| onechar('g', 0, 8): + return pkgTagSection::Key::Vcs_Hg; + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash7(const char *string) +{ + switch(string[0] | 0x20) { + case 0| onechar('d', 0, 8): + switch(*((triehash_uu32*) &string[1]) | 0x20202020) { + case 0| onechar('e', 0, 32)| onechar('p', 8, 32)| onechar('e', 16, 32)| onechar('n', 24, 32): + switch(string[5] | 0x20) { + case 0| onechar('d', 0, 8): + switch(string[6] | 0x20) { + case 0| onechar('s', 0, 8): + return pkgTagSection::Key::Depends; + } + } + } + break; + case 0| onechar('p', 0, 8): + switch(*((triehash_uu32*) &string[1]) | 0x20202020) { + case 0| onechar('a', 0, 32)| onechar('c', 8, 32)| onechar('k', 16, 32)| onechar('a', 24, 32): + switch(string[5] | 0x20) { + case 0| onechar('g', 0, 8): + switch(string[6] | 0x20) { + case 0| onechar('e', 0, 8): + return pkgTagSection::Key::Package; + } + } + } + break; + case 0| onechar('s', 0, 8): + switch(*((triehash_uu32*) &string[1]) | 0x20202020) { + case 0| onechar('e', 0, 32)| onechar('c', 8, 32)| onechar('t', 16, 32)| onechar('i', 24, 32): + switch(string[5] | 0x20) { + case 0| onechar('o', 0, 8): + switch(string[6] | 0x20) { + case 0| onechar('n', 0, 8): + return pkgTagSection::Key::Section; + } + } + } + break; + case 0| onechar('v', 0, 8): + switch(string[1] | 0x20) { + case 0| onechar('c', 0, 8): + switch(string[2] | 0x20) { + case 0| onechar('s', 0, 8): + switch(string[3]) { + case 0| onechar('-', 0, 8): + switch(string[4] | 0x20) { + case 0| onechar('b', 0, 8): + switch(string[5] | 0x20) { + case 0| onechar('z', 0, 8): + switch(string[6] | 0x20) { + case 0| onechar('r', 0, 8): + return pkgTagSection::Key::Vcs_Bzr; + } + } + break; + case 0| onechar('c', 0, 8): + switch(string[5] | 0x20) { + case 0| onechar('v', 0, 8): + switch(string[6] | 0x20) { + case 0| onechar('s', 0, 8): + return pkgTagSection::Key::Vcs_Cvs; + } + } + break; + case 0| onechar('g', 0, 8): + switch(string[5] | 0x20) { + case 0| onechar('i', 0, 8): + switch(string[6] | 0x20) { + case 0| onechar('t', 0, 8): + return pkgTagSection::Key::Vcs_Git; + } + } + break; + case 0| onechar('m', 0, 8): + switch(string[5] | 0x20) { + case 0| onechar('t', 0, 8): + switch(string[6] | 0x20) { + case 0| onechar('n', 0, 8): + return pkgTagSection::Key::Vcs_Mtn; + } + } + break; + case 0| onechar('s', 0, 8): + switch(string[5] | 0x20) { + case 0| onechar('v', 0, 8): + switch(string[6] | 0x20) { + case 0| onechar('n', 0, 8): + return pkgTagSection::Key::Vcs_Svn; + } + } + } + } + } + break; + case 0| onechar('e', 0, 8): + switch(*((triehash_uu32*) &string[2]) | 0x20202020) { + case 0| onechar('r', 0, 32)| onechar('s', 8, 32)| onechar('i', 16, 32)| onechar('o', 24, 32): + switch(string[6] | 0x20) { + case 0| onechar('n', 0, 8): + return pkgTagSection::Key::Version; + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash8(const char *string) +{ + switch(string[0] | 0x20) { + case 0| onechar('e', 0, 8): + switch(*((triehash_uu32*) &string[1]) | 0x20202020) { + case 0| onechar('n', 0, 32)| onechar('h', 8, 32)| onechar('a', 16, 32)| onechar('n', 24, 32): + switch(string[5] | 0x20) { + case 0| onechar('c', 0, 8): + switch(string[6] | 0x20) { + case 0| onechar('e', 0, 8): + switch(string[7] | 0x20) { + case 0| onechar('s', 0, 8): + return pkgTagSection::Key::Enhances; + } + } + } + } + break; + case 0| onechar('f', 0, 8): + switch(*((triehash_uu32*) &string[1]) | 0x20202020) { + case 0| onechar('i', 0, 32)| onechar('l', 8, 32)| onechar('e', 16, 32)| onechar('n', 24, 32): + switch(string[5] | 0x20) { + case 0| onechar('a', 0, 8): + switch(string[6] | 0x20) { + case 0| onechar('m', 0, 8): + switch(string[7] | 0x20) { + case 0| onechar('e', 0, 8): + return pkgTagSection::Key::Filename; + } + } + } + } + break; + case 0| onechar('h', 0, 8): + switch(*((triehash_uu32*) &string[1]) | 0x20202020) { + case 0| onechar('o', 0, 32)| onechar('m', 8, 32)| onechar('e', 16, 32)| onechar('p', 24, 32): + switch(string[5] | 0x20) { + case 0| onechar('a', 0, 8): + switch(string[6] | 0x20) { + case 0| onechar('g', 0, 8): + switch(string[7] | 0x20) { + case 0| onechar('e', 0, 8): + return pkgTagSection::Key::Homepage; + } + } + } + } + break; + case 0| onechar('o', 0, 8): + switch(*((triehash_uu32*) &string[1]) | 0x20202020) { + case 0| onechar('p', 0, 32)| onechar('t', 8, 32)| onechar('i', 16, 32)| onechar('o', 24, 32): + switch(string[5] | 0x20) { + case 0| onechar('n', 0, 8): + switch(string[6] | 0x20) { + case 0| onechar('a', 0, 8): + switch(string[7] | 0x20) { + case 0| onechar('l', 0, 8): + return pkgTagSection::Key::Optional; + } + } + } + } + break; + case 0| onechar('p', 0, 8): + switch(*((triehash_uu32*) &string[1]) | 0x20202020) { + case 0| onechar('r', 0, 32)| onechar('i', 8, 32)| onechar('o', 16, 32)| onechar('r', 24, 32): + switch(string[5] | 0x20) { + case 0| onechar('i', 0, 8): + switch(string[6] | 0x20) { + case 0| onechar('t', 0, 8): + switch(string[7] | 0x20) { + case 0| onechar('y', 0, 8): + return pkgTagSection::Key::Priority; + } + } + } + break; + case 0| onechar('r', 0, 32)| onechar('o', 8, 32)| onechar('v', 16, 32)| onechar('i', 24, 32): + switch(string[5] | 0x20) { + case 0| onechar('d', 0, 8): + switch(string[6] | 0x20) { + case 0| onechar('e', 0, 8): + switch(string[7] | 0x20) { + case 0| onechar('s', 0, 8): + return pkgTagSection::Key::Provides; + } + } + } + } + break; + case 0| onechar('r', 0, 8): + switch(*((triehash_uu32*) &string[1]) | 0x20202020) { + case 0| onechar('e', 0, 32)| onechar('p', 8, 32)| onechar('l', 16, 32)| onechar('a', 24, 32): + switch(string[5] | 0x20) { + case 0| onechar('c', 0, 8): + switch(string[6] | 0x20) { + case 0| onechar('e', 0, 8): + switch(string[7] | 0x20) { + case 0| onechar('s', 0, 8): + return pkgTagSection::Key::Replaces; + } + } + } + break; + case 0| onechar('e', 0, 32)| onechar('v', 8, 32)| onechar('i', 16, 32)| onechar('s', 24, 32): + switch(string[5] | 0x20) { + case 0| onechar('i', 0, 8): + switch(string[6] | 0x20) { + case 0| onechar('o', 0, 8): + switch(string[7] | 0x20) { + case 0| onechar('n', 0, 8): + return pkgTagSection::Key::Revision; + } + } + } + } + break; + case 0| onechar('s', 0, 8): + switch(*((triehash_uu32*) &string[1]) | 0x20202020) { + case 0| onechar('u', 0, 32)| onechar('g', 8, 32)| onechar('g', 16, 32)| onechar('e', 24, 32): + switch(string[5] | 0x20) { + case 0| onechar('s', 0, 8): + switch(string[6] | 0x20) { + case 0| onechar('t', 0, 8): + switch(string[7] | 0x20) { + case 0| onechar('s', 0, 8): + return pkgTagSection::Key::Suggests; + } + } + } + } + break; + case 0| onechar('v', 0, 8): + switch(string[1] | 0x20) { + case 0| onechar('c', 0, 8): + switch(string[2] | 0x20) { + case 0| onechar('s', 0, 8): + switch(string[3]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[4]) | 0x20202020) { + case 0| onechar('a', 0, 32)| onechar('r', 8, 32)| onechar('c', 16, 32)| onechar('h', 24, 32): + return pkgTagSection::Key::Vcs_Arch; + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash9(const char *string) +{ + switch(string[0] | 0x20) { + case 0| onechar('c', 0, 8): + switch(*((triehash_uu64*) &string[1]) | 0x2020202020202020) { + case 0| onechar('o', 0, 64)| onechar('n', 8, 64)| onechar('f', 16, 64)| onechar('f', 24, 64)| onechar('i', 32, 64)| onechar('l', 40, 64)| onechar('e', 48, 64)| onechar('s', 56, 64): + return pkgTagSection::Key::Conffiles; + break; + case 0| onechar('o', 0, 64)| onechar('n', 8, 64)| onechar('f', 16, 64)| onechar('l', 24, 64)| onechar('i', 32, 64)| onechar('c', 40, 64)| onechar('t', 48, 64)| onechar('s', 56, 64): + return pkgTagSection::Key::Conflicts; + } + break; + case 0| onechar('d', 0, 8): + switch(*((triehash_uu64*) &string[1]) | 0x2020202020202020) { + case 0| onechar('i', 0, 64)| onechar('r', 8, 64)| onechar('e', 16, 64)| onechar('c', 24, 64)| onechar('t', 32, 64)| onechar('o', 40, 64)| onechar('r', 48, 64)| onechar('y', 56, 64): + return pkgTagSection::Key::Directory; + } + break; + case 0| onechar('e', 0, 8): + switch(*((triehash_uu64*) &string[1]) | 0x2020202020202020) { + case 0| onechar('s', 0, 64)| onechar('s', 8, 64)| onechar('e', 16, 64)| onechar('n', 24, 64)| onechar('t', 32, 64)| onechar('i', 40, 64)| onechar('a', 48, 64)| onechar('l', 56, 64): + return pkgTagSection::Key::Essential; + } + break; + case 0| onechar('i', 0, 8): + switch(*((triehash_uu64*) &string[1]) | 0x2020202020202020) { + case 0| onechar('m', 0, 64)| onechar('p', 8, 64)| onechar('o', 16, 64)| onechar('r', 24, 64)| onechar('t', 32, 64)| onechar('a', 40, 64)| onechar('n', 48, 64)| onechar('t', 56, 64): + return pkgTagSection::Key::Important; + } + break; + case 0| onechar('t', 0, 8): + switch(*((triehash_uu64*) &string[1]) | 0x2020202020202020) { + case 0| onechar('e', 0, 64)| onechar('s', 8, 64)| onechar('t', 16, 64)| onechar('s', 24, 64)| onechar('u', 32, 64)| onechar('i', 40, 64)| onechar('t', 48, 64)| onechar('e', 56, 64): + return pkgTagSection::Key::Testsuite; + } + break; + case 0| onechar('u', 0, 8): + switch(*((triehash_uu64*) &string[1]) | 0x2020202020202020) { + case 0| onechar('p', 0, 64)| onechar('l', 8, 64)| onechar('o', 16, 64)| onechar('a', 24, 64)| onechar('d', 32, 64)| onechar('e', 40, 64)| onechar('r', 48, 64)| onechar('s', 56, 64): + return pkgTagSection::Key::Uploaders; + } + break; + case 0| onechar('v', 0, 8): + switch(string[1] | 0x20) { + case 0| onechar('c', 0, 8): + switch(string[2] | 0x20) { + case 0| onechar('s', 0, 8): + switch(string[3]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[4]) | 0x20202020) { + case 0| onechar('d', 0, 32)| onechar('a', 8, 32)| onechar('r', 16, 32)| onechar('c', 24, 32): + switch(string[8] | 0x20) { + case 0| onechar('s', 0, 8): + return pkgTagSection::Key::Vcs_Darcs; + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash10(const char *string) +{ + switch(string[0] | 0x20) { + case 0| onechar('m', 0, 8): + switch(*((triehash_uu32*) &string[1]) | 0x20202020) { + case 0| onechar('a', 0, 32)| onechar('i', 8, 32)| onechar('n', 16, 32)| onechar('t', 24, 32): + switch(*((triehash_uu32*) &string[5]) | 0x20202020) { + case 0| onechar('a', 0, 32)| onechar('i', 8, 32)| onechar('n', 16, 32)| onechar('e', 24, 32): + switch(string[9] | 0x20) { + case 0| onechar('r', 0, 8): + return pkgTagSection::Key::Maintainer; + } + } + break; + case 0| onechar('u', 0, 32)| onechar('l', 8, 32)| onechar('t', 16, 32)| onechar('i', 24, 32): + switch(string[5]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[6]) | 0x20202020) { + case 0| onechar('a', 0, 32)| onechar('r', 8, 32)| onechar('c', 16, 32)| onechar('h', 24, 32): + return pkgTagSection::Key::Multi_Arch; + } + } + } + break; + case 0| onechar('r', 0, 8): + switch(*((triehash_uu64*) &string[1]) | 0x2020202020202020) { + case 0| onechar('e', 0, 64)| onechar('c', 8, 64)| onechar('o', 16, 64)| onechar('m', 24, 64)| onechar('m', 32, 64)| onechar('e', 40, 64)| onechar('n', 48, 64)| onechar('d', 56, 64): + switch(string[9] | 0x20) { + case 0| onechar('s', 0, 8): + return pkgTagSection::Key::Recommends; + } + } + break; + case 0| onechar('v', 0, 8): + switch(string[1] | 0x20) { + case 0| onechar('c', 0, 8): + switch(string[2] | 0x20) { + case 0| onechar('s', 0, 8): + switch(string[3]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[4]) | 0x20202020) { + case 0| onechar('b', 0, 32)| onechar('r', 8, 32)| onechar('o', 16, 32)| onechar('w', 24, 32): + switch(string[8] | 0x20) { + case 0| onechar('s', 0, 8): + switch(string[9] | 0x20) { + case 0| onechar('e', 0, 8): + return pkgTagSection::Key::Vcs_Browse; + } + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash11(const char *string) +{ + switch(string[0] | 0x20) { + case 0| onechar('b', 0, 8): + switch(*((triehash_uu32*) &string[1]) | 0x20202020) { + case 0| onechar('u', 0, 32)| onechar('i', 8, 32)| onechar('l', 16, 32)| onechar('t', 24, 32): + switch(string[5]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[6]) | 0x20202020) { + case 0| onechar('u', 0, 32)| onechar('s', 8, 32)| onechar('i', 16, 32)| onechar('n', 24, 32): + switch(string[10] | 0x20) { + case 0| onechar('g', 0, 8): + return pkgTagSection::Key::Built_Using; + } + } + } + } + break; + case 0| onechar('d', 0, 8): + switch(*((triehash_uu64*) &string[1]) | 0x2020202020202020) { + case 0| onechar('e', 0, 64)| onechar('s', 8, 64)| onechar('c', 16, 64)| onechar('r', 24, 64)| onechar('i', 32, 64)| onechar('p', 40, 64)| onechar('t', 48, 64)| onechar('i', 56, 64): + switch(string[9] | 0x20) { + case 0| onechar('o', 0, 8): + switch(string[10] | 0x20) { + case 0| onechar('n', 0, 8): + return pkgTagSection::Key::Description; + } + } + } + break; + case 0| onechar('p', 0, 8): + switch(string[1] | 0x20) { + case 0| onechar('r', 0, 8): + switch(string[2] | 0x20) { + case 0| onechar('e', 0, 8): + switch(string[3]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[4]) | 0x20202020) { + case 0| onechar('d', 0, 32)| onechar('e', 8, 32)| onechar('p', 16, 32)| onechar('e', 24, 32): + switch(string[8] | 0x20) { + case 0| onechar('n', 0, 8): + switch(string[9] | 0x20) { + case 0| onechar('d', 0, 8): + switch(string[10] | 0x20) { + case 0| onechar('s', 0, 8): + return pkgTagSection::Key::Pre_Depends; + } + } + } + } + } + } + } + break; + case 0| onechar('r', 0, 8): + switch(*((triehash_uu64*) &string[1]) | 0x2020202020202020) { + case 0| onechar('e', 0, 64)| onechar('c', 8, 64)| onechar('o', 16, 64)| onechar('m', 24, 64)| onechar('m', 32, 64)| onechar('e', 40, 64)| onechar('n', 48, 64)| onechar('d', 56, 64): + switch(string[9] | 0x20) { + case 0| onechar('e', 0, 8): + switch(string[10] | 0x20) { + case 0| onechar('d', 0, 8): + return pkgTagSection::Key::Recommended; + } + } + } + break; + case 0| onechar('v', 0, 8): + switch(string[1] | 0x20) { + case 0| onechar('c', 0, 8): + switch(string[2] | 0x20) { + case 0| onechar('s', 0, 8): + switch(string[3]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[4]) | 0x20202020) { + case 0| onechar('b', 0, 32)| onechar('r', 8, 32)| onechar('o', 16, 32)| onechar('w', 24, 32): + switch(string[8] | 0x20) { + case 0| onechar('s', 0, 8): + switch(string[9] | 0x20) { + case 0| onechar('e', 0, 8): + switch(string[10] | 0x20) { + case 0| onechar('r', 0, 8): + return pkgTagSection::Key::Vcs_Browser; + } + } + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash12(const char *string) +{ + switch(*((triehash_uu32*) &string[0]) | 0x20202020) { + case 0| onechar('a', 0, 32)| onechar('r', 8, 32)| onechar('c', 16, 32)| onechar('h', 24, 32): + switch(*((triehash_uu64*) &string[4]) | 0x2020202020202020) { + case 0| onechar('i', 0, 64)| onechar('t', 8, 64)| onechar('e', 16, 64)| onechar('c', 24, 64)| onechar('t', 32, 64)| onechar('u', 40, 64)| onechar('r', 48, 64)| onechar('e', 56, 64): + return pkgTagSection::Key::Architecture; + } + break; + case 0| onechar('p', 0, 32)| onechar('a', 8, 32)| onechar('c', 16, 32)| onechar('k', 24, 32): + switch(string[4] | 0x20) { + case 0| onechar('a', 0, 8): + switch(string[5] | 0x20) { + case 0| onechar('g', 0, 8): + switch(string[6] | 0x20) { + case 0| onechar('e', 0, 8): + switch(string[7]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[8]) | 0x20202020) { + case 0| onechar('l', 0, 32)| onechar('i', 8, 32)| onechar('s', 16, 32)| onechar('t', 24, 32): + return pkgTagSection::Key::Package_List; + break; + case 0| onechar('t', 0, 32)| onechar('y', 8, 32)| onechar('p', 16, 32)| onechar('e', 24, 32): + return pkgTagSection::Key::Package_Type; + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash13(const char *string) +{ + switch(*((triehash_uu32*) &string[0]) | 0x20202020) { + case 0| onechar('b', 0, 32)| onechar('u', 8, 32)| onechar('i', 16, 32)| onechar('l', 24, 32): + switch(string[4] | 0x20) { + case 0| onechar('d', 0, 8): + switch(string[5]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[6]) | 0x20202020) { + case 0| onechar('d', 0, 32)| onechar('e', 8, 32)| onechar('p', 16, 32)| onechar('e', 24, 32): + switch(string[10] | 0x20) { + case 0| onechar('n', 0, 8): + switch(string[11] | 0x20) { + case 0| onechar('d', 0, 8): + switch(string[12] | 0x20) { + case 0| onechar('s', 0, 8): + return pkgTagSection::Key::Build_Depends; + } + } + } + } + } + } + break; + case 0| onechar('c', 0, 32)| onechar('h', 8, 32)| onechar('e', 16, 32)| onechar('c', 24, 32): + switch(*((triehash_uu32*) &string[4]) | 0x20202020) { + case 0| onechar('k', 0, 32)| onechar('s', 8, 32)| onechar('u', 16, 32)| onechar('m', 24, 32): + switch(string[8] | 0x20) { + case 0| onechar('s', 0, 8): + switch(string[9]) { + case 0| onechar('-', 0, 8): + switch(string[10] | 0x20) { + case 0| onechar('m', 0, 8): + switch(string[11] | 0x20) { + case 0| onechar('d', 0, 8): + switch(string[12]) { + case 0| onechar('5', 0, 8): + return pkgTagSection::Key::Checksums_Md5; + } + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash14(const char *string) +{ + switch(*((triehash_uu32*) &string[0]) | 0x20202020) { + case 0| onechar('c', 0, 32)| onechar('h', 8, 32)| onechar('e', 16, 32)| onechar('c', 24, 32): + switch(*((triehash_uu32*) &string[4]) | 0x20202020) { + case 0| onechar('k', 0, 32)| onechar('s', 8, 32)| onechar('u', 16, 32)| onechar('m', 24, 32): + switch(string[8] | 0x20) { + case 0| onechar('s', 0, 8): + switch(string[9]) { + case 0| onechar('-', 0, 8): + switch(string[10] | 0x20) { + case 0| onechar('s', 0, 8): + switch(string[11] | 0x20) { + case 0| onechar('h', 0, 8): + switch(string[12] | 0x20) { + case 0| onechar('a', 0, 8): + switch(string[13]) { + case 0| onechar('1', 0, 8): + return pkgTagSection::Key::Checksums_Sha1; + } + } + } + } + } + } + } + break; + case 0| onechar('c', 0, 32)| onechar('o', 8, 32)| onechar('n', 16, 32)| onechar('f', 24, 32): + switch(string[4] | 0x20) { + case 0| onechar('i', 0, 8): + switch(string[5] | 0x20) { + case 0| onechar('g', 0, 8): + switch(string[6]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[7]) | 0x20202020) { + case 0| onechar('v', 0, 32)| onechar('e', 8, 32)| onechar('r', 16, 32)| onechar('s', 24, 32): + switch(string[11] | 0x20) { + case 0| onechar('i', 0, 8): + switch(string[12] | 0x20) { + case 0| onechar('o', 0, 8): + switch(string[13] | 0x20) { + case 0| onechar('n', 0, 8): + return pkgTagSection::Key::Config_Version; + } + } + } + } + } + } + } + break; + case 0| onechar('i', 0, 32)| onechar('n', 8, 32)| onechar('s', 16, 32)| onechar('t', 24, 32): + switch(*((triehash_uu32*) &string[4]) | 0x20202020) { + case 0| onechar('a', 0, 32)| onechar('l', 8, 32)| onechar('l', 16, 32)| onechar('e', 24, 32): + switch(string[8] | 0x20) { + case 0| onechar('d', 0, 8): + switch(string[9]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[10]) | 0x20202020) { + case 0| onechar('s', 0, 32)| onechar('i', 8, 32)| onechar('z', 16, 32)| onechar('e', 24, 32): + return pkgTagSection::Key::Installed_Size; + } + } + } + } + break; + case 0| onechar('k', 0, 32)| onechar('e', 8, 32)| onechar('r', 16, 32)| onechar('n', 24, 32): + switch(string[4] | 0x20) { + case 0| onechar('e', 0, 8): + switch(string[5] | 0x20) { + case 0| onechar('l', 0, 8): + switch(string[6]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[7]) | 0x20202020) { + case 0| onechar('v', 0, 32)| onechar('e', 8, 32)| onechar('r', 16, 32)| onechar('s', 24, 32): + switch(string[11] | 0x20) { + case 0| onechar('i', 0, 8): + switch(string[12] | 0x20) { + case 0| onechar('o', 0, 8): + switch(string[13] | 0x20) { + case 0| onechar('n', 0, 8): + return pkgTagSection::Key::Kernel_Version; + } + } + } + } + } + } + } + break; + case 0| onechar('m', 0, 32)| onechar('s', 8, 32)| onechar('d', 16, 32)| onechar('o', 24, 32): + switch(string[4] | 0x20) { + case 0| onechar('s', 0, 8): + switch(string[5]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu64*) &string[6]) | 0x2020202020202020) { + case 0| onechar('f', 0, 64)| onechar('i', 8, 64)| onechar('l', 16, 64)| onechar('e', 24, 64)| onechar('n', 32, 64)| onechar('a', 40, 64)| onechar('m', 48, 64)| onechar('e', 56, 64): + return pkgTagSection::Key::MSDOS_Filename; + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash15(const char *string) +{ + switch(*((triehash_uu32*) &string[0]) | 0x20202020) { + case 0| onechar('b', 0, 32)| onechar('u', 8, 32)| onechar('i', 16, 32)| onechar('l', 24, 32): + switch(string[4] | 0x20) { + case 0| onechar('d', 0, 8): + switch(string[5]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu64*) &string[6]) | 0x2020202020202020) { + case 0| onechar('c', 0, 64)| onechar('o', 8, 64)| onechar('n', 16, 64)| onechar('f', 24, 64)| onechar('l', 32, 64)| onechar('i', 40, 64)| onechar('c', 48, 64)| onechar('t', 56, 64): + switch(string[14] | 0x20) { + case 0| onechar('s', 0, 8): + return pkgTagSection::Key::Build_Conflicts; + } + } + } + } + break; + case 0| onechar('d', 0, 32)| onechar('e', 8, 32)| onechar('s', 16, 32)| onechar('c', 24, 32): + switch(*((triehash_uu32*) &string[4]) | 0x20202020) { + case 0| onechar('r', 0, 32)| onechar('i', 8, 32)| onechar('p', 16, 32)| onechar('t', 24, 32): + switch(string[8] | 0x20) { + case 0| onechar('i', 0, 8): + switch(string[9] | 0x20) { + case 0| onechar('o', 0, 8): + switch(string[10] | 0x20) { + case 0| onechar('n', 0, 8): + switch(string[11]) { + case 0| onechar('-', 0, 8): + switch(string[12] | 0x20) { + case 0| onechar('m', 0, 8): + switch(string[13] | 0x20) { + case 0| onechar('d', 0, 8): + switch(string[14]) { + case 0| onechar('5', 0, 8): + return pkgTagSection::Key::Description_md5; + } + } + } + } + } + } + } + } + break; + case 0| onechar('s', 0, 32)| onechar('u', 8, 32)| onechar('b', 16, 32)| onechar('a', 24, 32): + switch(*((triehash_uu64*) &string[4]) | 0x2020202020202020) { + case 0| onechar('r', 0, 64)| onechar('c', 8, 64)| onechar('h', 16, 64)| onechar('i', 24, 64)| onechar('t', 32, 64)| onechar('e', 40, 64)| onechar('c', 48, 64)| onechar('t', 56, 64): + switch(string[12] | 0x20) { + case 0| onechar('u', 0, 8): + switch(string[13] | 0x20) { + case 0| onechar('r', 0, 8): + switch(string[14] | 0x20) { + case 0| onechar('e', 0, 8): + return pkgTagSection::Key::Subarchitecture; + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash16(const char *string) +{ + switch(*((triehash_uu32*) &string[0]) | 0x20202020) { + case 0| onechar('c', 0, 32)| onechar('h', 8, 32)| onechar('e', 16, 32)| onechar('c', 24, 32): + switch(*((triehash_uu32*) &string[4]) | 0x20202020) { + case 0| onechar('k', 0, 32)| onechar('s', 8, 32)| onechar('u', 16, 32)| onechar('m', 24, 32): + switch(string[8] | 0x20) { + case 0| onechar('s', 0, 8): + switch(string[9]) { + case 0| onechar('-', 0, 8): + switch(string[10] | 0x20) { + case 0| onechar('s', 0, 8): + switch(string[11] | 0x20) { + case 0| onechar('h', 0, 8): + switch(string[12] | 0x20) { + case 0| onechar('a', 0, 8): + switch(string[13]) { + case 0| onechar('2', 0, 8): + switch(string[14]) { + case 0| onechar('5', 0, 8): + switch(string[15]) { + case 0| onechar('6', 0, 8): + return pkgTagSection::Key::Checksums_Sha256; + } + } + break; + case 0| onechar('5', 0, 8): + switch(string[14]) { + case 0| onechar('1', 0, 8): + switch(string[15]) { + case 0| onechar('2', 0, 8): + return pkgTagSection::Key::Checksums_Sha512; + } + } + } + } + } + } + } + } + } + break; + case 0| onechar('p', 0, 32)| onechar('a', 8, 32)| onechar('c', 16, 32)| onechar('k', 24, 32): + switch(string[4] | 0x20) { + case 0| onechar('a', 0, 8): + switch(string[5] | 0x20) { + case 0| onechar('g', 0, 8): + switch(string[6] | 0x20) { + case 0| onechar('e', 0, 8): + switch(string[7]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu64*) &string[8]) | 0x2020202020202020) { + case 0| onechar('r', 0, 64)| onechar('e', 8, 64)| onechar('v', 16, 64)| onechar('i', 24, 64)| onechar('s', 32, 64)| onechar('i', 40, 64)| onechar('o', 48, 64)| onechar('n', 56, 64): + return pkgTagSection::Key::Package_Revision; + } + break; + case 0| onechar('_', 0, 8): + switch(*((triehash_uu64*) &string[8]) | 0x2020202020202020) { + case 0| onechar('r', 0, 64)| onechar('e', 8, 64)| onechar('v', 16, 64)| onechar('i', 24, 64)| onechar('s', 32, 64)| onechar('i', 40, 64)| onechar('o', 48, 64)| onechar('n', 56, 64): + return pkgTagSection::Key::Package__Revision; + } + } + } + } + } + break; + case 0| onechar('t', 0, 32)| onechar('r', 8, 32)| onechar('i', 16, 32)| onechar('g', 24, 32): + switch(*((triehash_uu32*) &string[4]) | 0x20202020) { + case 0| onechar('g', 0, 32)| onechar('e', 8, 32)| onechar('r', 16, 32)| onechar('s', 24, 32): + switch(string[8]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[9]) | 0x20202020) { + case 0| onechar('a', 0, 32)| onechar('w', 8, 32)| onechar('a', 16, 32)| onechar('i', 24, 32): + switch(string[13] | 0x20) { + case 0| onechar('t', 0, 8): + switch(string[14] | 0x20) { + case 0| onechar('e', 0, 8): + switch(string[15] | 0x20) { + case 0| onechar('d', 0, 8): + return pkgTagSection::Key::Triggers_Awaited; + } + } + } + break; + case 0| onechar('p', 0, 32)| onechar('e', 8, 32)| onechar('n', 16, 32)| onechar('d', 24, 32): + switch(string[13] | 0x20) { + case 0| onechar('i', 0, 8): + switch(string[14] | 0x20) { + case 0| onechar('n', 0, 8): + switch(string[15] | 0x20) { + case 0| onechar('g', 0, 8): + return pkgTagSection::Key::Triggers_Pending; + } + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash17(const char *string) +{ + switch(string[0] | 0x20) { + case 0| onechar('d', 0, 8): + switch(string[1] | 0x20) { + case 0| onechar('m', 0, 8): + switch(string[2]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[3]) | 0x20202020) { + case 0| onechar('u', 0, 32)| onechar('p', 8, 32)| onechar('l', 16, 32)| onechar('o', 24, 32): + switch(string[7] | 0x20) { + case 0| onechar('a', 0, 8): + switch(string[8] | 0x20) { + case 0| onechar('d', 0, 8): + switch(string[9]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[10]) | 0x20202020) { + case 0| onechar('a', 0, 32)| onechar('l', 8, 32)| onechar('l', 16, 32)| onechar('o', 24, 32): + switch(string[14] | 0x20) { + case 0| onechar('w', 0, 8): + switch(string[15] | 0x20) { + case 0| onechar('e', 0, 8): + switch(string[16] | 0x20) { + case 0| onechar('d', 0, 8): + return pkgTagSection::Key::Dm_Upload_Allowed; + } + } + } + } + } + } + } + } + } + } + break; + case 0| onechar('s', 0, 8): + switch(*((triehash_uu64*) &string[1]) | 0x2020202020202020) { + case 0| onechar('t', 0, 64)| onechar('a', 8, 64)| onechar('n', 16, 64)| onechar('d', 24, 64)| onechar('a', 32, 64)| onechar('r', 40, 64)| onechar('d', 48, 64)| onechar('s', 56, 64): + switch(string[9]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[10]) | 0x20202020) { + case 0| onechar('v', 0, 32)| onechar('e', 8, 32)| onechar('r', 16, 32)| onechar('s', 24, 32): + switch(string[14] | 0x20) { + case 0| onechar('i', 0, 8): + switch(string[15] | 0x20) { + case 0| onechar('o', 0, 8): + switch(string[16] | 0x20) { + case 0| onechar('n', 0, 8): + return pkgTagSection::Key::Standards_Version; + } + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash18(const char *string) +{ + switch(*((triehash_uu32*) &string[0]) | 0x20202020) { + case 0| onechar('b', 0, 32)| onechar('u', 8, 32)| onechar('i', 16, 32)| onechar('l', 24, 32): + switch(string[4] | 0x20) { + case 0| onechar('d', 0, 8): + switch(string[5]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[6]) | 0x20202020) { + case 0| onechar('d', 0, 32)| onechar('e', 8, 32)| onechar('p', 16, 32)| onechar('e', 24, 32): + switch(string[10] | 0x20) { + case 0| onechar('n', 0, 8): + switch(string[11] | 0x20) { + case 0| onechar('d', 0, 8): + switch(string[12] | 0x20) { + case 0| onechar('s', 0, 8): + switch(string[13]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[14]) | 0x20202020) { + case 0| onechar('a', 0, 32)| onechar('r', 8, 32)| onechar('c', 16, 32)| onechar('h', 24, 32): + return pkgTagSection::Key::Build_Depends_Arch; + } + } + } + } + } + } + } + break; + case 0| onechar('t', 0, 8): + switch(string[5]) { + case 0| onechar('-', 0, 8): + switch(string[6] | 0x20) { + case 0| onechar('f', 0, 8): + switch(string[7] | 0x20) { + case 0| onechar('o', 0, 8): + switch(string[8] | 0x20) { + case 0| onechar('r', 0, 8): + switch(string[9]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu64*) &string[10]) | 0x2020202020202020) { + case 0| onechar('p', 0, 64)| onechar('r', 8, 64)| onechar('o', 16, 64)| onechar('f', 24, 64)| onechar('i', 32, 64)| onechar('l', 40, 64)| onechar('e', 48, 64)| onechar('s', 56, 64): + return pkgTagSection::Key::Built_For_Profiles; + } + } + } + } + } + } + } + break; + case 0| onechar('t', 0, 32)| onechar('e', 8, 32)| onechar('s', 16, 32)| onechar('t', 24, 32): + switch(*((triehash_uu32*) &string[4]) | 0x20202020) { + case 0| onechar('s', 0, 32)| onechar('u', 8, 32)| onechar('i', 16, 32)| onechar('t', 24, 32): + switch(string[8] | 0x20) { + case 0| onechar('e', 0, 8): + switch(string[9]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu64*) &string[10]) | 0x2020202020202020) { + case 0| onechar('t', 0, 64)| onechar('r', 8, 64)| onechar('i', 16, 64)| onechar('g', 24, 64)| onechar('g', 32, 64)| onechar('e', 40, 64)| onechar('r', 48, 64)| onechar('s', 56, 64): + return pkgTagSection::Key::Testsuite_Triggers; + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash19(const char *string) +{ + switch(*((triehash_uu32*) &string[0]) | 0x20202020) { + case 0| onechar('b', 0, 32)| onechar('u', 8, 32)| onechar('i', 16, 32)| onechar('l', 24, 32): + switch(string[4] | 0x20) { + case 0| onechar('d', 0, 8): + switch(string[5]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[6]) | 0x20202020) { + case 0| onechar('d', 0, 32)| onechar('e', 8, 32)| onechar('p', 16, 32)| onechar('e', 24, 32): + switch(string[10] | 0x20) { + case 0| onechar('n', 0, 8): + switch(string[11] | 0x20) { + case 0| onechar('d', 0, 8): + switch(string[12] | 0x20) { + case 0| onechar('s', 0, 8): + switch(string[13]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[14]) | 0x20202020) { + case 0| onechar('i', 0, 32)| onechar('n', 8, 32)| onechar('d', 16, 32)| onechar('e', 24, 32): + switch(string[18] | 0x20) { + case 0| onechar('p', 0, 8): + return pkgTagSection::Key::Build_Depends_Indep; + } + } + } + } + } + } + } + } + } + break; + case 0| onechar('i', 0, 32)| onechar('n', 8, 32)| onechar('s', 16, 32)| onechar('t', 24, 32): + switch(*((triehash_uu32*) &string[4]) | 0x20202020) { + case 0| onechar('a', 0, 32)| onechar('l', 8, 32)| onechar('l', 16, 32)| onechar('e', 24, 32): + switch(string[8] | 0x20) { + case 0| onechar('r', 0, 8): + switch(string[9]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[10]) | 0x20202020) { + case 0| onechar('m', 0, 32)| onechar('e', 8, 32)| onechar('n', 16, 32)| onechar('u', 24, 32): + switch(string[14]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[15]) | 0x20202020) { + case 0| onechar('i', 0, 32)| onechar('t', 8, 32)| onechar('e', 16, 32)| onechar('m', 24, 32): + return pkgTagSection::Key::Installer_Menu_Item; + } + } + } + } + } + } + break; + case 0| onechar('o', 0, 32)| onechar('r', 8, 32)| onechar('i', 16, 32)| onechar('g', 24, 32): + switch(*((triehash_uu32*) &string[4]) | 0x20202020) { + case 0| onechar('i', 0, 32)| onechar('n', 8, 32)| onechar('a', 16, 32)| onechar('l', 24, 32): + switch(string[8]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu64*) &string[9]) | 0x2020202020202020) { + case 0| onechar('m', 0, 64)| onechar('a', 8, 64)| onechar('i', 16, 64)| onechar('n', 24, 64)| onechar('t', 32, 64)| onechar('a', 40, 64)| onechar('i', 48, 64)| onechar('n', 56, 64): + switch(string[17] | 0x20) { + case 0| onechar('e', 0, 8): + switch(string[18] | 0x20) { + case 0| onechar('r', 0, 8): + return pkgTagSection::Key::Original_Maintainer; + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash20(const char *string) +{ + switch(*((triehash_uu32*) &string[0]) | 0x20202020) { + case 0| onechar('b', 0, 32)| onechar('u', 8, 32)| onechar('i', 16, 32)| onechar('l', 24, 32): + switch(string[4] | 0x20) { + case 0| onechar('d', 0, 8): + switch(string[5]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu64*) &string[6]) | 0x2020202020202020) { + case 0| onechar('c', 0, 64)| onechar('o', 8, 64)| onechar('n', 16, 64)| onechar('f', 24, 64)| onechar('l', 32, 64)| onechar('i', 40, 64)| onechar('c', 48, 64)| onechar('t', 56, 64): + switch(string[14] | 0x20) { + case 0| onechar('s', 0, 8): + switch(string[15]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[16]) | 0x20202020) { + case 0| onechar('a', 0, 32)| onechar('r', 8, 32)| onechar('c', 16, 32)| onechar('h', 24, 32): + return pkgTagSection::Key::Build_Conflicts_Arch; + } + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash21(const char *string) +{ + switch(*((triehash_uu32*) &string[0]) | 0x20202020) { + case 0| onechar('b', 0, 32)| onechar('u', 8, 32)| onechar('i', 16, 32)| onechar('l', 24, 32): + switch(string[4] | 0x20) { + case 0| onechar('d', 0, 8): + switch(string[5]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu64*) &string[6]) | 0x2020202020202020) { + case 0| onechar('c', 0, 64)| onechar('o', 8, 64)| onechar('n', 16, 64)| onechar('f', 24, 64)| onechar('l', 32, 64)| onechar('i', 40, 64)| onechar('c', 48, 64)| onechar('t', 56, 64): + switch(string[14] | 0x20) { + case 0| onechar('s', 0, 8): + switch(string[15]) { + case 0| onechar('-', 0, 8): + switch(*((triehash_uu32*) &string[16]) | 0x20202020) { + case 0| onechar('i', 0, 32)| onechar('n', 8, 32)| onechar('d', 16, 32)| onechar('e', 24, 32): + switch(string[20] | 0x20) { + case 0| onechar('p', 0, 8): + return pkgTagSection::Key::Build_Conflicts_Indep; + } + } + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +#else +static enum pkgTagSection::Key pkgTagHash3(const char *string) +{ + switch(string[0] | 0x20) { + case 't': + switch(string[1] | 0x20) { + case 'a': + switch(string[2] | 0x20) { + case 'g': + return pkgTagSection::Key::Tag; + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash4(const char *string) +{ + switch(string[0] | 0x20) { + case 'b': + switch(string[1] | 0x20) { + case 'u': + switch(string[2] | 0x20) { + case 'g': + switch(string[3] | 0x20) { + case 's': + return pkgTagSection::Key::Bugs; + } + } + } + break; + case 's': + switch(string[1] | 0x20) { + case 'h': + switch(string[2] | 0x20) { + case 'a': + switch(string[3]) { + case '1': + return pkgTagSection::Key::SHA1; + } + } + break; + case 'i': + switch(string[2] | 0x20) { + case 'z': + switch(string[3] | 0x20) { + case 'e': + return pkgTagSection::Key::Size; + } + } + } + break; + case 't': + switch(string[1] | 0x20) { + case 'a': + switch(string[2] | 0x20) { + case 's': + switch(string[3] | 0x20) { + case 'k': + return pkgTagSection::Key::Task; + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash5(const char *string) +{ + switch(string[0] | 0x20) { + case 'c': + switch(string[1] | 0x20) { + case 'l': + switch(string[2] | 0x20) { + case 'a': + switch(string[3] | 0x20) { + case 's': + switch(string[4] | 0x20) { + case 's': + return pkgTagSection::Key::Class; + } + } + } + } + break; + case 'f': + switch(string[1] | 0x20) { + case 'i': + switch(string[2] | 0x20) { + case 'l': + switch(string[3] | 0x20) { + case 'e': + switch(string[4] | 0x20) { + case 's': + return pkgTagSection::Key::Files; + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash6(const char *string) +{ + switch(string[0] | 0x20) { + case 'b': + switch(string[1] | 0x20) { + case 'i': + switch(string[2] | 0x20) { + case 'n': + switch(string[3] | 0x20) { + case 'a': + switch(string[4] | 0x20) { + case 'r': + switch(string[5] | 0x20) { + case 'y': + return pkgTagSection::Key::Binary; + } + } + } + } + break; + case 'r': + switch(string[2] | 0x20) { + case 'e': + switch(string[3] | 0x20) { + case 'a': + switch(string[4] | 0x20) { + case 'k': + switch(string[5] | 0x20) { + case 's': + return pkgTagSection::Key::Breaks; + } + } + } + } + } + break; + case 'f': + switch(string[1] | 0x20) { + case 'o': + switch(string[2] | 0x20) { + case 'r': + switch(string[3] | 0x20) { + case 'm': + switch(string[4] | 0x20) { + case 'a': + switch(string[5] | 0x20) { + case 't': + return pkgTagSection::Key::Format; + } + } + } + } + } + break; + case 'm': + switch(string[1] | 0x20) { + case 'd': + switch(string[2]) { + case '5': + switch(string[3] | 0x20) { + case 's': + switch(string[4] | 0x20) { + case 'u': + switch(string[5] | 0x20) { + case 'm': + return pkgTagSection::Key::MD5sum; + } + } + } + } + } + break; + case 'o': + switch(string[1] | 0x20) { + case 'r': + switch(string[2] | 0x20) { + case 'i': + switch(string[3] | 0x20) { + case 'g': + switch(string[4] | 0x20) { + case 'i': + switch(string[5] | 0x20) { + case 'n': + return pkgTagSection::Key::Origin; + } + } + } + } + } + break; + case 's': + switch(string[1] | 0x20) { + case 'h': + switch(string[2] | 0x20) { + case 'a': + switch(string[3]) { + case '2': + switch(string[4]) { + case '5': + switch(string[5]) { + case '6': + return pkgTagSection::Key::SHA256; + } + } + break; + case '5': + switch(string[4]) { + case '1': + switch(string[5]) { + case '2': + return pkgTagSection::Key::SHA512; + } + } + } + } + break; + case 'o': + switch(string[2] | 0x20) { + case 'u': + switch(string[3] | 0x20) { + case 'r': + switch(string[4] | 0x20) { + case 'c': + switch(string[5] | 0x20) { + case 'e': + return pkgTagSection::Key::Source; + } + } + } + } + break; + case 't': + switch(string[2] | 0x20) { + case 'a': + switch(string[3] | 0x20) { + case 't': + switch(string[4] | 0x20) { + case 'u': + switch(string[5] | 0x20) { + case 's': + return pkgTagSection::Key::Status; + } + } + } + } + } + break; + case 'v': + switch(string[1] | 0x20) { + case 'c': + switch(string[2] | 0x20) { + case 's': + switch(string[3]) { + case '-': + switch(string[4] | 0x20) { + case 'h': + switch(string[5] | 0x20) { + case 'g': + return pkgTagSection::Key::Vcs_Hg; + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash7(const char *string) +{ + switch(string[0] | 0x20) { + case 'd': + switch(string[1] | 0x20) { + case 'e': + switch(string[2] | 0x20) { + case 'p': + switch(string[3] | 0x20) { + case 'e': + switch(string[4] | 0x20) { + case 'n': + switch(string[5] | 0x20) { + case 'd': + switch(string[6] | 0x20) { + case 's': + return pkgTagSection::Key::Depends; + } + } + } + } + } + } + break; + case 'p': + switch(string[1] | 0x20) { + case 'a': + switch(string[2] | 0x20) { + case 'c': + switch(string[3] | 0x20) { + case 'k': + switch(string[4] | 0x20) { + case 'a': + switch(string[5] | 0x20) { + case 'g': + switch(string[6] | 0x20) { + case 'e': + return pkgTagSection::Key::Package; + } + } + } + } + } + } + break; + case 's': + switch(string[1] | 0x20) { + case 'e': + switch(string[2] | 0x20) { + case 'c': + switch(string[3] | 0x20) { + case 't': + switch(string[4] | 0x20) { + case 'i': + switch(string[5] | 0x20) { + case 'o': + switch(string[6] | 0x20) { + case 'n': + return pkgTagSection::Key::Section; + } + } + } + } + } + } + break; + case 'v': + switch(string[1] | 0x20) { + case 'c': + switch(string[2] | 0x20) { + case 's': + switch(string[3]) { + case '-': + switch(string[4] | 0x20) { + case 'b': + switch(string[5] | 0x20) { + case 'z': + switch(string[6] | 0x20) { + case 'r': + return pkgTagSection::Key::Vcs_Bzr; + } + } + break; + case 'c': + switch(string[5] | 0x20) { + case 'v': + switch(string[6] | 0x20) { + case 's': + return pkgTagSection::Key::Vcs_Cvs; + } + } + break; + case 'g': + switch(string[5] | 0x20) { + case 'i': + switch(string[6] | 0x20) { + case 't': + return pkgTagSection::Key::Vcs_Git; + } + } + break; + case 'm': + switch(string[5] | 0x20) { + case 't': + switch(string[6] | 0x20) { + case 'n': + return pkgTagSection::Key::Vcs_Mtn; + } + } + break; + case 's': + switch(string[5] | 0x20) { + case 'v': + switch(string[6] | 0x20) { + case 'n': + return pkgTagSection::Key::Vcs_Svn; + } + } + } + } + } + break; + case 'e': + switch(string[2] | 0x20) { + case 'r': + switch(string[3] | 0x20) { + case 's': + switch(string[4] | 0x20) { + case 'i': + switch(string[5] | 0x20) { + case 'o': + switch(string[6] | 0x20) { + case 'n': + return pkgTagSection::Key::Version; + } + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash8(const char *string) +{ + switch(string[0] | 0x20) { + case 'e': + switch(string[1] | 0x20) { + case 'n': + switch(string[2] | 0x20) { + case 'h': + switch(string[3] | 0x20) { + case 'a': + switch(string[4] | 0x20) { + case 'n': + switch(string[5] | 0x20) { + case 'c': + switch(string[6] | 0x20) { + case 'e': + switch(string[7] | 0x20) { + case 's': + return pkgTagSection::Key::Enhances; + } + } + } + } + } + } + } + break; + case 'f': + switch(string[1] | 0x20) { + case 'i': + switch(string[2] | 0x20) { + case 'l': + switch(string[3] | 0x20) { + case 'e': + switch(string[4] | 0x20) { + case 'n': + switch(string[5] | 0x20) { + case 'a': + switch(string[6] | 0x20) { + case 'm': + switch(string[7] | 0x20) { + case 'e': + return pkgTagSection::Key::Filename; + } + } + } + } + } + } + } + break; + case 'h': + switch(string[1] | 0x20) { + case 'o': + switch(string[2] | 0x20) { + case 'm': + switch(string[3] | 0x20) { + case 'e': + switch(string[4] | 0x20) { + case 'p': + switch(string[5] | 0x20) { + case 'a': + switch(string[6] | 0x20) { + case 'g': + switch(string[7] | 0x20) { + case 'e': + return pkgTagSection::Key::Homepage; + } + } + } + } + } + } + } + break; + case 'o': + switch(string[1] | 0x20) { + case 'p': + switch(string[2] | 0x20) { + case 't': + switch(string[3] | 0x20) { + case 'i': + switch(string[4] | 0x20) { + case 'o': + switch(string[5] | 0x20) { + case 'n': + switch(string[6] | 0x20) { + case 'a': + switch(string[7] | 0x20) { + case 'l': + return pkgTagSection::Key::Optional; + } + } + } + } + } + } + } + break; + case 'p': + switch(string[1] | 0x20) { + case 'r': + switch(string[2] | 0x20) { + case 'i': + switch(string[3] | 0x20) { + case 'o': + switch(string[4] | 0x20) { + case 'r': + switch(string[5] | 0x20) { + case 'i': + switch(string[6] | 0x20) { + case 't': + switch(string[7] | 0x20) { + case 'y': + return pkgTagSection::Key::Priority; + } + } + } + } + } + break; + case 'o': + switch(string[3] | 0x20) { + case 'v': + switch(string[4] | 0x20) { + case 'i': + switch(string[5] | 0x20) { + case 'd': + switch(string[6] | 0x20) { + case 'e': + switch(string[7] | 0x20) { + case 's': + return pkgTagSection::Key::Provides; + } + } + } + } + } + } + } + break; + case 'r': + switch(string[1] | 0x20) { + case 'e': + switch(string[2] | 0x20) { + case 'p': + switch(string[3] | 0x20) { + case 'l': + switch(string[4] | 0x20) { + case 'a': + switch(string[5] | 0x20) { + case 'c': + switch(string[6] | 0x20) { + case 'e': + switch(string[7] | 0x20) { + case 's': + return pkgTagSection::Key::Replaces; + } + } + } + } + } + break; + case 'v': + switch(string[3] | 0x20) { + case 'i': + switch(string[4] | 0x20) { + case 's': + switch(string[5] | 0x20) { + case 'i': + switch(string[6] | 0x20) { + case 'o': + switch(string[7] | 0x20) { + case 'n': + return pkgTagSection::Key::Revision; + } + } + } + } + } + } + } + break; + case 's': + switch(string[1] | 0x20) { + case 'u': + switch(string[2] | 0x20) { + case 'g': + switch(string[3] | 0x20) { + case 'g': + switch(string[4] | 0x20) { + case 'e': + switch(string[5] | 0x20) { + case 's': + switch(string[6] | 0x20) { + case 't': + switch(string[7] | 0x20) { + case 's': + return pkgTagSection::Key::Suggests; + } + } + } + } + } + } + } + break; + case 'v': + switch(string[1] | 0x20) { + case 'c': + switch(string[2] | 0x20) { + case 's': + switch(string[3]) { + case '-': + switch(string[4] | 0x20) { + case 'a': + switch(string[5] | 0x20) { + case 'r': + switch(string[6] | 0x20) { + case 'c': + switch(string[7] | 0x20) { + case 'h': + return pkgTagSection::Key::Vcs_Arch; + } + } + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash9(const char *string) +{ + switch(string[0] | 0x20) { + case 'c': + switch(string[1] | 0x20) { + case 'o': + switch(string[2] | 0x20) { + case 'n': + switch(string[3] | 0x20) { + case 'f': + switch(string[4] | 0x20) { + case 'f': + switch(string[5] | 0x20) { + case 'i': + switch(string[6] | 0x20) { + case 'l': + switch(string[7] | 0x20) { + case 'e': + switch(string[8] | 0x20) { + case 's': + return pkgTagSection::Key::Conffiles; + } + } + } + } + break; + case 'l': + switch(string[5] | 0x20) { + case 'i': + switch(string[6] | 0x20) { + case 'c': + switch(string[7] | 0x20) { + case 't': + switch(string[8] | 0x20) { + case 's': + return pkgTagSection::Key::Conflicts; + } + } + } + } + } + } + } + } + break; + case 'd': + switch(string[1] | 0x20) { + case 'i': + switch(string[2] | 0x20) { + case 'r': + switch(string[3] | 0x20) { + case 'e': + switch(string[4] | 0x20) { + case 'c': + switch(string[5] | 0x20) { + case 't': + switch(string[6] | 0x20) { + case 'o': + switch(string[7] | 0x20) { + case 'r': + switch(string[8] | 0x20) { + case 'y': + return pkgTagSection::Key::Directory; + } + } + } + } + } + } + } + } + break; + case 'e': + switch(string[1] | 0x20) { + case 's': + switch(string[2] | 0x20) { + case 's': + switch(string[3] | 0x20) { + case 'e': + switch(string[4] | 0x20) { + case 'n': + switch(string[5] | 0x20) { + case 't': + switch(string[6] | 0x20) { + case 'i': + switch(string[7] | 0x20) { + case 'a': + switch(string[8] | 0x20) { + case 'l': + return pkgTagSection::Key::Essential; + } + } + } + } + } + } + } + } + break; + case 'i': + switch(string[1] | 0x20) { + case 'm': + switch(string[2] | 0x20) { + case 'p': + switch(string[3] | 0x20) { + case 'o': + switch(string[4] | 0x20) { + case 'r': + switch(string[5] | 0x20) { + case 't': + switch(string[6] | 0x20) { + case 'a': + switch(string[7] | 0x20) { + case 'n': + switch(string[8] | 0x20) { + case 't': + return pkgTagSection::Key::Important; + } + } + } + } + } + } + } + } + break; + case 't': + switch(string[1] | 0x20) { + case 'e': + switch(string[2] | 0x20) { + case 's': + switch(string[3] | 0x20) { + case 't': + switch(string[4] | 0x20) { + case 's': + switch(string[5] | 0x20) { + case 'u': + switch(string[6] | 0x20) { + case 'i': + switch(string[7] | 0x20) { + case 't': + switch(string[8] | 0x20) { + case 'e': + return pkgTagSection::Key::Testsuite; + } + } + } + } + } + } + } + } + break; + case 'u': + switch(string[1] | 0x20) { + case 'p': + switch(string[2] | 0x20) { + case 'l': + switch(string[3] | 0x20) { + case 'o': + switch(string[4] | 0x20) { + case 'a': + switch(string[5] | 0x20) { + case 'd': + switch(string[6] | 0x20) { + case 'e': + switch(string[7] | 0x20) { + case 'r': + switch(string[8] | 0x20) { + case 's': + return pkgTagSection::Key::Uploaders; + } + } + } + } + } + } + } + } + break; + case 'v': + switch(string[1] | 0x20) { + case 'c': + switch(string[2] | 0x20) { + case 's': + switch(string[3]) { + case '-': + switch(string[4] | 0x20) { + case 'd': + switch(string[5] | 0x20) { + case 'a': + switch(string[6] | 0x20) { + case 'r': + switch(string[7] | 0x20) { + case 'c': + switch(string[8] | 0x20) { + case 's': + return pkgTagSection::Key::Vcs_Darcs; + } + } + } + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash10(const char *string) +{ + switch(string[0] | 0x20) { + case 'm': + switch(string[1] | 0x20) { + case 'a': + switch(string[2] | 0x20) { + case 'i': + switch(string[3] | 0x20) { + case 'n': + switch(string[4] | 0x20) { + case 't': + switch(string[5] | 0x20) { + case 'a': + switch(string[6] | 0x20) { + case 'i': + switch(string[7] | 0x20) { + case 'n': + switch(string[8] | 0x20) { + case 'e': + switch(string[9] | 0x20) { + case 'r': + return pkgTagSection::Key::Maintainer; + } + } + } + } + } + } + } + } + break; + case 'u': + switch(string[2] | 0x20) { + case 'l': + switch(string[3] | 0x20) { + case 't': + switch(string[4] | 0x20) { + case 'i': + switch(string[5]) { + case '-': + switch(string[6] | 0x20) { + case 'a': + switch(string[7] | 0x20) { + case 'r': + switch(string[8] | 0x20) { + case 'c': + switch(string[9] | 0x20) { + case 'h': + return pkgTagSection::Key::Multi_Arch; + } + } + } + } + } + } + } + } + } + break; + case 'r': + switch(string[1] | 0x20) { + case 'e': + switch(string[2] | 0x20) { + case 'c': + switch(string[3] | 0x20) { + case 'o': + switch(string[4] | 0x20) { + case 'm': + switch(string[5] | 0x20) { + case 'm': + switch(string[6] | 0x20) { + case 'e': + switch(string[7] | 0x20) { + case 'n': + switch(string[8] | 0x20) { + case 'd': + switch(string[9] | 0x20) { + case 's': + return pkgTagSection::Key::Recommends; + } + } + } + } + } + } + } + } + } + break; + case 'v': + switch(string[1] | 0x20) { + case 'c': + switch(string[2] | 0x20) { + case 's': + switch(string[3]) { + case '-': + switch(string[4] | 0x20) { + case 'b': + switch(string[5] | 0x20) { + case 'r': + switch(string[6] | 0x20) { + case 'o': + switch(string[7] | 0x20) { + case 'w': + switch(string[8] | 0x20) { + case 's': + switch(string[9] | 0x20) { + case 'e': + return pkgTagSection::Key::Vcs_Browse; + } + } + } + } + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash11(const char *string) +{ + switch(string[0] | 0x20) { + case 'b': + switch(string[1] | 0x20) { + case 'u': + switch(string[2] | 0x20) { + case 'i': + switch(string[3] | 0x20) { + case 'l': + switch(string[4] | 0x20) { + case 't': + switch(string[5]) { + case '-': + switch(string[6] | 0x20) { + case 'u': + switch(string[7] | 0x20) { + case 's': + switch(string[8] | 0x20) { + case 'i': + switch(string[9] | 0x20) { + case 'n': + switch(string[10] | 0x20) { + case 'g': + return pkgTagSection::Key::Built_Using; + } + } + } + } + } + } + } + } + } + } + break; + case 'd': + switch(string[1] | 0x20) { + case 'e': + switch(string[2] | 0x20) { + case 's': + switch(string[3] | 0x20) { + case 'c': + switch(string[4] | 0x20) { + case 'r': + switch(string[5] | 0x20) { + case 'i': + switch(string[6] | 0x20) { + case 'p': + switch(string[7] | 0x20) { + case 't': + switch(string[8] | 0x20) { + case 'i': + switch(string[9] | 0x20) { + case 'o': + switch(string[10] | 0x20) { + case 'n': + return pkgTagSection::Key::Description; + } + } + } + } + } + } + } + } + } + } + break; + case 'p': + switch(string[1] | 0x20) { + case 'r': + switch(string[2] | 0x20) { + case 'e': + switch(string[3]) { + case '-': + switch(string[4] | 0x20) { + case 'd': + switch(string[5] | 0x20) { + case 'e': + switch(string[6] | 0x20) { + case 'p': + switch(string[7] | 0x20) { + case 'e': + switch(string[8] | 0x20) { + case 'n': + switch(string[9] | 0x20) { + case 'd': + switch(string[10] | 0x20) { + case 's': + return pkgTagSection::Key::Pre_Depends; + } + } + } + } + } + } + } + } + } + } + break; + case 'r': + switch(string[1] | 0x20) { + case 'e': + switch(string[2] | 0x20) { + case 'c': + switch(string[3] | 0x20) { + case 'o': + switch(string[4] | 0x20) { + case 'm': + switch(string[5] | 0x20) { + case 'm': + switch(string[6] | 0x20) { + case 'e': + switch(string[7] | 0x20) { + case 'n': + switch(string[8] | 0x20) { + case 'd': + switch(string[9] | 0x20) { + case 'e': + switch(string[10] | 0x20) { + case 'd': + return pkgTagSection::Key::Recommended; + } + } + } + } + } + } + } + } + } + } + break; + case 'v': + switch(string[1] | 0x20) { + case 'c': + switch(string[2] | 0x20) { + case 's': + switch(string[3]) { + case '-': + switch(string[4] | 0x20) { + case 'b': + switch(string[5] | 0x20) { + case 'r': + switch(string[6] | 0x20) { + case 'o': + switch(string[7] | 0x20) { + case 'w': + switch(string[8] | 0x20) { + case 's': + switch(string[9] | 0x20) { + case 'e': + switch(string[10] | 0x20) { + case 'r': + return pkgTagSection::Key::Vcs_Browser; + } + } + } + } + } + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash12(const char *string) +{ + switch(string[0] | 0x20) { + case 'a': + switch(string[1] | 0x20) { + case 'r': + switch(string[2] | 0x20) { + case 'c': + switch(string[3] | 0x20) { + case 'h': + switch(string[4] | 0x20) { + case 'i': + switch(string[5] | 0x20) { + case 't': + switch(string[6] | 0x20) { + case 'e': + switch(string[7] | 0x20) { + case 'c': + switch(string[8] | 0x20) { + case 't': + switch(string[9] | 0x20) { + case 'u': + switch(string[10] | 0x20) { + case 'r': + switch(string[11] | 0x20) { + case 'e': + return pkgTagSection::Key::Architecture; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'p': + switch(string[1] | 0x20) { + case 'a': + switch(string[2] | 0x20) { + case 'c': + switch(string[3] | 0x20) { + case 'k': + switch(string[4] | 0x20) { + case 'a': + switch(string[5] | 0x20) { + case 'g': + switch(string[6] | 0x20) { + case 'e': + switch(string[7]) { + case '-': + switch(string[8] | 0x20) { + case 'l': + switch(string[9] | 0x20) { + case 'i': + switch(string[10] | 0x20) { + case 's': + switch(string[11] | 0x20) { + case 't': + return pkgTagSection::Key::Package_List; + } + } + } + break; + case 't': + switch(string[9] | 0x20) { + case 'y': + switch(string[10] | 0x20) { + case 'p': + switch(string[11] | 0x20) { + case 'e': + return pkgTagSection::Key::Package_Type; + } + } + } + } + } + } + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash13(const char *string) +{ + switch(string[0] | 0x20) { + case 'b': + switch(string[1] | 0x20) { + case 'u': + switch(string[2] | 0x20) { + case 'i': + switch(string[3] | 0x20) { + case 'l': + switch(string[4] | 0x20) { + case 'd': + switch(string[5]) { + case '-': + switch(string[6] | 0x20) { + case 'd': + switch(string[7] | 0x20) { + case 'e': + switch(string[8] | 0x20) { + case 'p': + switch(string[9] | 0x20) { + case 'e': + switch(string[10] | 0x20) { + case 'n': + switch(string[11] | 0x20) { + case 'd': + switch(string[12] | 0x20) { + case 's': + return pkgTagSection::Key::Build_Depends; + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'c': + switch(string[1] | 0x20) { + case 'h': + switch(string[2] | 0x20) { + case 'e': + switch(string[3] | 0x20) { + case 'c': + switch(string[4] | 0x20) { + case 'k': + switch(string[5] | 0x20) { + case 's': + switch(string[6] | 0x20) { + case 'u': + switch(string[7] | 0x20) { + case 'm': + switch(string[8] | 0x20) { + case 's': + switch(string[9]) { + case '-': + switch(string[10] | 0x20) { + case 'm': + switch(string[11] | 0x20) { + case 'd': + switch(string[12]) { + case '5': + return pkgTagSection::Key::Checksums_Md5; + } + } + } + } + } + } + } + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash14(const char *string) +{ + switch(string[0] | 0x20) { + case 'c': + switch(string[1] | 0x20) { + case 'h': + switch(string[2] | 0x20) { + case 'e': + switch(string[3] | 0x20) { + case 'c': + switch(string[4] | 0x20) { + case 'k': + switch(string[5] | 0x20) { + case 's': + switch(string[6] | 0x20) { + case 'u': + switch(string[7] | 0x20) { + case 'm': + switch(string[8] | 0x20) { + case 's': + switch(string[9]) { + case '-': + switch(string[10] | 0x20) { + case 's': + switch(string[11] | 0x20) { + case 'h': + switch(string[12] | 0x20) { + case 'a': + switch(string[13]) { + case '1': + return pkgTagSection::Key::Checksums_Sha1; + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'o': + switch(string[2] | 0x20) { + case 'n': + switch(string[3] | 0x20) { + case 'f': + switch(string[4] | 0x20) { + case 'i': + switch(string[5] | 0x20) { + case 'g': + switch(string[6]) { + case '-': + switch(string[7] | 0x20) { + case 'v': + switch(string[8] | 0x20) { + case 'e': + switch(string[9] | 0x20) { + case 'r': + switch(string[10] | 0x20) { + case 's': + switch(string[11] | 0x20) { + case 'i': + switch(string[12] | 0x20) { + case 'o': + switch(string[13] | 0x20) { + case 'n': + return pkgTagSection::Key::Config_Version; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'i': + switch(string[1] | 0x20) { + case 'n': + switch(string[2] | 0x20) { + case 's': + switch(string[3] | 0x20) { + case 't': + switch(string[4] | 0x20) { + case 'a': + switch(string[5] | 0x20) { + case 'l': + switch(string[6] | 0x20) { + case 'l': + switch(string[7] | 0x20) { + case 'e': + switch(string[8] | 0x20) { + case 'd': + switch(string[9]) { + case '-': + switch(string[10] | 0x20) { + case 's': + switch(string[11] | 0x20) { + case 'i': + switch(string[12] | 0x20) { + case 'z': + switch(string[13] | 0x20) { + case 'e': + return pkgTagSection::Key::Installed_Size; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'k': + switch(string[1] | 0x20) { + case 'e': + switch(string[2] | 0x20) { + case 'r': + switch(string[3] | 0x20) { + case 'n': + switch(string[4] | 0x20) { + case 'e': + switch(string[5] | 0x20) { + case 'l': + switch(string[6]) { + case '-': + switch(string[7] | 0x20) { + case 'v': + switch(string[8] | 0x20) { + case 'e': + switch(string[9] | 0x20) { + case 'r': + switch(string[10] | 0x20) { + case 's': + switch(string[11] | 0x20) { + case 'i': + switch(string[12] | 0x20) { + case 'o': + switch(string[13] | 0x20) { + case 'n': + return pkgTagSection::Key::Kernel_Version; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'm': + switch(string[1] | 0x20) { + case 's': + switch(string[2] | 0x20) { + case 'd': + switch(string[3] | 0x20) { + case 'o': + switch(string[4] | 0x20) { + case 's': + switch(string[5]) { + case '-': + switch(string[6] | 0x20) { + case 'f': + switch(string[7] | 0x20) { + case 'i': + switch(string[8] | 0x20) { + case 'l': + switch(string[9] | 0x20) { + case 'e': + switch(string[10] | 0x20) { + case 'n': + switch(string[11] | 0x20) { + case 'a': + switch(string[12] | 0x20) { + case 'm': + switch(string[13] | 0x20) { + case 'e': + return pkgTagSection::Key::MSDOS_Filename; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash15(const char *string) +{ + switch(string[0] | 0x20) { + case 'b': + switch(string[1] | 0x20) { + case 'u': + switch(string[2] | 0x20) { + case 'i': + switch(string[3] | 0x20) { + case 'l': + switch(string[4] | 0x20) { + case 'd': + switch(string[5]) { + case '-': + switch(string[6] | 0x20) { + case 'c': + switch(string[7] | 0x20) { + case 'o': + switch(string[8] | 0x20) { + case 'n': + switch(string[9] | 0x20) { + case 'f': + switch(string[10] | 0x20) { + case 'l': + switch(string[11] | 0x20) { + case 'i': + switch(string[12] | 0x20) { + case 'c': + switch(string[13] | 0x20) { + case 't': + switch(string[14] | 0x20) { + case 's': + return pkgTagSection::Key::Build_Conflicts; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'd': + switch(string[1] | 0x20) { + case 'e': + switch(string[2] | 0x20) { + case 's': + switch(string[3] | 0x20) { + case 'c': + switch(string[4] | 0x20) { + case 'r': + switch(string[5] | 0x20) { + case 'i': + switch(string[6] | 0x20) { + case 'p': + switch(string[7] | 0x20) { + case 't': + switch(string[8] | 0x20) { + case 'i': + switch(string[9] | 0x20) { + case 'o': + switch(string[10] | 0x20) { + case 'n': + switch(string[11]) { + case '-': + switch(string[12] | 0x20) { + case 'm': + switch(string[13] | 0x20) { + case 'd': + switch(string[14]) { + case '5': + return pkgTagSection::Key::Description_md5; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 's': + switch(string[1] | 0x20) { + case 'u': + switch(string[2] | 0x20) { + case 'b': + switch(string[3] | 0x20) { + case 'a': + switch(string[4] | 0x20) { + case 'r': + switch(string[5] | 0x20) { + case 'c': + switch(string[6] | 0x20) { + case 'h': + switch(string[7] | 0x20) { + case 'i': + switch(string[8] | 0x20) { + case 't': + switch(string[9] | 0x20) { + case 'e': + switch(string[10] | 0x20) { + case 'c': + switch(string[11] | 0x20) { + case 't': + switch(string[12] | 0x20) { + case 'u': + switch(string[13] | 0x20) { + case 'r': + switch(string[14] | 0x20) { + case 'e': + return pkgTagSection::Key::Subarchitecture; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash16(const char *string) +{ + switch(string[0] | 0x20) { + case 'c': + switch(string[1] | 0x20) { + case 'h': + switch(string[2] | 0x20) { + case 'e': + switch(string[3] | 0x20) { + case 'c': + switch(string[4] | 0x20) { + case 'k': + switch(string[5] | 0x20) { + case 's': + switch(string[6] | 0x20) { + case 'u': + switch(string[7] | 0x20) { + case 'm': + switch(string[8] | 0x20) { + case 's': + switch(string[9]) { + case '-': + switch(string[10] | 0x20) { + case 's': + switch(string[11] | 0x20) { + case 'h': + switch(string[12] | 0x20) { + case 'a': + switch(string[13]) { + case '2': + switch(string[14]) { + case '5': + switch(string[15]) { + case '6': + return pkgTagSection::Key::Checksums_Sha256; + } + } + break; + case '5': + switch(string[14]) { + case '1': + switch(string[15]) { + case '2': + return pkgTagSection::Key::Checksums_Sha512; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'p': + switch(string[1] | 0x20) { + case 'a': + switch(string[2] | 0x20) { + case 'c': + switch(string[3] | 0x20) { + case 'k': + switch(string[4] | 0x20) { + case 'a': + switch(string[5] | 0x20) { + case 'g': + switch(string[6] | 0x20) { + case 'e': + switch(string[7]) { + case '-': + switch(string[8] | 0x20) { + case 'r': + switch(string[9] | 0x20) { + case 'e': + switch(string[10] | 0x20) { + case 'v': + switch(string[11] | 0x20) { + case 'i': + switch(string[12] | 0x20) { + case 's': + switch(string[13] | 0x20) { + case 'i': + switch(string[14] | 0x20) { + case 'o': + switch(string[15] | 0x20) { + case 'n': + return pkgTagSection::Key::Package_Revision; + } + } + } + } + } + } + } + } + break; + case '_': + switch(string[8] | 0x20) { + case 'r': + switch(string[9] | 0x20) { + case 'e': + switch(string[10] | 0x20) { + case 'v': + switch(string[11] | 0x20) { + case 'i': + switch(string[12] | 0x20) { + case 's': + switch(string[13] | 0x20) { + case 'i': + switch(string[14] | 0x20) { + case 'o': + switch(string[15] | 0x20) { + case 'n': + return pkgTagSection::Key::Package__Revision; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 't': + switch(string[1] | 0x20) { + case 'r': + switch(string[2] | 0x20) { + case 'i': + switch(string[3] | 0x20) { + case 'g': + switch(string[4] | 0x20) { + case 'g': + switch(string[5] | 0x20) { + case 'e': + switch(string[6] | 0x20) { + case 'r': + switch(string[7] | 0x20) { + case 's': + switch(string[8]) { + case '-': + switch(string[9] | 0x20) { + case 'a': + switch(string[10] | 0x20) { + case 'w': + switch(string[11] | 0x20) { + case 'a': + switch(string[12] | 0x20) { + case 'i': + switch(string[13] | 0x20) { + case 't': + switch(string[14] | 0x20) { + case 'e': + switch(string[15] | 0x20) { + case 'd': + return pkgTagSection::Key::Triggers_Awaited; + } + } + } + } + } + } + break; + case 'p': + switch(string[10] | 0x20) { + case 'e': + switch(string[11] | 0x20) { + case 'n': + switch(string[12] | 0x20) { + case 'd': + switch(string[13] | 0x20) { + case 'i': + switch(string[14] | 0x20) { + case 'n': + switch(string[15] | 0x20) { + case 'g': + return pkgTagSection::Key::Triggers_Pending; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash17(const char *string) +{ + switch(string[0] | 0x20) { + case 'd': + switch(string[1] | 0x20) { + case 'm': + switch(string[2]) { + case '-': + switch(string[3] | 0x20) { + case 'u': + switch(string[4] | 0x20) { + case 'p': + switch(string[5] | 0x20) { + case 'l': + switch(string[6] | 0x20) { + case 'o': + switch(string[7] | 0x20) { + case 'a': + switch(string[8] | 0x20) { + case 'd': + switch(string[9]) { + case '-': + switch(string[10] | 0x20) { + case 'a': + switch(string[11] | 0x20) { + case 'l': + switch(string[12] | 0x20) { + case 'l': + switch(string[13] | 0x20) { + case 'o': + switch(string[14] | 0x20) { + case 'w': + switch(string[15] | 0x20) { + case 'e': + switch(string[16] | 0x20) { + case 'd': + return pkgTagSection::Key::Dm_Upload_Allowed; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 's': + switch(string[1] | 0x20) { + case 't': + switch(string[2] | 0x20) { + case 'a': + switch(string[3] | 0x20) { + case 'n': + switch(string[4] | 0x20) { + case 'd': + switch(string[5] | 0x20) { + case 'a': + switch(string[6] | 0x20) { + case 'r': + switch(string[7] | 0x20) { + case 'd': + switch(string[8] | 0x20) { + case 's': + switch(string[9]) { + case '-': + switch(string[10] | 0x20) { + case 'v': + switch(string[11] | 0x20) { + case 'e': + switch(string[12] | 0x20) { + case 'r': + switch(string[13] | 0x20) { + case 's': + switch(string[14] | 0x20) { + case 'i': + switch(string[15] | 0x20) { + case 'o': + switch(string[16] | 0x20) { + case 'n': + return pkgTagSection::Key::Standards_Version; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash18(const char *string) +{ + switch(string[0] | 0x20) { + case 'b': + switch(string[1] | 0x20) { + case 'u': + switch(string[2] | 0x20) { + case 'i': + switch(string[3] | 0x20) { + case 'l': + switch(string[4] | 0x20) { + case 'd': + switch(string[5]) { + case '-': + switch(string[6] | 0x20) { + case 'd': + switch(string[7] | 0x20) { + case 'e': + switch(string[8] | 0x20) { + case 'p': + switch(string[9] | 0x20) { + case 'e': + switch(string[10] | 0x20) { + case 'n': + switch(string[11] | 0x20) { + case 'd': + switch(string[12] | 0x20) { + case 's': + switch(string[13]) { + case '-': + switch(string[14] | 0x20) { + case 'a': + switch(string[15] | 0x20) { + case 'r': + switch(string[16] | 0x20) { + case 'c': + switch(string[17] | 0x20) { + case 'h': + return pkgTagSection::Key::Build_Depends_Arch; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 't': + switch(string[5]) { + case '-': + switch(string[6] | 0x20) { + case 'f': + switch(string[7] | 0x20) { + case 'o': + switch(string[8] | 0x20) { + case 'r': + switch(string[9]) { + case '-': + switch(string[10] | 0x20) { + case 'p': + switch(string[11] | 0x20) { + case 'r': + switch(string[12] | 0x20) { + case 'o': + switch(string[13] | 0x20) { + case 'f': + switch(string[14] | 0x20) { + case 'i': + switch(string[15] | 0x20) { + case 'l': + switch(string[16] | 0x20) { + case 'e': + switch(string[17] | 0x20) { + case 's': + return pkgTagSection::Key::Built_For_Profiles; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 't': + switch(string[1] | 0x20) { + case 'e': + switch(string[2] | 0x20) { + case 's': + switch(string[3] | 0x20) { + case 't': + switch(string[4] | 0x20) { + case 's': + switch(string[5] | 0x20) { + case 'u': + switch(string[6] | 0x20) { + case 'i': + switch(string[7] | 0x20) { + case 't': + switch(string[8] | 0x20) { + case 'e': + switch(string[9]) { + case '-': + switch(string[10] | 0x20) { + case 't': + switch(string[11] | 0x20) { + case 'r': + switch(string[12] | 0x20) { + case 'i': + switch(string[13] | 0x20) { + case 'g': + switch(string[14] | 0x20) { + case 'g': + switch(string[15] | 0x20) { + case 'e': + switch(string[16] | 0x20) { + case 'r': + switch(string[17] | 0x20) { + case 's': + return pkgTagSection::Key::Testsuite_Triggers; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash19(const char *string) +{ + switch(string[0] | 0x20) { + case 'b': + switch(string[1] | 0x20) { + case 'u': + switch(string[2] | 0x20) { + case 'i': + switch(string[3] | 0x20) { + case 'l': + switch(string[4] | 0x20) { + case 'd': + switch(string[5]) { + case '-': + switch(string[6] | 0x20) { + case 'd': + switch(string[7] | 0x20) { + case 'e': + switch(string[8] | 0x20) { + case 'p': + switch(string[9] | 0x20) { + case 'e': + switch(string[10] | 0x20) { + case 'n': + switch(string[11] | 0x20) { + case 'd': + switch(string[12] | 0x20) { + case 's': + switch(string[13]) { + case '-': + switch(string[14] | 0x20) { + case 'i': + switch(string[15] | 0x20) { + case 'n': + switch(string[16] | 0x20) { + case 'd': + switch(string[17] | 0x20) { + case 'e': + switch(string[18] | 0x20) { + case 'p': + return pkgTagSection::Key::Build_Depends_Indep; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'i': + switch(string[1] | 0x20) { + case 'n': + switch(string[2] | 0x20) { + case 's': + switch(string[3] | 0x20) { + case 't': + switch(string[4] | 0x20) { + case 'a': + switch(string[5] | 0x20) { + case 'l': + switch(string[6] | 0x20) { + case 'l': + switch(string[7] | 0x20) { + case 'e': + switch(string[8] | 0x20) { + case 'r': + switch(string[9]) { + case '-': + switch(string[10] | 0x20) { + case 'm': + switch(string[11] | 0x20) { + case 'e': + switch(string[12] | 0x20) { + case 'n': + switch(string[13] | 0x20) { + case 'u': + switch(string[14]) { + case '-': + switch(string[15] | 0x20) { + case 'i': + switch(string[16] | 0x20) { + case 't': + switch(string[17] | 0x20) { + case 'e': + switch(string[18] | 0x20) { + case 'm': + return pkgTagSection::Key::Installer_Menu_Item; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'o': + switch(string[1] | 0x20) { + case 'r': + switch(string[2] | 0x20) { + case 'i': + switch(string[3] | 0x20) { + case 'g': + switch(string[4] | 0x20) { + case 'i': + switch(string[5] | 0x20) { + case 'n': + switch(string[6] | 0x20) { + case 'a': + switch(string[7] | 0x20) { + case 'l': + switch(string[8]) { + case '-': + switch(string[9] | 0x20) { + case 'm': + switch(string[10] | 0x20) { + case 'a': + switch(string[11] | 0x20) { + case 'i': + switch(string[12] | 0x20) { + case 'n': + switch(string[13] | 0x20) { + case 't': + switch(string[14] | 0x20) { + case 'a': + switch(string[15] | 0x20) { + case 'i': + switch(string[16] | 0x20) { + case 'n': + switch(string[17] | 0x20) { + case 'e': + switch(string[18] | 0x20) { + case 'r': + return pkgTagSection::Key::Original_Maintainer; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash20(const char *string) +{ + switch(string[0] | 0x20) { + case 'b': + switch(string[1] | 0x20) { + case 'u': + switch(string[2] | 0x20) { + case 'i': + switch(string[3] | 0x20) { + case 'l': + switch(string[4] | 0x20) { + case 'd': + switch(string[5]) { + case '-': + switch(string[6] | 0x20) { + case 'c': + switch(string[7] | 0x20) { + case 'o': + switch(string[8] | 0x20) { + case 'n': + switch(string[9] | 0x20) { + case 'f': + switch(string[10] | 0x20) { + case 'l': + switch(string[11] | 0x20) { + case 'i': + switch(string[12] | 0x20) { + case 'c': + switch(string[13] | 0x20) { + case 't': + switch(string[14] | 0x20) { + case 's': + switch(string[15]) { + case '-': + switch(string[16] | 0x20) { + case 'a': + switch(string[17] | 0x20) { + case 'r': + switch(string[18] | 0x20) { + case 'c': + switch(string[19] | 0x20) { + case 'h': + return pkgTagSection::Key::Build_Conflicts_Arch; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +static enum pkgTagSection::Key pkgTagHash21(const char *string) +{ + switch(string[0] | 0x20) { + case 'b': + switch(string[1] | 0x20) { + case 'u': + switch(string[2] | 0x20) { + case 'i': + switch(string[3] | 0x20) { + case 'l': + switch(string[4] | 0x20) { + case 'd': + switch(string[5]) { + case '-': + switch(string[6] | 0x20) { + case 'c': + switch(string[7] | 0x20) { + case 'o': + switch(string[8] | 0x20) { + case 'n': + switch(string[9] | 0x20) { + case 'f': + switch(string[10] | 0x20) { + case 'l': + switch(string[11] | 0x20) { + case 'i': + switch(string[12] | 0x20) { + case 'c': + switch(string[13] | 0x20) { + case 't': + switch(string[14] | 0x20) { + case 's': + switch(string[15]) { + case '-': + switch(string[16] | 0x20) { + case 'i': + switch(string[17] | 0x20) { + case 'n': + switch(string[18] | 0x20) { + case 'd': + switch(string[19] | 0x20) { + case 'e': + switch(string[20] | 0x20) { + case 'p': + return pkgTagSection::Key::Build_Conflicts_Indep; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return pkgTagSection::Key::Unknown; +} +#endif /* TRIE_HASH_MULTI_BYTE */ + enum pkgTagSection::Key pkgTagHash(const char *string, size_t length) +{ + switch (length) { + case 3: + return pkgTagHash3(string); + case 4: + return pkgTagHash4(string); + case 5: + return pkgTagHash5(string); + case 6: + return pkgTagHash6(string); + case 7: + return pkgTagHash7(string); + case 8: + return pkgTagHash8(string); + case 9: + return pkgTagHash9(string); + case 10: + return pkgTagHash10(string); + case 11: + return pkgTagHash11(string); + case 12: + return pkgTagHash12(string); + case 13: + return pkgTagHash13(string); + case 14: + return pkgTagHash14(string); + case 15: + return pkgTagHash15(string); + case 16: + return pkgTagHash16(string); + case 17: + return pkgTagHash17(string); + case 18: + return pkgTagHash18(string); + case 19: + return pkgTagHash19(string); + case 20: + return pkgTagHash20(string); + case 21: + return pkgTagHash21(string); + default: + return pkgTagSection::Key::Unknown; + } +} diff --git a/apt-tag/apt-pkg/tagfile-keys.h b/apt-tag/apt-pkg/tagfile-keys.h new file mode 100644 index 0000000..cfd08d5 --- /dev/null +++ b/apt-tag/apt-pkg/tagfile-keys.h @@ -0,0 +1,92 @@ +#ifndef TRIE_HASH_pkgTagHash +#define TRIE_HASH_pkgTagHash +#include +#include +#include +enum class pkgTagSection::Key { + Architecture = 0, + Binary = 1, + Breaks = 2, + Bugs = 3, + Build_Conflicts = 4, + Build_Conflicts_Arch = 5, + Build_Conflicts_Indep = 6, + Build_Depends = 7, + Build_Depends_Arch = 8, + Build_Depends_Indep = 9, + Built_For_Profiles = 10, + Built_Using = 11, + Checksums_Md5 = 12, + Checksums_Sha1 = 13, + Checksums_Sha256 = 14, + Checksums_Sha512 = 15, + Class = 16, + Conffiles = 17, + Config_Version = 18, + Conflicts = 19, + Depends = 20, + Description = 21, + Description_md5 = 22, + Directory = 23, + Dm_Upload_Allowed = 24, + Enhances = 25, + Essential = 26, + Files = 28, + Filename = 27, + Format = 29, + Homepage = 30, + Important = 31, + Installed_Size = 32, + Installer_Menu_Item = 33, + Kernel_Version = 34, + MD5sum = 36, + MSDOS_Filename = 37, + Maintainer = 35, + Multi_Arch = 38, + Optional = 39, + Origin = 40, + Original_Maintainer = 41, + Package = 42, + Package_List = 43, + Package_Revision = 45, + Package_Type = 46, + Package__Revision = 44, + Pre_Depends = 47, + Priority = 48, + Provides = 49, + Recommended = 50, + Recommends = 51, + Replaces = 52, + Revision = 53, + SHA1 = 55, + SHA256 = 56, + SHA512 = 57, + Section = 54, + Size = 58, + Source = 59, + Standards_Version = 60, + Status = 61, + Subarchitecture = 62, + Suggests = 63, + Tag = 64, + Task = 65, + Testsuite = 66, + Testsuite_Triggers = 67, + Triggers_Awaited = 68, + Triggers_Pending = 69, + Uploaders = 70, + Vcs_Bzr = 74, + Vcs_Cvs = 75, + Vcs_Git = 77, + Vcs_Hg = 78, + Vcs_Mtn = 79, + Vcs_Svn = 80, + Vcs_Arch = 71, + Vcs_Browse = 72, + Vcs_Browser = 73, + Vcs_Darcs = 76, + Version = 81, + Unknown = -1, +}; + enum pkgTagSection::Key pkgTagHash(const char *string, size_t length); +#endif /* TRIE_HASH_pkgTagHash */ diff --git a/apt.h b/apt.h new file mode 100644 index 0000000..c00968c --- /dev/null +++ b/apt.h @@ -0,0 +1,30 @@ +#ifndef APT_H +#define APT_H + +#include + +template +Type_ *memrchr(Type_ *data, int value, int size) { + for (int i = 0; i != size; ++i) + if (data[size - i - 1] == value) + return data + size - i - 1; + return 0; +} + +template +static Type_ *strchrnul(Type_ *s, int c) { + while (*s != c && *s != '\0') + ++s; + return s; +} + +#define faccessat(arg0, arg1, arg2, arg3) \ + access(arg1, arg2) + +#if 0 +#include +static unsigned nonce(0); +#define _trace() syslog(LOG_ERR, "_trace():%s[%u] #%u\n", __FILE__, __LINE__, ++nonce) +#endif + +#endif//APT_H diff --git a/cydia.control b/cydia.control index a83995e..c8bfbbe 100644 --- a/cydia.control +++ b/cydia.control @@ -5,9 +5,9 @@ Maintainer: Jay Freeman (saurik) Architecture: iphoneos-arm Version: Replaces: bigboss, bigbossbetarepo, com.sosiphone.addcydia, cydia-sources, ispazio.net, modmyifone, saurik, ste, yellowsn0w.com, zodttd -Depends: apt7-lib, apt7-key, cydia-lproj (>= 1.1.10), darwintools, debianutils, org.thebigboss.repo.icons, sed, shell-cmds, system-cmds, uikittools (>= 1.1.4) +Depends: apt7-lib, apt7-key, cydia-lproj (>= 1.1.10), darwintools, debianutils, dpkg (>= 1.18), org.thebigboss.repo.icons, sed, shell-cmds, system-cmds, uikittools (>= 1.1.4) Conflicts: bigboss, bigbossbetarepo, com.sosiphone.addcydia, cydia-sources, ispazio.net, modmyifone, ste, yellowsn0w.com, zodttd -Pre-Depends: debianutils +Pre-Depends: debianutils, dpkg (>= 1.14.25-8) Provides: bigbossbetarepo, cydia-sources Description: graphical iPhone front-end for APT Name: Cydia Installer diff --git a/fdstream.hpp b/fdstream.hpp new file mode 100644 index 0000000..585e03d --- /dev/null +++ b/fdstream.hpp @@ -0,0 +1,184 @@ +/* The following code declares classes to read from and write to + * file descriptore or file handles. + * + * See + * http://www.josuttis.com/cppcode + * for details and the latest version. + * + * - open: + * - integrating BUFSIZ on some systems? + * - optimized reading of multiple characters + * - stream for reading AND writing + * - i18n + * + * (C) Copyright Nicolai M. Josuttis 2001. + * Permission to copy, use, modify, sell and distribute this software + * is granted provided this copyright notice appears in all copies. + * This software is provided "as is" without express or implied + * warranty, and with no claim as to its suitability for any purpose. + * + * Version: Jul 28, 2002 + * History: + * Jul 28, 2002: bugfix memcpy() => memmove() + * fdinbuf::underflow(): cast for return statements + * Aug 05, 2001: first public version + */ +#ifndef BOOST_FDSTREAM_HPP +#define BOOST_FDSTREAM_HPP + +#include +#include +#include +// for EOF: +#include +// for memmove(): +#include + + +// low-level read and write functions +#ifdef _MSC_VER +# include +#else +# include +//extern "C" { +// int write (int fd, const char* buf, int num); +// int read (int fd, char* buf, int num); +//} +#endif + + +// BEGIN namespace BOOST +namespace boost { + + +/************************************************************ + * fdostream + * - a stream that writes on a file descriptor + ************************************************************/ + + +class fdoutbuf : public std::streambuf { + protected: + int fd; // file descriptor + public: + // constructor + fdoutbuf (int _fd) : fd(_fd) { + } + protected: + // write one character + virtual int_type overflow (int_type c) { + if (c != EOF) { + char z = c; + if (write (fd, &z, 1) != 1) { + return EOF; + } + } + return c; + } + // write multiple characters + virtual + std::streamsize xsputn (const char* s, + std::streamsize num) { + return write(fd,s,num); + } +}; + +class fdostream : public std::ostream { + protected: + fdoutbuf buf; + public: + fdostream (int fd) : std::ostream(0), buf(fd) { + rdbuf(&buf); + } +}; + + +/************************************************************ + * fdistream + * - a stream that reads on a file descriptor + ************************************************************/ + +class fdinbuf : public std::streambuf { + protected: + int fd; // file descriptor + protected: + /* data buffer: + * - at most, pbSize characters in putback area plus + * - at most, bufSize characters in ordinary read buffer + */ + static const int pbSize = 4; // size of putback area + static const int bufSize = 1024; // size of the data buffer + char buffer[bufSize+pbSize]; // data buffer + + public: + /* constructor + * - initialize file descriptor + * - initialize empty data buffer + * - no putback area + * => force underflow() + */ + fdinbuf (int _fd) : fd(_fd) { + setg (buffer+pbSize, // beginning of putback area + buffer+pbSize, // read position + buffer+pbSize); // end position + } + + protected: + // insert new characters into the buffer + virtual int_type underflow () { +#ifndef _MSC_VER + using std::memmove; +#endif + + // is read position before end of buffer? + if (gptr() < egptr()) { + return traits_type::to_int_type(*gptr()); + } + + /* process size of putback area + * - use number of characters read + * - but at most size of putback area + */ + int numPutback; + numPutback = gptr() - eback(); + if (numPutback > pbSize) { + numPutback = pbSize; + } + + /* copy up to pbSize characters previously read into + * the putback area + */ + memmove (buffer+(pbSize-numPutback), gptr()-numPutback, + numPutback); + + // read at most bufSize new characters + int num; + num = read (fd, buffer+pbSize, bufSize); + if (num <= 0) { + // ERROR or EOF + return EOF; + } + + // reset buffer pointers + setg (buffer+(pbSize-numPutback), // beginning of putback area + buffer+pbSize, // read position + buffer+pbSize+num); // end of buffer + + // return next character + return traits_type::to_int_type(*gptr()); + } +}; + +class fdistream : public std::istream { + protected: + fdinbuf buf; + public: + fdistream (int fd) : std::istream(0), buf(fd) { + rdbuf(&buf); + } +}; + + +} // END namespace boost + +#endif /*BOOST_FDSTREAM_HPP*/ diff --git a/make.sh b/make.sh new file mode 100755 index 0000000..0b27981 --- /dev/null +++ b/make.sh @@ -0,0 +1,2 @@ +#!/bin/bash +DEVELOPER_DIR=/Applications/Xcode-5.1.1.app make "$@" diff --git a/makefile b/makefile index 496c1ad..d11d85c 100644 --- a/makefile +++ b/makefile @@ -1,32 +1,56 @@ -gxx := $(shell xcrun --sdk iphoneos -f g++) -sdk := $(shell xcodebuild -sdk iphoneos -version Path) +.DELETE_ON_ERROR: +.SECONDARY: + +dpkg := dpkg-deb -Zlzma +version := $(shell ./version.sh) -flags := +flag := +plus := link := libs := -dpkg := dpkg-deb -Zlzma +gxx := $(shell xcrun --sdk iphoneos -f g++) +cycc := $(gxx) + +sdk := $(shell xcodebuild -sdk iphoneos -version Path) +cycc += -isysroot $(sdk) +cycc += -idirafter /usr/include +cycc += -F$(sdk)/System/Library/PrivateFrameworks + +cycc += -arch arm64 +cycc += -Xarch_arm64 -miphoneos-version-min=7.0 + +cycc += -fmessage-length=0 +cycc += -gfull -O2 +cycc += -fvisibility=hidden -flags += -F$(sdk)/System/Library/PrivateFrameworks -flags += -I. -isystem sysroot/usr/include -flags += -fmessage-length=0 -flags += -g0 -O2 -flags += -fvisibility=hidden +link += -Wl,-dead_strip +link += -Wl,-no_dead_strip_inits_and_terms +link += -Wl,-s -flags += -idirafter icu/icuSources/common -flags += -idirafter icu/icuSources/i18n +flag += -Xarch_arm64 -Iapt +flag += -Xarch_arm64 -Iapt-contrib +flag += -Xarch_arm64 -Iapt-deb +flag += -Xarch_arm64 -Iapt-extra +flag += -Xarch_arm64 -Iapt-tag -flags += -Wall +flag += -I. +flag += -isystem sysroot/usr/include -flags += -Wno-unknown-warning-option -flags += -Wno-logical-op-parentheses -flags += -Wno-dangling-else -flags += -Wno-shift-op-parentheses -flags += -Wno-deprecated-declarations +flag += -idirafter icu/icuSources/common +flag += -idirafter icu/icuSources/i18n -xflags := -xflags += -fobjc-call-cxx-cdtors -xflags += -fvisibility-inlines-hidden +flag += -Wall +flag += -Wno-dangling-else +flag += -Wno-deprecated-declarations +flag += -Wno-objc-protocol-method-implementation +flag += -Wno-logical-op-parentheses +flag += -Wno-shift-op-parentheses +flag += -Wno-unknown-pragmas +flag += -Wno-unknown-warning-option + +plus += -fobjc-call-cxx-cdtors +plus += -fvisibility-inlines-hidden link += -Lsysroot/usr/lib link += -multiply_defined suppress @@ -42,20 +66,14 @@ libs += -framework SystemConfiguration libs += -framework WebCore libs += -framework WebKit -libs += -lapt-pkg +libs += -Xarch_armv6 -Wl,-lapt-pkg +libs += -Xarch_arm64 -Wl,Objects/libapt64.a libs += -licucore uikit := uikit += -framework UIKit -version := $(shell ./version.sh) - -cycc = $(gxx) -arch armv6 -o $@ -miphoneos-version-min=2.0 -isysroot $(sdk) -idirafter /usr/include -F{sysroot,}/Library/Frameworks - -cycc += -marm # @synchronized -cycc += -mcpu=arm1176jzf-s -cycc += -mllvm -arm-reserve-r9 -link += -lgcc_s.1 +link += -Wl,-segalign,4000 dirs := Menes CyteKit Cydia SDURLCache @@ -74,6 +92,37 @@ object := $(object:.m=.o) object := $(object:.mm=.o) object := $(object:%=Objects/%) +libapt := +libapt += $(wildcard apt/apt-pkg/*.cc) +libapt += $(wildcard apt/apt-pkg/deb/*.cc) +libapt += $(wildcard apt/apt-pkg/contrib/*.cc) +libapt += apt-tag/apt-pkg/tagfile-keys.cc +libapt += apt/methods/store.cc +libapt := $(filter-out %/srvrec.cc,$(libapt)) +libapt := $(patsubst %.cc,Objects/%.o,$(libapt)) + +link += -Xarch_arm64 -Wl,-lz,-liconv + +flag += -DAPT_PKG_EXPOSE_STRING_VIEW +flag += -Dsighandler_t=sig_t + +aptc := $(cycc) $(flag) +aptc += -include apt.h +aptc += -Wno-deprecated-register +aptc += -Wno-unused-private-field +aptc += -Wno-unused-variable + +cycc += -arch armv6 +cycc += -Xarch_armv6 -miphoneos-version-min=2.0 +flag += -Xarch_armv6 -marm # @synchronized +flag += -Xarch_armv6 -mcpu=arm1176jzf-s +flag += -mllvm -arm-reserve-r9 +link += -Xarch_armv6 -Wl,-lgcc_s.1 + +plus += -std=c++11 +#plus += -Wp,-stdlib=libc++ +#link += libcxx/lib/libc++.a + images := $(shell find MobileCydia.app/ -type f -name '*.png') images := $(images:%=Images/%) @@ -85,25 +134,30 @@ clean: rm -f MobileCydia postinst rm -rf Objects/ Images/ +Objects/%.o: %.cc $(header) apt.h apt-extra/*.h + @mkdir -p $(dir $@) + @echo "[cycc] $<" + @$(aptc) $(plus) -c -o $@ $< -Dmain=main_$(basename $(notdir $@)) + Objects/%.o: %.c $(header) @mkdir -p $(dir $@) @echo "[cycc] $<" - @$(cycc) -c -x c $< + @$(cycc) -c -o $@ -x c $< $(flag) Objects/%.o: %.m $(header) @mkdir -p $(dir $@) @echo "[cycc] $<" - @$(cycc) -c $< $(flags) + @$(cycc) -c -o $@ $< $(flag) Objects/%.o: %.cpp $(header) @mkdir -p $(dir $@) @echo "[cycc] $<" - @$(cycc) -std=c++11 -c $< $(flags) $(xflags) + @$(cycc) $(plus) -c -o $@ $< $(flag) Objects/%.o: %.mm $(header) @mkdir -p $(dir $@) @echo "[cycc] $<" - @$(cycc) -std=c++11 -c $< $(flags) $(xflags) + @$(cycc) $(plus) -c -o $@ $< $(flag) Objects/Version.o: Version.h @@ -117,9 +171,13 @@ sysroot: sysroot.sh @echo 1>&2 @exit 1 -MobileCydia: sysroot $(object) entitlements.xml - @echo "[link] $(object:Objects/%=%)" - @$(cycc) $(filter %.o,$^) $(flags) $(link) $(libs) $(uikit) -Wl,-sdk_version,8.0 +Objects/libapt64.a: $(libapt) + @echo "[arch] $@" + @ar -rc $@ $^ + +MobileCydia: sysroot $(object) entitlements.xml Objects/libapt64.a + @echo "[link] $@" + @$(cycc) -o $@ $(filter %.o,$^) $(link) $(libs) $(uikit) -Wl,-sdk_version,8.0 @mkdir -p bins @cp -a $@ bins/$@-$(version) @echo "[strp] $@" @@ -130,19 +188,19 @@ MobileCydia: sysroot $(object) entitlements.xml @ldid -T0 -Sentitlements.xml $@ || { rm -f $@ && false; } cfversion: cfversion.mm - $(cycc) $(filter %.mm,$^) $(flags) $(link) -framework CoreFoundation + $(cycc) -o $@ $(filter %.mm,$^) $(flag) $(link) -framework CoreFoundation @ldid -T0 -S $@ setnsfpn: setnsfpn.cpp - $(cycc) $(filter %.cpp,$^) $(flags) $(link) + $(cycc) -o $@ $(filter %.cpp,$^) $(flag) $(link) @ldid -T0 -S $@ cydo: cydo.cpp - $(cycc) -std=c++11 $(filter %.cpp,$^) $(flags) $(link) -Wno-deprecated-writable-strings + $(cycc) $(plus) -o $@ $(filter %.cpp,$^) $(flag) $(link) -Wno-deprecated-writable-strings @ldid -T0 -S $@ postinst: postinst.mm CyteKit/stringWithUTF8Bytes.mm CyteKit/stringWithUTF8Bytes.h CyteKit/UCPlatform.h - $(cycc) -std=c++11 $(filter %.mm,$^) $(flags) $(link) -framework CoreFoundation -framework Foundation -framework UIKit + $(cycc) $(plus) -o $@ $(filter %.mm,$^) $(flag) $(link) -framework CoreFoundation -framework Foundation -framework UIKit @ldid -T0 -S $@ debs/cydia_$(version)_iphoneos-arm.deb: MobileCydia preinst postinst cfversion setnsfpn cydo $(images) $(shell find MobileCydia.app) cydia.control Library/firmware.sh Library/move.sh Library/startup @@ -160,7 +218,6 @@ debs/cydia_$(version)_iphoneos-arm.deb: MobileCydia preinst postinst cfversion s cp -a setnsfpn _/usr/libexec/cydia cp -a cydo _/usr/libexec/cydia - sudo chmod 6755 _/usr/libexec/cydia/cydo mkdir -p _/Library cp -a LaunchDaemons _/Library/LaunchDaemons @@ -169,6 +226,7 @@ debs/cydia_$(version)_iphoneos-arm.deb: MobileCydia preinst postinst cfversion s cp -a MobileCydia.app _/Applications/Cydia.app rm -rf _/Applications/Cydia.app/*.lproj cp -a MobileCydia _/Applications/Cydia.app/Cydia + ln -s Cydia _/Applications/Cydia.app/store cd MobileCydia.app && find . -name '*.png' -exec cp -af ../Images/MobileCydia.app/{} ../_/Applications/Cydia.app/{} ';' @@ -184,6 +242,7 @@ debs/cydia_$(version)_iphoneos-arm.deb: MobileCydia preinst postinst cfversion s sudo chown -R 0 _ sudo chgrp -R 0 _ + sudo chmod 6755 _/usr/libexec/cydia/cydo mkdir -p debs ln -sf debs/cydia_$(version)_iphoneos-arm.deb Cydia.deb diff --git a/uikit.sh b/uikit.sh index 903e1ba..be7d701 100755 --- a/uikit.sh +++ b/uikit.sh @@ -1,2 +1,2 @@ #!/bin/bash -LANG=C exec /sw/bin/sed -i -e 's@\(\x0C\x00\x00\x00\x4C\x00\x00\x00\x18\x00\x00\x00\x02\x00\x00\x00\)\x00...\(\x00\x00\x01\x00/System/Library/Frameworks/UIKit.framework/UIKit\x00\x00\x00\x00\)@\1\x00\x00\xF6\x0C\2@' "$1" +LANG=C exec /sw/bin/sed -i -e 's@\(\x0C\x00\x00\x00\x4C\x00\x00\x00\x18\x00\x00\x00\x02\x00\x00\x00\)\x00...\(\x00\x00\x01\x00/System/Library/Frameworks/UIKit.framework/UIKit\x00\x00\x00\x00\)@\1\x00\x00\xF6\x0C\2@g' "$1" -- cgit v1.2.3