Commit a7ed91a9 authored by Peter Korsgaard's avatar Peter Korsgaard
Browse files

busybox: additional 1.14.0 fixes

parent c219988f
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
--- busybox-1.14.0/editors/awk.c	Tue Apr 14 01:43:09 2009
+++ busybox-1.14.0-awk/editors/awk.c	Mon May 18 23:49:29 2009
@@ -1571,13 +1571,14 @@
 				n++; /* we saw yet another delimiter */
 			} else {
 				pmatch[0].rm_eo = l;
-				if (s[l]) pmatch[0].rm_eo++;
+				if (s[l])
+					pmatch[0].rm_eo++;
 			}
 			memcpy(s1, s, l);
 			/* make sure we remove *all* of the separator chars */
-			while (l < pmatch[0].rm_eo) {
-				s1[l++] = '\0';
-			}
+			do {
+				s1[l] = '\0';
+			} while (++l < pmatch[0].rm_eo);
 			nextword(&s1);
 			s += pmatch[0].rm_eo;
 		} while (*s);
+90 −0
Original line number Diff line number Diff line
--- busybox-1.14.0/modutils/depmod.c	Tue Apr 14 01:42:55 2009
+++ busybox-1.14.0-depmod/modutils/depmod.c	Mon May 18 22:37:14 2009
@@ -40,26 +40,28 @@
 	ARG_r = (1<<6)  /* Compat dummy. Linux Makefile uses it */
 };
 
