summaryrefslogtreecommitdiff
path: root/packages/ipkg/files/1-pkg-parse--Optimize-inefficient-parsing.patch
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
committerDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
commit709c4d66e0b107ca606941b988bad717c0b45d9b (patch)
tree37ee08b1eb308f3b2b6426d5793545c38396b838 /packages/ipkg/files/1-pkg-parse--Optimize-inefficient-parsing.patch
parentfa6cd5a3b993f16c27de4ff82b42684516d433ba (diff)
rename packages/ to recipes/ per earlier agreement
See links below for more details: http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326 http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816 Signed-off-by: Denys Dmytriyenko <denis@denix.org> Acked-by: Mike Westerhof <mwester@dls.net> Acked-by: Philip Balister <philip@balister.org> Acked-by: Khem Raj <raj.khem@gmail.com> Acked-by: Marcin Juszkiewicz <hrw@openembedded.org> Acked-by: Koen Kooi <koen@openembedded.org> Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'packages/ipkg/files/1-pkg-parse--Optimize-inefficient-parsing.patch')
-rw-r--r--packages/ipkg/files/1-pkg-parse--Optimize-inefficient-parsing.patch227
1 files changed, 0 insertions, 227 deletions
diff --git a/packages/ipkg/files/1-pkg-parse--Optimize-inefficient-parsing.patch b/packages/ipkg/files/1-pkg-parse--Optimize-inefficient-parsing.patch
deleted file mode 100644
index e7632b11d1..0000000000
--- a/packages/ipkg/files/1-pkg-parse--Optimize-inefficient-parsing.patch
+++ /dev/null
@@ -1,227 +0,0 @@
-# HG changeset patch
-# User pfalcon@localhost
-# Date 1178334771 0
-# Node ID e4c99830ba0d55813e1774bd6d41039ca640d6a6
-# Parent d324eba24e79a0a86df7978f0511e4632a2732c7
-pkg_parse: Optimize inefficient parsing.
-
-Instead of expensively probing all fields in row, dispatch based on the
-first letter of the field. Tests show ~12 times reduction in number of calls
-to low-level parsing functions.
-
-diff -r d324eba24e79 -r e4c99830ba0d pkg_parse.c
---- a/pkg_parse.c Fri May 04 23:22:33 2007 +0000
-+++ b/pkg_parse.c Sat May 05 03:12:51 2007 +0000
-@@ -241,87 +241,116 @@ int pkg_parse_raw(pkg_t *pkg, char ***ra
-
- for (lines = *raw; *lines; lines++) {
- /* fprintf(stderr, "PARSING %s\n", *lines);*/
-- if(isGenericFieldType("Package:", *lines))
-- pkg->name = parseGenericFieldType("Package", *lines);
-- else if(isGenericFieldType("Architecture:", *lines))
-- pkg->architecture = parseGenericFieldType("Architecture", *lines);
-- else if(isGenericFieldType("Filename:", *lines))
-- pkg->filename = parseGenericFieldType("Filename", *lines);
-- else if(isGenericFieldType("Section:", *lines))
-- pkg->section = parseGenericFieldType("Section", *lines);
-- else if(isGenericFieldType("MD5sum:", *lines))
-- pkg->md5sum = parseGenericFieldType("MD5sum", *lines);
-- /* The old ipkg wrote out status files with the wrong case for MD5sum,
-- let's parse it either way */
-- else if(isGenericFieldType("MD5Sum:", *lines))
-- pkg->md5sum = parseGenericFieldType("MD5Sum", *lines);
-- else if(isGenericFieldType("Size:", *lines))
-- pkg->size = parseGenericFieldType("Size", *lines);
-- else if(isGenericFieldType("Source:", *lines))
-- pkg->source = parseGenericFieldType("Source", *lines);
-- else if(isGenericFieldType("Installed-Size:", *lines))
-- pkg->installed_size = parseGenericFieldType("Installed-Size", *lines);
-- else if(isGenericFieldType("Installed-Time:", *lines)) {
-- char *time_str = parseGenericFieldType("Installed-Time", *lines);
-- pkg->installed_time = strtoul(time_str, NULL, 0);
-- } else if(isGenericFieldType("Priority:", *lines))
-- pkg->priority = parseGenericFieldType("Priority", *lines);
-- else if(isGenericFieldType("Essential:", *lines)) {
-- char *essential_value;
-- essential_value = parseGenericFieldType("Essential", *lines);
-- if (strcmp(essential_value, "yes") == 0) {
-- pkg->essential = 1;
-- }
-- free(essential_value);
-- }
-- else if(isGenericFieldType("Status", *lines))
-- parseStatus(pkg, *lines);
-- else if(isGenericFieldType("Version", *lines))
-- parseVersion(pkg, *lines);
-- else if(isGenericFieldType("Maintainer", *lines))
-- pkg->maintainer = parseGenericFieldType("Maintainer", *lines);
-- else if(isGenericFieldType("Conffiles", *lines)){
-- parseConffiles(pkg, *lines);
-- reading_conffiles = 1;
-- }
-- else if(isGenericFieldType("Description", *lines)) {
-- pkg->description = parseGenericFieldType("Description", *lines);
-- reading_conffiles = 0;
-- reading_description = 1;
-- }
--
-- else if(isGenericFieldType("Provides", *lines)){
-+ switch (**lines) {
-+ case 'P':
-+ if(isGenericFieldType("Package:", *lines))
-+ pkg->name = parseGenericFieldType("Package", *lines);
-+ else if(isGenericFieldType("Priority:", *lines))
-+ pkg->priority = parseGenericFieldType("Priority", *lines);
-+ else if(isGenericFieldType("Provides", *lines)){
- /* Here we add the internal_use to align the off by one problem between provides_str and provides */
-- provide = (char * ) malloc(strlen(*lines)+ 35 ); /* Preparing the space for the new ipkg_internal_use_only */
-- if ( alterProvidesLine(*lines,provide) ){
-- return EINVAL;
-- }
-- pkg->provides_str = parseDependsString( provide, &pkg->provides_count);
-+ provide = (char * ) malloc(strlen(*lines)+ 35 ); /* Preparing the space for the new ipkg_internal_use_only */
-+ if ( alterProvidesLine(*lines,provide) ){
-+ return EINVAL;
-+ }
-+ pkg->provides_str = parseDependsString( provide, &pkg->provides_count);
- /* Let's try to hack a bit here.
- The idea is that if a package has no Provides, we would add one generic, to permit the check of dependencies
- in alot of other places. We will remove it before writing down the status database */
-- pkg_false_provides=0;
-- free(provide);
-- }
--
-- else if(isGenericFieldType("Depends", *lines))
-- pkg->depends_str = parseDependsString(*lines, &pkg->depends_count);
-- else if(isGenericFieldType("Pre-Depends", *lines))
-- pkg->pre_depends_str = parseDependsString(*lines, &pkg->pre_depends_count);
-- else if(isGenericFieldType("Recommends", *lines))
-- pkg->recommends_str = parseDependsString(*lines, &pkg->recommends_count);
-- else if(isGenericFieldType("Suggests", *lines))
-- pkg->suggests_str = parseDependsString(*lines, &pkg->suggests_count);
-- /* Abhaya: support for conflicts */
-- else if(isGenericFieldType("Conflicts", *lines))
-- pkg->conflicts_str = parseDependsString(*lines, &pkg->conflicts_count);
-- else if(isGenericFieldType("Replaces", *lines))
-- pkg->replaces_str = parseDependsString(*lines, &pkg->replaces_count);
-- else if(line_is_blank(*lines)) {
-- lines++;
-- break;
-- }
-- else if(**lines == ' '){
-+ pkg_false_provides=0;
-+ free(provide);
-+ }
-+ else if(isGenericFieldType("Pre-Depends", *lines))
-+ pkg->pre_depends_str = parseDependsString(*lines, &pkg->pre_depends_count);
-+ break;
-+
-+ case 'A':
-+ if(isGenericFieldType("Architecture:", *lines))
-+ pkg->architecture = parseGenericFieldType("Architecture", *lines);
-+ break;
-+
-+ case 'F':
-+ if(isGenericFieldType("Filename:", *lines))
-+ pkg->filename = parseGenericFieldType("Filename", *lines);
-+ break;
-+
-+ case 'S':
-+ if(isGenericFieldType("Section:", *lines))
-+ pkg->section = parseGenericFieldType("Section", *lines);
-+ else if(isGenericFieldType("Size:", *lines))
-+ pkg->size = parseGenericFieldType("Size", *lines);
-+ else if(isGenericFieldType("Source:", *lines))
-+ pkg->source = parseGenericFieldType("Source", *lines);
-+ else if(isGenericFieldType("Status", *lines))
-+ parseStatus(pkg, *lines);
-+ else if(isGenericFieldType("Suggests", *lines))
-+ pkg->suggests_str = parseDependsString(*lines, &pkg->suggests_count);
-+ break;
-+
-+ case 'M':
-+ if(isGenericFieldType("MD5sum:", *lines))
-+ pkg->md5sum = parseGenericFieldType("MD5sum", *lines);
-+ /* The old ipkg wrote out status files with the wrong case for MD5sum,
-+ let's parse it either way */
-+ else if(isGenericFieldType("MD5Sum:", *lines))
-+ pkg->md5sum = parseGenericFieldType("MD5Sum", *lines);
-+ else if(isGenericFieldType("Maintainer", *lines))
-+ pkg->maintainer = parseGenericFieldType("Maintainer", *lines);
-+ break;
-+
-+ case 'I':
-+ if(isGenericFieldType("Installed-Size:", *lines))
-+ pkg->installed_size = parseGenericFieldType("Installed-Size", *lines);
-+ else if(isGenericFieldType("Installed-Time:", *lines)) {
-+ char *time_str = parseGenericFieldType("Installed-Time", *lines);
-+ pkg->installed_time = strtoul(time_str, NULL, 0);
-+ }
-+ break;
-+
-+ case 'E':
-+ if(isGenericFieldType("Essential:", *lines)) {
-+ char *essential_value;
-+ essential_value = parseGenericFieldType("Essential", *lines);
-+ if (strcmp(essential_value, "yes") == 0) {
-+ pkg->essential = 1;
-+ }
-+ free(essential_value);
-+ }
-+ break;
-+
-+ case 'V':
-+ if(isGenericFieldType("Version", *lines))
-+ parseVersion(pkg, *lines);
-+ break;
-+
-+ case 'C':
-+ if(isGenericFieldType("Conffiles", *lines)){
-+ parseConffiles(pkg, *lines);
-+ reading_conffiles = 1;
-+ }
-+ else if(isGenericFieldType("Conflicts", *lines))
-+ pkg->conflicts_str = parseDependsString(*lines, &pkg->conflicts_count);
-+ break;
-+
-+ case 'D':
-+ if(isGenericFieldType("Description", *lines)) {
-+ pkg->description = parseGenericFieldType("Description", *lines);
-+ reading_conffiles = 0;
-+ reading_description = 1;
-+ }
-+ else if(isGenericFieldType("Depends", *lines))
-+ pkg->depends_str = parseDependsString(*lines, &pkg->depends_count);
-+ break;
-+
-+ case 'R':
-+ if(isGenericFieldType("Recommends", *lines))
-+ pkg->recommends_str = parseDependsString(*lines, &pkg->recommends_count);
-+ else if(isGenericFieldType("Replaces", *lines))
-+ pkg->replaces_str = parseDependsString(*lines, &pkg->replaces_count);
-+
-+ break;
-+
-+ case ' ':
- if(reading_description) {
- /* we already know it's not blank, so the rest of description */
- pkg->description = realloc(pkg->description,
-@@ -332,8 +361,18 @@ int pkg_parse_raw(pkg_t *pkg, char ***ra
- }
- else if(reading_conffiles)
- parseConffiles(pkg, *lines);
-+
-+ break;
-+
-+ default:
-+ if(line_is_blank(*lines)) {
-+ lines++;
-+ goto out;
-+ }
- }
- }
-+out:;
-+
- *raw = lines;
- /* If the ipk has not a Provides line, we insert our false line */
- if ( pkg_false_provides==1)