[busybox] Use unsigned longs for bitwise operations in awk, thanks benoar.
[openwrt.git] / package / busybox / patches / 523-conffiles_fix.patch
index 8206faf..09c9359 100644 (file)
@@ -1,21 +1,59 @@
-Index: busybox-1.8.2/archival/libipkg/pkg.c
-===================================================================
---- busybox-1.8.2.orig/archival/libipkg/pkg.c  2008-01-02 21:53:12.616453611 +0100
-+++ busybox-1.8.2/archival/libipkg/pkg.c       2008-01-02 21:54:41.462489150 +0100
-@@ -587,13 +587,14 @@
+--- a/archival/libipkg/pkg.c
++++ b/archival/libipkg/pkg.c
+@@ -575,25 +575,28 @@
+                   return temp;
+              }
+-               len = 14 ;
++               len = sizeof("Conffiles:") ;
+              for (iter = pkg->conffiles.head; iter; iter = iter->next) {
+                   if (iter->data->name && iter->data->value) {
+-                       len = len + (strlen(iter->data->name)+strlen(iter->data->value)+5);
+-                  }
++                        /* " <filename> <md5hash>"  */
++                      len += 1+strlen(iter->data->name)+1+strlen(iter->data->value); 
++                    }
+              }
++               len +=2; /* "\n\0" */
+                temp = (char *)realloc(temp,len);
+                if ( temp == NULL ){
+                 fprintf(stderr, "%s: out of memory\n", __FUNCTION__);
                  return NULL;
                 }
                 temp[0]='\0';
 -               strncpy(temp, "Conffiles:\n", 12);
-+               strncpy(temp, "Conffiles: ", 12);
++             strcpy(temp, "Conffiles:");
               for (iter = pkg->conffiles.head; iter; iter = iter->next) {
                    if (iter->data->name && iter->data->value) {
 -                         snprintf(line_str, LINE_LEN, "%s %s\n", iter->data->name, iter->data->value);
-+                         snprintf(line_str, LINE_LEN, "%s %s", iter->data->name, iter->data->value);
++                         snprintf(line_str, LINE_LEN, " %s %s", iter->data->name, iter->data->value);
                           strncat(temp, line_str, strlen(line_str));           
                    }
               }
-+             strcat(temp, "\n");
++               strcat(temp, "\n");
          } else if (strcasecmp(field, "Conflicts") == 0) {
               int i;
  
+--- a/archival/libipkg/pkg_parse.c
++++ b/archival/libipkg/pkg_parse.c
+@@ -88,17 +88,14 @@
+     if(!strncmp(raw, "Conffiles:", 10))
+       raw += strlen("Conffiles:");
++    while(*raw && isspace(*raw)) raw++;
+     while(*raw && (sscanf(raw, "%s%s", file_name, md5sum) == 2)){
+       conffile_list_append(&pkg->conffiles, file_name, md5sum);
+       /*      fprintf(stderr, "%s %s ", file_name, md5sum);*/
+-      while (*raw && isspace(*raw)) {
+-          raw++;
+-      }
+       raw += strlen(file_name);
+-      while (*raw && isspace(*raw)) {
+-          raw++;
+-      }
++      while(*raw && isspace(*raw)) raw++;
+       raw += strlen(md5sum);
++      while(*raw && isspace(*raw)) raw++;
+     }
+ }    
This page took 0.029529 seconds and 4 git commands to generate.