-static int FAST_FUNC parse_module(const char *fname, struct stat *sb,
-				  void *data, int UNUSED_PARAM depth)
+static int FAST_FUNC parse_module(const char *fname, struct stat *sb UNUSED_PARAM,
+				  void *data, int depth UNUSED_PARAM)
 {
+	char modname[MODULE_NAME_LEN];
 	module_info **first = (module_info **) data;
 	char *image, *ptr;
 	module_info *info;
-	size_t len = sb->st_size;
+	/* Arbitrary. Was sb->st_size, but that breaks .gz etc */
+	size_t len = (64*1024*1024 - 4096);
 
 	if (strrstr(fname, ".ko") == NULL)
 		return TRUE;
 
 	image = xmalloc_open_zipped_read_close(fname, &len);
-	info = xzalloc(sizeof(module_info));
+	info = xzalloc(sizeof(*info));
 
 	info->next = *first;
 	*first = info;
 
 	info->dnext = info->dprev = info;
 	info->name = xasprintf("/%s", fname);
-	info->modname = filename2modname(fname, NULL);
+	info->modname = xstrdup(filename2modname(fname, modname));
 	for (ptr = image; ptr < image + len - 10; ptr++) {
 		if (strncmp(ptr, "depends=", 8) == 0) {
 			char *u;
@@ -69,12 +71,14 @@
 				if (*u == '-')
 					*u = '_';
 			ptr += string_to_llist(ptr, &info->dependencies, ",");
-		} else if (ENABLE_FEATURE_MODUTILS_ALIAS &&
-			   strncmp(ptr, "alias=", 6) == 0) {
+		} else if (ENABLE_FEATURE_MODUTILS_ALIAS
+		 && strncmp(ptr, "alias=", 6) == 0
+		) {
 			llist_add_to(&info->aliases, xstrdup(ptr + 6));
 			ptr += strlen(ptr);
-		} else if (ENABLE_FEATURE_MODUTILS_SYMBOLS &&
-			   strncmp(ptr, "__ksymtab_", 10) == 0) {
+		} else if (ENABLE_FEATURE_MODUTILS_SYMBOLS
+		 && strncmp(ptr, "__ksymtab_", 10) == 0
+		) {
 			ptr += 10;
 			if (strncmp(ptr, "gpl", 3) == 0 ||
 			    strcmp(ptr, "strings") == 0)
@@ -199,10 +203,17 @@
 	if (!(option_mask32 & ARG_n))
 		xfreopen_write("modules.alias", stdout);
 	for (m = modules; m != NULL; m = m->next) {
+		const char *fname = bb_basename(m->name);
+		int fnlen = strchrnul(fname, '.') - fname;
 		while (m->aliases) {
-			printf("alias %s %s\n",
+			/* Last word can well be m->modname instead,
+			 * but depmod from module-init-tools 3.4
+			 * uses module basename, i.e., no s/-/_/g.
+			 * (pathname and .ko.* are still stripped)
+			 * Mimicking that... */
+			printf("alias %s %.*s\n",
 				(char*)llist_pop(&m->aliases),
-				m->modname);
+				fnlen, fname);
 		}
 	}
 #endif
@@ -210,10 +221,12 @@
 	if (!(option_mask32 & ARG_n))
 		xfreopen_write("modules.symbols", stdout);
 	for (m = modules; m != NULL; m = m->next) {
+		const char *fname = bb_basename(m->name);
+		int fnlen = strchrnul(fname, '.') - fname;
 		while (m->symbols) {
-			printf("alias symbol:%s %s\n",
+			printf("alias symbol:%s %.*s\n",
 				(char*)llist_pop(&m->symbols),
-				m->modname);
+				fnlen, fname);
 		}
 	}
 #endif
+91 −0
Original line number Diff line number Diff line
--- busybox-1.14.0/archival/gzip.c	Tue Apr 14 01:42:55 2009
+++ busybox-1.14.0-gzip/archival/gzip.c	Mon May 18 22:36:12 2009
@@ -389,19 +389,6 @@
 }
 
 /* ===========================================================================
- * Clear input and output buffers
- */
-static void clear_bufs(void)
-{
-	G1.outcnt = 0;
-#ifdef DEBUG
-	G1.insize = 0;
-#endif
-	G1.isize = 0;
-}
-
-
-/* ===========================================================================
  * Run a set of bytes through the crc shift register.  If s is a NULL
  * pointer, then initialize the crc shift register contents instead.
  * Return the current crc in either case.
@@ -2019,7 +2006,37 @@
 {
 	struct stat s;
 
-	clear_bufs();
+	/* Clear input and output buffers */
+	G1.outcnt = 0;
+#ifdef DEBUG
+	G1.insize = 0;
+#endif
+	G1.isize = 0;
+
+	/* Reinit G2.xxx */
+	memset(&G2, 0, sizeof(G2));
+	G2.l_desc.dyn_tree     = G2.dyn_ltree;
+	G2.l_desc.static_tree  = G2.static_ltree;
+	G2.l_desc.extra_bits   = extra_lbits;
+	G2.l_desc.extra_base   = LITERALS + 1;
+	G2.l_desc.elems        = L_CODES;
+	G2.l_desc.max_length   = MAX_BITS;
+	//G2.l_desc.max_code     = 0;
+	G2.d_desc.dyn_tree     = G2.dyn_dtree;
+	G2.d_desc.static_tree  = G2.static_dtree;
+	G2.d_desc.extra_bits   = extra_dbits;
+	//G2.d_desc.extra_base   = 0;
+	G2.d_desc.elems        = D_CODES;
+	G2.d_desc.max_length   = MAX_BITS;
+	//G2.d_desc.max_code     = 0;
+	G2.bl_desc.dyn_tree    = G2.bl_tree;
+	//G2.bl_desc.static_tree = NULL;
+	G2.bl_desc.extra_bits  = extra_blbits,
+	//G2.bl_desc.extra_base  = 0;
+	G2.bl_desc.elems       = BL_CODES;
+	G2.bl_desc.max_length  = MAX_BL_BITS;
+	//G2.bl_desc.max_code    = 0;
+
 	s.st_ctime = 0;
 	fstat(STDIN_FILENO, &s);
 	zip(s.st_ctime);
@@ -2064,29 +2081,6 @@
 	SET_PTR_TO_GLOBALS(xzalloc(sizeof(struct globals) + sizeof(struct globals2))
 			+ sizeof(struct globals));
 	barrier();
-	G2.l_desc.dyn_tree    = G2.dyn_ltree;
-	G2.l_desc.static_tree = G2.static_ltree;
-	G2.l_desc.extra_bits  = extra_lbits;
-	G2.l_desc.extra_base  = LITERALS + 1;
-	G2.l_desc.elems       = L_CODES;
-	G2.l_desc.max_length  = MAX_BITS;
-	//G2.l_desc.max_code    = 0;
-
-	G2.d_desc.dyn_tree    = G2.dyn_dtree;
-	G2.d_desc.static_tree = G2.static_dtree;
-	G2.d_desc.extra_bits  = extra_dbits;
-	//G2.d_desc.extra_base  = 0;
-	G2.d_desc.elems       = D_CODES;
-	G2.d_desc.max_length  = MAX_BITS;
-	//G2.d_desc.max_code    = 0;
-
-	G2.bl_desc.dyn_tree    = G2.bl_tree;
-	//G2.bl_desc.static_tree = NULL;
-	G2.bl_desc.extra_bits  = extra_blbits,
-	//G2.bl_desc.extra_base  = 0;
-	G2.bl_desc.elems       = BL_CODES;
-	G2.bl_desc.max_length  = MAX_BL_BITS;
-	//G2.bl_desc.max_code    = 0;
 
 	/* Allocate all global buffers (for DYN_ALLOC option) */
 	ALLOC(uch, G1.l_buf, INBUFSIZ);
+1 −1
Original line number Diff line number Diff line
@@ -92,7 +92,7 @@ endif


$(BUSYBOX_DIR)/busybox: $(BUSYBOX_DIR)/.config
	$(MAKE) CC=$(TARGET_CC) CROSS_COMPILE="$(TARGET_CROSS)" \
q	$(MAKE) CC=$(TARGET_CC) CROSS_COMPILE="$(TARGET_CROSS)" \
		CROSS="$(TARGET_CROSS)" PREFIX="$(TARGET_DIR)" \
		ARCH=$(KERNEL_ARCH) \
		EXTRA_CFLAGS="$(TARGET_CFLAGS)" -C $(BUSYBOX_DIR)