1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2025-04-21 12:27:27 +03:00

upgrade busybox to v1.11.1 and add current upstream fixes

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@12348 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
kaloz
2008-08-20 14:00:34 +00:00
parent e90b272ea7
commit ac2d02c3e0
58 changed files with 2195 additions and 1232 deletions

View File

@@ -1,13 +1,18 @@
Index: busybox-1.7.2/applets/Kbuild
===================================================================
--- busybox-1.7.2.orig/applets/Kbuild 2007-10-30 15:35:00.000000000 -0500
+++ busybox-1.7.2/applets/Kbuild 2007-10-30 15:35:00.000000000 -0500
@@ -20,6 +20,6 @@
HOSTCFLAGS_usage.o = -I$(srctree)/include
--- a/applets/Kbuild
+++ b/applets/Kbuild
@@ -18,13 +18,13 @@
applets/applets.o: include/usage_compressed.h include/applet_tables.h
-applets/usage: .config $(srctree)/applets/usage_compressed
+applets/usage: .config $(srctree)/applets/usage_compressed include/autoconf.h
applets/applet_tables: .config
quiet_cmd_gen_usage_compressed = GEN include/usage_compressed.h
cmd_gen_usage_compressed = $(srctree)/applets/usage_compressed include/usage_compressed.h applets
applets/applets.o: include/usage_compressed.h
-applets/usage: .config $(srctree)/applets/usage_compressed
-include/usage_compressed.h: applets/usage $(srctree)/applets/usage_compressed
+applets/usage: .config $(srctree)/applets/usage_compressed include/autoconf.h
+include/usage_compressed.h: applets/usage $(srctree)/applets/usage_compressed include/autoconf.h
$(call cmd,gen_usage_compressed)
quiet_cmd_gen_applet_tables = GEN include/applet_tables.h

View File

@@ -0,0 +1,20 @@
--- a/init/init.c
+++ b/init/init.c
@@ -505,12 +505,11 @@
for (a = init_action_list; a; a = tmp) {
tmp = a->next;
if (a->action_type & action_type) {
- // Pointless: run() will error out if open of device fails.
- ///* a->terminal of "" means "init's console" */
- //if (a->terminal[0] && access(a->terminal, R_OK | W_OK)) {
- // //message(L_LOG | L_CONSOLE, "Device %s cannot be opened in RW mode", a->terminal /*, strerror(errno)*/);
- // delete_init_action(a);
- //} else
+ /* a->terminal of "" means "init's console" */
+ if (a->terminal[0] && access(a->terminal, R_OK | W_OK)) {
+ //message(L_LOG | L_CONSOLE, "Device %s cannot be opened in RW mode", a->terminal /*, strerror(errno)*/);
+ delete_init_action(a);
+ } else
if (a->action_type & (SYSINIT | WAIT | CTRLALTDEL | SHUTDOWN | RESTART)) {
waitfor(run(a));
delete_init_action(a);

View File

@@ -1,8 +1,6 @@
Index: busybox-1.7.2/networking/wget.c
===================================================================
--- busybox-1.7.2.orig/networking/wget.c 2007-10-30 15:35:00.000000000 -0500
+++ busybox-1.7.2/networking/wget.c 2007-10-30 15:35:00.000000000 -0500
@@ -140,7 +140,7 @@
--- a/networking/wget.c
+++ b/networking/wget.c
@@ -437,7 +437,7 @@
"directory-prefix\0" Required_argument "P"
"proxy\0" Required_argument "Y"
"user-agent\0" Required_argument "U"
@@ -10,4 +8,4 @@ Index: busybox-1.7.2/networking/wget.c
+ "passive-ftp\0" No_argument "\xfd"
"header\0" Required_argument "\xfe"
;
applet_long_options = wget_longopts;
#endif

View File

@@ -1,7 +1,5 @@
Index: busybox-1.7.2/scripts/trylink
===================================================================
--- busybox-1.7.2.orig/scripts/trylink 2007-10-30 15:35:00.000000000 -0500
+++ busybox-1.7.2/scripts/trylink 2007-10-30 15:35:00.000000000 -0500
--- a/scripts/trylink
+++ b/scripts/trylink
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/usr/bin/env bash

View File

@@ -1,9 +1,7 @@
Index: busybox-1.7.2/miscutils/crond.c
===================================================================
--- busybox-1.7.2.orig/miscutils/crond.c 2007-10-30 15:35:00.000000000 -0500
+++ busybox-1.7.2/miscutils/crond.c 2007-10-30 15:35:00.000000000 -0500
@@ -15,7 +15,7 @@
#include "libbb.h"
--- a/miscutils/crond.c
+++ b/miscutils/crond.c
@@ -24,7 +24,7 @@
#ifndef CRONTABS
-#define CRONTABS "/var/spool/cron/crontabs"
@@ -11,10 +9,8 @@ Index: busybox-1.7.2/miscutils/crond.c
#endif
#ifndef TMPDIR
#define TMPDIR "/var/spool/cron"
Index: busybox-1.7.2/miscutils/crontab.c
===================================================================
--- busybox-1.7.2.orig/miscutils/crontab.c 2007-10-30 15:35:00.000000000 -0500
+++ busybox-1.7.2/miscutils/crontab.c 2007-10-30 15:35:00.000000000 -0500
--- a/miscutils/crontab.c
+++ b/miscutils/crontab.c
@@ -13,7 +13,7 @@
#include "libbb.h"
@@ -22,5 +18,5 @@ Index: busybox-1.7.2/miscutils/crontab.c
-#define CRONTABS "/var/spool/cron/crontabs"
+#define CRONTABS "/etc/crontabs"
#endif
#ifndef TMPDIR
#define TMPDIR "/var/spool/cron"
#ifndef CRONUPDATE
#define CRONUPDATE "cron.update"

View File

@@ -1,22 +1,20 @@
Index: busybox-1.7.2/networking/udhcp/dhcpc.c
===================================================================
--- busybox-1.7.2.orig/networking/udhcp/dhcpc.c 2007-10-30 15:35:00.000000000 -0500
+++ busybox-1.7.2/networking/udhcp/dhcpc.c 2007-10-30 15:35:01.000000000 -0500
@@ -334,7 +334,7 @@
/* timeout dropped to zero */
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -352,7 +352,7 @@
switch (state) {
case INIT_SELECTING:
- if (packet_num < client_config.retries) {
+ if (!client_config.retries || (packet_num < client_config.retries)) {
- if (packet_num < discover_retries) {
+ if (!discover_retries || packet_num < discover_retries) {
if (packet_num == 0)
xid = random_xid();
@@ -360,7 +360,7 @@
break;
@@ -382,7 +382,7 @@
continue;
case RENEW_REQUESTED:
case REQUESTING:
- if (packet_num < client_config.retries) {
+ if (!client_config.retries || (packet_num < client_config.retries)) {
- if (packet_num < discover_retries) {
+ if (!discover_retries || packet_num < discover_retries) {
/* send request packet */
if (state == RENEW_REQUESTED)
send_renew(xid, server_addr, requested_ip); /* unicast */
if (state == RENEW_REQUESTED) /* unicast */
send_renew(xid, server_addr, requested_ip);

View File

@@ -1,89 +1,75 @@
Index: busybox-1.7.2/networking/udhcp/packet.c
===================================================================
--- busybox-1.7.2.orig/networking/udhcp/packet.c 2007-10-30 15:35:00.000000000 -0500
+++ busybox-1.7.2/networking/udhcp/packet.c 2007-10-30 15:35:01.000000000 -0500
@@ -121,6 +121,10 @@
--- a/networking/udhcp/packet.c
+++ b/networking/udhcp/packet.c
@@ -114,6 +114,10 @@
return ~sum;
}
+int udhcp_get_payload_len(struct dhcpMessage *payload)
+{
+ return sizeof(struct dhcpMessage) - MAX_OPTIONS_LEN + end_option(payload->options) + sizeof(payload->options[0]);
+ return sizeof(struct dhcpMessage) - DHCP_OPTIONS_BUFSIZE + end_option(payload->options) + sizeof(payload->options[0]);
+}
/* Construct a ip/udp header for a packet, and specify the source and dest hardware address */
void BUG_sizeof_struct_udp_dhcp_packet_must_be_576(void);
@@ -132,6 +136,7 @@
int result;
struct sockaddr_ll dest;
struct udp_dhcp_packet packet;
/* Construct a ip/udp header for a packet, send packet */
int udhcp_send_raw_packet(struct dhcpMessage *payload,
@@ -125,11 +129,7 @@
int fd;
int result = -1;
const char *msg;
-
- enum {
- IP_UPD_DHCP_SIZE = sizeof(struct udp_dhcp_packet) - CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS,
- UPD_DHCP_SIZE = IP_UPD_DHCP_SIZE - offsetof(struct udp_dhcp_packet, udp),
- };
+ int p_len = udhcp_get_payload_len(payload);
fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP));
if (fd < 0) {
@@ -141,6 +146,7 @@
@@ -139,7 +139,7 @@
memset(&dest, 0, sizeof(dest));
memset(&packet, 0, sizeof(packet));
- packet.data = *payload; /* struct copy */
+ memcpy(&(packet.data), payload, p_len);
dest.sll_family = AF_PACKET;
dest.sll_protocol = htons(ETH_P_IP);
@@ -158,12 +164,13 @@
@@ -156,23 +156,18 @@
packet.ip.daddr = dest_ip;
packet.udp.source = htons(source_port);
packet.udp.dest = htons(dest_port);
- packet.udp.len = htons(sizeof(packet.udp) + sizeof(struct dhcpMessage)); /* cheat on the psuedo-header */
- /* size, excluding IP header: */
- packet.udp.len = htons(UPD_DHCP_SIZE);
- /* for UDP checksumming, ip.len is set to UDP packet len */
+ p_len += sizeof(packet.udp);
+ packet.udp.len = htons(p_len);
packet.ip.tot_len = packet.udp.len;
- memcpy(&(packet.data), payload, sizeof(struct dhcpMessage));
- packet.udp.check = udhcp_checksum(&packet, sizeof(struct udp_dhcp_packet));
- packet.udp.check = udhcp_checksum(&packet, IP_UPD_DHCP_SIZE);
- /* but for sending, it is set to IP packet len */
- packet.ip.tot_len = htons(IP_UPD_DHCP_SIZE);
+ p_len += sizeof(packet.ip);
+ packet.udp.check = udhcp_checksum(&packet, p_len);
- packet.ip.tot_len = htons(sizeof(struct udp_dhcp_packet));
+ packet.ip.tot_len = htons(p_len);
packet.ip.ihl = sizeof(packet.ip) >> 2;
packet.ip.version = IPVERSION;
packet.ip.ttl = IPDEFTTL;
@@ -172,7 +179,7 @@
if (sizeof(struct udp_dhcp_packet) != 576)
BUG_sizeof_struct_udp_dhcp_packet_must_be_576();
packet.ip.check = udhcp_checksum(&packet.ip, sizeof(packet.ip));
- result = sendto(fd, &packet, sizeof(struct udp_dhcp_packet), 0,
- /* Currently we send full-sized DHCP packets (zero padded).
- * If you need to change this: last byte of the packet is
- * packet.data.options[end_option(packet.data.options)]
- */
- result = sendto(fd, &packet, IP_UPD_DHCP_SIZE, 0,
+ result = sendto(fd, &packet, p_len, 0,
(struct sockaddr *) &dest, sizeof(dest));
if (result <= 0) {
bb_perror_msg("sendto");
@@ -216,7 +223,7 @@
return -1;
(struct sockaddr *) &dest, sizeof(dest));
msg = "sendto";
ret_close:
@@ -224,8 +219,7 @@
goto ret_close;
}
- result = write(fd, payload, sizeof(struct dhcpMessage));
+ result = write(fd, payload, udhcp_get_payload_len(payload));
- /* Currently we send full-sized DHCP packets (see above) */
- result = safe_write(fd, payload, DHCP_SIZE);
+ result = safe_write(fd, payload, udhcp_get_payload_len(payload));
msg = "write";
ret_close:
close(fd);
return result;
}
Index: busybox-1.7.2/networking/udhcp/common.h
===================================================================
--- busybox-1.7.2.orig/networking/udhcp/common.h 2007-10-30 15:35:00.000000000 -0500
+++ busybox-1.7.2/networking/udhcp/common.h 2007-10-30 15:35:01.000000000 -0500
@@ -21,6 +21,8 @@
#include <netinet/udp.h>
#include <netinet/ip.h>
+#define MAX_OPTIONS_LEN 308
+
struct dhcpMessage {
uint8_t op;
uint8_t htype;
@@ -37,7 +39,7 @@
uint8_t sname[64];
uint8_t file[128];
uint32_t cookie;
- uint8_t options[308]; /* 312 - cookie */
+ uint8_t options[MAX_OPTIONS_LEN]; /* 312 - cookie */
};
struct udp_dhcp_packet {

View File

@@ -1,8 +1,6 @@
Index: busybox-1.7.2/networking/udhcp/clientpacket.c
===================================================================
--- busybox-1.7.2.orig/networking/udhcp/clientpacket.c 2007-10-30 15:35:00.000000000 -0500
+++ busybox-1.7.2/networking/udhcp/clientpacket.c 2007-10-30 15:35:02.000000000 -0500
@@ -74,6 +74,7 @@
--- a/networking/udhcp/clientpacket.c
+++ b/networking/udhcp/clientpacket.c
@@ -101,6 +101,7 @@
int send_discover(uint32_t xid, uint32_t requested)
{
struct dhcpMessage packet;
@@ -10,13 +8,11 @@ Index: busybox-1.7.2/networking/udhcp/clientpacket.c
init_packet(&packet, DHCPDISCOVER);
packet.xid = xid;
@@ -81,7 +82,8 @@
add_simple_option(packet.options, DHCP_REQUESTED_IP, requested);
@@ -113,6 +114,7 @@
add_param_req_option(&packet);
add_requests(&packet);
- bb_info_msg("Sending discover...");
+ if (msgs++ < 3)
+ bb_info_msg("Sending discover...");
return udhcp_raw_packet(&packet, INADDR_ANY, CLIENT_PORT, INADDR_BROADCAST,
bb_info_msg("Sending discover...");
return udhcp_send_raw_packet(&packet, INADDR_ANY, CLIENT_PORT, INADDR_BROADCAST,
SERVER_PORT, MAC_BCAST_ADDR, client_config.ifindex);
}

View File

@@ -1,10 +1,8 @@
Index: busybox-1.7.2/networking/udhcp/dhcpc.c
===================================================================
--- busybox-1.7.2.orig/networking/udhcp/dhcpc.c 2007-10-30 15:35:01.000000000 -0500
+++ busybox-1.7.2/networking/udhcp/dhcpc.c 2007-10-30 15:35:02.000000000 -0500
@@ -309,6 +309,12 @@
jump_in:
tv.tv_usec = 0;
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -319,6 +319,12 @@
for (;;) {
unsigned timestamp_before_wait;
+ /* When running on a bridge, the ifindex may have changed (e.g. if
+ * member interfaces were added/removed or if the status of the

View File

@@ -1,15 +1,11 @@
Index: busybox-1.7.2/shell/ash.c
===================================================================
--- busybox-1.7.2.orig/shell/ash.c 2007-10-30 15:34:59.000000000 -0500
+++ busybox-1.7.2/shell/ash.c 2007-10-30 15:35:02.000000000 -0500
@@ -11310,8 +11310,18 @@
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -11875,8 +11875,17 @@
const char *p;
char **aptr;
int flag = argv[0][0] == 'r'? VREADONLY : VEXPORT;
+ int mask = ~0;
+ int nopt;
- if (nextopt("p") != 'p') {
+ while ((nopt = nextopt("np"))) {
+ if (nopt == 'n') {
+ mask = ~flag;
@@ -17,12 +13,13 @@ Index: busybox-1.7.2/shell/ash.c
+ break;
+ }
+ }
+
- if (nextopt("p") != 'p') {
+ if (nopt != 'p') {
aptr = argptr;
name = *aptr;
if (name) {
@@ -11323,10 +11333,11 @@
@@ -11888,10 +11897,12 @@
vp = *findvar(hashvar(name), name);
if (vp) {
vp->flags |= flag;
@@ -30,7 +27,7 @@ Index: busybox-1.7.2/shell/ash.c
continue;
}
}
- setvar(name, p, flag);
setvar(name, p, flag);
+ setvar(name, p, flag & mask);
} while ((name = *++aptr) != NULL);
return 0;

View File

@@ -1,37 +1,43 @@
Index: busybox-1.7.2/include/applets.h
===================================================================
--- busybox-1.7.2.orig/include/applets.h 2007-10-30 15:34:59.000000000 -0500
+++ busybox-1.7.2/include/applets.h 2007-10-30 15:35:03.000000000 -0500
@@ -241,6 +241,7 @@
--- a/include/applets.h
+++ b/include/applets.h
@@ -257,6 +257,7 @@
USE_MV(APPLET(mv, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_NAMEIF(APPLET(nameif, _BB_DIR_SBIN, _BB_SUID_NEVER))
USE_NC(APPLET(nc, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
+USE_NETMSG(APPLET_NOUSAGE(netmsg, netmsg, _BB_DIR_BIN, _BB_SUID_ALWAYS))
+USE_NETMSG(APPLET(netmsg, _BB_DIR_BIN, _BB_SUID_ALWAYS))
USE_NETSTAT(APPLET(netstat, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_NICE(APPLET(nice, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_NMETER(APPLET(nmeter, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
Index: busybox-1.7.2/networking/Config.in
===================================================================
--- busybox-1.7.2.orig/networking/Config.in 2007-10-30 15:34:59.000000000 -0500
+++ busybox-1.7.2/networking/Config.in 2007-10-30 15:35:03.000000000 -0500
@@ -508,6 +508,12 @@
help
--- a/include/usage.h
+++ b/include/usage.h
@@ -2815,6 +2815,9 @@
#endif
+#define netmsg_trivial_usage NOUSAGE_STR
+#define netmsg_full_usage ""
+
#define netstat_trivial_usage \
"[-laentuwxr"USE_FEATURE_NETSTAT_WIDE("W")"]"
#define netstat_full_usage "\n\n" \
--- a/networking/Config.in
+++ b/networking/Config.in
@@ -602,6 +602,12 @@
A simple Unix utility which reads and writes data across network
connections.
+
+config NETMSG
+ bool "netmsg"
+ default n
+ help
+ simple program for sending udp broadcast messages
+
config NC_SERVER
bool "Netcat server options (-l)"
Index: busybox-1.7.2/networking/Kbuild
===================================================================
--- busybox-1.7.2.orig/networking/Kbuild 2007-10-30 15:34:59.000000000 -0500
+++ busybox-1.7.2/networking/Kbuild 2007-10-30 15:35:03.000000000 -0500
@@ -21,6 +21,7 @@
default n
--- a/networking/Kbuild
+++ b/networking/Kbuild
@@ -24,6 +24,7 @@
lib-$(CONFIG_IPCALC) += ipcalc.o
lib-$(CONFIG_NAMEIF) += nameif.o
lib-$(CONFIG_NC) += nc.o
@@ -39,10 +45,8 @@ Index: busybox-1.7.2/networking/Kbuild
lib-$(CONFIG_NETSTAT) += netstat.o
lib-$(CONFIG_NSLOOKUP) += nslookup.o
lib-$(CONFIG_PING) += ping.o
Index: busybox-1.7.2/networking/netmsg.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.7.2/networking/netmsg.c 2007-10-30 15:35:03.000000000 -0500
--- /dev/null
+++ b/networking/netmsg.c
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2006 Felix Fietkau <nbd@openwrt.org>

View File

@@ -1,45 +0,0 @@
Copyright (C) 2006 OpenWrt.org
Index: busybox-1.7.2/networking/httpd.c
===================================================================
--- busybox-1.7.2.orig/networking/httpd.c 2007-10-30 15:34:59.000000000 -0500
+++ busybox-1.7.2/networking/httpd.c 2007-10-30 15:35:03.000000000 -0500
@@ -1527,12 +1527,26 @@
if (ENABLE_FEATURE_HTTPD_AUTH_MD5) {
char *cipher;
char *pp;
+ char *ppnew = NULL;
+ struct passwd *pwd = NULL;
if (strncmp(p, request, u - request) != 0) {
/* user doesn't match */
continue;
}
pp = strchr(p, ':');
+ if(pp && pp[1] == '$' && pp[2] == 'p' &&
+ pp[3] == '$' && pp[4] &&
+ (pwd = getpwnam(&pp[4])) != NULL) {
+ if(pwd->pw_passwd && pwd->pw_passwd[0] == '!') {
+ prev = NULL;
+ continue;
+ }
+ ppnew = xrealloc(ppnew, 5 + strlen(pwd->pw_passwd));
+ ppnew[0] = ':';
+ strcpy(ppnew + 1, pwd->pw_passwd);
+ pp = ppnew;
+ }
if (pp && pp[1] == '$' && pp[2] == '1'
&& pp[3] == '$' && pp[4]
) {
@@ -1543,6 +1557,10 @@
/* unauthorized */
continue;
}
+ if (ppnew) {
+ free(ppnew);
+ ppnew = NULL;
+ }
}
if (strcmp(p, request) == 0) {

View File

@@ -1,20 +1,28 @@
Index: busybox-1.8.1/include/applets.h
===================================================================
--- busybox-1.8.1.orig/include/applets.h 2007-11-10 16:54:28.318054115 +0100
+++ busybox-1.8.1/include/applets.h 2007-11-10 17:39:21.487529096 +0100
@@ -218,6 +218,7 @@
--- a/include/applets.h
+++ b/include/applets.h
@@ -220,6 +220,7 @@
USE_LOAD_POLICY(APPLET(load_policy, _BB_DIR_USR_SBIN, _BB_SUID_NEVER))
USE_LOADFONT(APPLET(loadfont, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
USE_LOADKMAP(APPLET(loadkmap, _BB_DIR_SBIN, _BB_SUID_NEVER))
+USE_LOCK(APPLET_NOUSAGE(lock, lock, _BB_DIR_BIN, _BB_SUID_NEVER))
+USE_LOCK(APPLET(lock, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_LOGGER(APPLET(logger, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
USE_LOGIN(APPLET(login, _BB_DIR_BIN, _BB_SUID_ALWAYS))
USE_LOGNAME(APPLET_NOFORK(logname, logname, _BB_DIR_USR_BIN, _BB_SUID_NEVER, logname))
Index: busybox-1.8.1/miscutils/Config.in
===================================================================
--- busybox-1.8.1.orig/miscutils/Config.in 2007-11-10 16:54:16.477379354 +0100
+++ busybox-1.8.1/miscutils/Config.in 2007-11-10 16:54:28.366056851 +0100
@@ -244,6 +244,12 @@
--- a/include/usage.h
+++ b/include/usage.h
@@ -2138,6 +2138,9 @@
#define loadkmap_example_usage \
"$ loadkmap < /etc/i18n/lang-keymap\n"
+#define lock_trivial_usage NOUSAGE_STR
+#define lock_full_usage ""
+
#define logger_trivial_usage \
"[OPTION]... [MESSAGE]"
#define logger_full_usage "\n\n" \
--- a/miscutils/Config.in
+++ b/miscutils/Config.in
@@ -364,6 +364,12 @@
Enables the 'hdparm -d' option to get/set using_dma flag.
This is dangerous stuff, so you should probably say N.
@@ -27,22 +35,18 @@ Index: busybox-1.8.1/miscutils/Config.in
config MAKEDEVS
bool "makedevs"
default n
Index: busybox-1.8.1/miscutils/Kbuild
===================================================================
--- busybox-1.8.1.orig/miscutils/Kbuild 2007-11-10 16:54:16.481379580 +0100
+++ busybox-1.8.1/miscutils/Kbuild 2007-11-10 16:54:28.370057076 +0100
@@ -16,6 +16,7 @@
lib-$(CONFIG_HDPARM) += hdparm.o
lib-$(CONFIG_LAST) += last.o
--- a/miscutils/Kbuild
+++ b/miscutils/Kbuild
@@ -20,6 +20,7 @@
lib-$(CONFIG_FEATURE_LAST_SMALL)+= last.o
lib-$(CONFIG_FEATURE_LAST_FANCY)+= last_fancy.o
lib-$(CONFIG_LESS) += less.o
+lib-$(CONFIG_LOCK) += lock.o
lib-$(CONFIG_MAKEDEVS) += makedevs.o
lib-$(CONFIG_MAN) += man.o
lib-$(CONFIG_MICROCOM) += microcom.o
lib-$(CONFIG_MOUNTPOINT) += mountpoint.o
Index: busybox-1.8.1/miscutils/lock.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/miscutils/lock.c 2007-11-10 17:40:37.203843924 +0100
--- /dev/null
+++ b/miscutils/lock.c
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2006 Felix Fietkau <nbd@openwrt.org>

View File

@@ -1,31 +1,27 @@
Index: busybox-1.8.1/include/usage.h
===================================================================
--- busybox-1.8.1.orig/include/usage.h 2007-11-10 16:54:16.433376848 +0100
+++ busybox-1.8.1/include/usage.h 2007-11-10 16:54:29.970148260 +0100
@@ -1418,7 +1418,8 @@
--- a/include/usage.h
+++ b/include/usage.h
@@ -1558,7 +1558,8 @@
USE_FEATURE_HTTPD_BASIC_AUTH(" [-r realm]") \
USE_FEATURE_HTTPD_AUTH_MD5(" [-m pass]") \
" [-h home]" \
- " [-d/-e string]"
+ " [-d/-e string]" \
+ " [-R <path> [-H <host>]]"
#define httpd_full_usage \
"Listen for incoming HTTP requests" \
"\n\nOptions:" \
@@ -1436,6 +1437,8 @@
"\n -h HOME Home directory (default .)" \
"\n -e STRING HTML encode STRING" \
"\n -d STRING URL decode STRING" \
+ "\n -R PATH Redirect target path" \
+ "\n -H HOST Redirect target host" \
#define httpd_full_usage "\n\n" \
"Listen for incoming HTTP requests\n" \
"\nOptions:" \
@@ -1576,6 +1577,8 @@
"\n -h HOME Home directory (default .)" \
"\n -e STRING HTML encode STRING" \
"\n -d STRING URL decode STRING" \
+ "\n -R PATH Redirect target path" \
+ "\n -H HOST Redirect target host" \
#define hwclock_trivial_usage \
USE_GETOPT_LONG( \
Index: busybox-1.8.1/networking/httpd.c
===================================================================
--- busybox-1.8.1.orig/networking/httpd.c 2007-11-10 16:54:28.346055711 +0100
+++ busybox-1.8.1/networking/httpd.c 2007-11-10 16:54:56.639668071 +0100
@@ -253,6 +253,8 @@
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -247,6 +247,8 @@
const char *found_mime_type;
const char *found_moved_temporarily;
@@ -34,8 +30,8 @@ Index: busybox-1.8.1/networking/httpd.c
Htaccess_IP *ip_a_d; /* config allow/deny lines */
USE_FEATURE_HTTPD_BASIC_AUTH(const char *g_realm;)
@@ -297,6 +299,8 @@
#define home_httpd (G.home_httpd )
@@ -292,6 +294,8 @@
#define index_page (G.index_page )
#define found_mime_type (G.found_mime_type )
#define found_moved_temporarily (G.found_moved_temporarily)
+#define redirect_path (G.redirect_path )
@@ -43,7 +39,7 @@ Index: busybox-1.8.1/networking/httpd.c
#define last_mod (G.last_mod )
#define ip_a_d (G.ip_a_d )
#define g_realm (G.g_realm )
@@ -988,8 +992,11 @@
@@ -991,8 +995,11 @@
}
#endif
if (responseNum == HTTP_MOVED_TEMPORARILY) {
@@ -56,21 +52,21 @@ Index: busybox-1.8.1/networking/httpd.c
(g_query ? "?" : ""),
(g_query ? g_query : ""));
}
@@ -1907,8 +1914,12 @@
*++urlp = '\0'; /* so keep last character */
tptr = urlp; /* end ptr */
@@ -1912,8 +1919,12 @@
} while (*++tptr);
*++urlp = '\0'; /* terminate after last character */
+ /* redirect active */
+ if (redirect_path && (strncmp(urlcopy, redirect_path, strlen(redirect_path)) != 0))
+ found_moved_temporarily = redirect_path;
+
/* If URL is a directory, add '/' */
- if (tptr[-1] != '/') {
+ if (!redirect_path && (tptr[-1] != '/')) {
- if (urlp[-1] != '/') {
+ if (!redirect_path && (urlp[-1] != '/')) {
if (is_directory(urlcopy + 1, 1, &sb)) {
found_moved_temporarily = urlcopy;
}
@@ -2252,7 +2263,9 @@
@@ -2263,7 +2274,9 @@
#endif
enum {
@@ -81,10 +77,10 @@ Index: busybox-1.8.1/networking/httpd.c
d_opt_decode_url,
h_opt_home_httpd,
USE_FEATURE_HTTPD_ENCODE_URL_STR(e_opt_encode_url,)
@@ -2301,12 +2314,13 @@
@@ -2312,12 +2325,13 @@
/* We do not "absolutize" path given by -h (home) opt.
* If user gives relative path in -h, $SCRIPT_FILENAME can end up
* relative too. */
* If user gives relative path in -h,
* $SCRIPT_FILENAME will not be set. */
- opt = getopt32(argv, "c:d:h:"
+ opt = getopt32(argv, "R:H:c:d:h:"
USE_FEATURE_HTTPD_ENCODE_URL_STR("e:")

View File

@@ -1,72 +0,0 @@
Index: busybox-1.7.2/editors/awk.c
===================================================================
--- busybox-1.7.2.orig/editors/awk.c 2007-10-30 15:34:59.000000000 -0500
+++ busybox-1.7.2/editors/awk.c 2007-10-30 15:35:03.000000000 -0500
@@ -2757,6 +2757,7 @@
{
unsigned opt;
char *opt_F, *opt_W;
+ llist_t *opt_f = NULL;
llist_t *opt_v = NULL;
int i, j, flen;
var *v;
@@ -2816,8 +2817,8 @@
*s1 = '=';
}
}
- opt_complementary = "v::";
- opt = getopt32(argv, "F:v:f:W:", &opt_F, &opt_v, &g_progname, &opt_W);
+ opt_complementary = "v::f::";
+ opt = getopt32(argv, "F:v:f:W:", &opt_F, &opt_v, &opt_f, &opt_W);
argv += optind;
argc -= optind;
if (opt & 0x1)
@@ -2826,25 +2827,31 @@
if (!is_assignment(llist_pop(&opt_v)))
bb_show_usage();
}
- if (opt & 0x4) { // -f
- char *s = s; /* die, gcc, die */
- FILE *from_file = afopen(g_progname, "r");
- /* one byte is reserved for some trick in next_token */
- if (fseek(from_file, 0, SEEK_END) == 0) {
- flen = ftell(from_file);
- s = xmalloc(flen + 4);
- fseek(from_file, 0, SEEK_SET);
- i = 1 + fread(s + 1, 1, flen, from_file);
- } else {
- for (i = j = 1; j > 0; i += j) {
- s = xrealloc(s, i + 4096);
- j = fread(s + i, 1, 4094, from_file);
+ if (opt_f != NULL) { // -f
+ while (opt_f != NULL) {
+ char *s = NULL;
+ FILE *from_file;
+
+ g_progname = opt_f->data;
+ from_file = afopen(g_progname, "r");
+ /* one byte is reserved for some trick in next_token */
+ if (fseek(from_file, 0, SEEK_END) == 0) {
+ flen = ftell(from_file);
+ s = xmalloc(flen + 4);
+ fseek(from_file, 0, SEEK_SET);
+ i = 1 + fread(s + 1, 1, flen, from_file);
+ } else {
+ for (i = j = 1; j > 0; i += j) {
+ s = xrealloc(s, i + 4096);
+ j = fread(s + i, 1, 4094, from_file);
+ }
}
+ s[i] = '\0';
+ fclose(from_file);
+ parse_program(s + 1);
+ free(s);
+ opt_f = opt_f->link;
}
- s[i] = '\0';
- fclose(from_file);
- parse_program(s + 1);
- free(s);
} else { // no -f: take program from 1st parameter
if (!argc)
bb_show_usage();

View File

@@ -1,39 +0,0 @@
Index: busybox-1.7.2/include/platform.h
===================================================================
--- busybox-1.7.2.orig/include/platform.h 2007-10-30 15:34:59.000000000 -0500
+++ busybox-1.7.2/include/platform.h 2007-10-30 15:35:04.000000000 -0500
@@ -137,9 +137,11 @@
# include <netinet/in.h>
#endif
+#ifndef __APPLE__
#ifndef __socklen_t_defined
typedef int socklen_t;
#endif
+#endif
/* ---- Compiler dependent settings ------------------------- */
#if (defined __digital__ && defined __unix__)
@@ -179,7 +181,7 @@
#define HAVE_STDINT_H
#else
/* Largest integral types. */
-#if __BIG_ENDIAN__
+#if __BIG_ENDIAN__ && !__APPLE__
typedef long intmax_t;
typedef unsigned long uintmax_t;
#else
Index: busybox-1.7.2/include/libbb.h
===================================================================
--- busybox-1.7.2.orig/include/libbb.h 2007-10-30 15:34:59.000000000 -0500
+++ busybox-1.7.2/include/libbb.h 2007-10-30 15:35:04.000000000 -0500
@@ -31,7 +31,9 @@
#include <sys/mman.h>
#include <sys/socket.h>
#include <sys/stat.h>
+#ifndef __APPLE__
#include <sys/statfs.h>
+#endif
#include <sys/time.h>
#include <sys/types.h>
#include <sys/wait.h>

View File

@@ -1,9 +1,7 @@
Index: busybox-1.7.2/networking/httpd.c
===================================================================
--- busybox-1.7.2.orig/networking/httpd.c 2007-10-30 15:35:03.000000000 -0500
+++ busybox-1.7.2/networking/httpd.c 2007-10-30 15:35:04.000000000 -0500
@@ -1316,10 +1316,10 @@
if (full_write(1, HTTP_200, sizeof(HTTP_200)-1) != sizeof(HTTP_200)-1)
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -1247,10 +1247,10 @@
if (full_write(STDOUT_FILENO, HTTP_200, sizeof(HTTP_200)-1) != sizeof(HTTP_200)-1)
break;
}
- /* Commented out:

View File

@@ -1,13 +1,11 @@
Index: busybox-1.7.2/coreutils/uniq.c
===================================================================
--- busybox-1.7.2.orig/coreutils/uniq.c 2007-10-30 15:34:59.000000000 -0500
+++ busybox-1.7.2/coreutils/uniq.c 2007-10-30 15:35:04.000000000 -0500
@@ -83,6 +83,8 @@
--- a/coreutils/uniq.c
+++ b/coreutils/uniq.c
@@ -82,6 +82,8 @@
if (!s0 || strcmp(e0, e1)) {
if (!s0 || strncmp(e0, e1, max_chars)) {
break;
+ } else {
+ free(s1);
}
++dups; /* Note: Testing for overflow seems excessive. */
++dups; /* note: testing for overflow seems excessive. */

View File

@@ -1,10 +1,8 @@
Index: busybox-1.7.2/networking/httpd.c
===================================================================
--- busybox-1.7.2.orig/networking/httpd.c 2007-10-30 15:35:04.000000000 -0500
+++ busybox-1.7.2/networking/httpd.c 2007-10-30 15:35:04.000000000 -0500
@@ -1618,6 +1618,7 @@
#if ENABLE_FEATURE_HTTPD_BASIC_AUTH
int credentials = -1; /* if not required this is Ok */
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -1797,6 +1797,7 @@
char *header_ptr = header_ptr;
Htaccess_Proxy *proxy_entry;
#endif
+ xchdir(home_httpd);

View File

@@ -1,12 +0,0 @@
Index: busybox-1.7.2/applets/usage_compressed
===================================================================
--- busybox-1.7.2.orig/applets/usage_compressed 2007-10-30 15:34:59.000000000 -0500
+++ busybox-1.7.2/applets/usage_compressed 2007-10-30 15:35:04.000000000 -0500
@@ -14,6 +14,6 @@
echo 'static const char packed_usage[] ALIGN1 = '
"$loc/usage" | bzip2 -1 | od -v -t x1 \
-| $SED -e 's/^[^ ]*//' -e 's/ *\(..\)/\\x\1/g' -e 's/^\(.*\)$/"\1"/'
+| $SED -e 's/^[^ ]*//' -e 's/ *\([a-f0-9][a-f0-9]\)/\\x\1/g' -e 's/^\(.*\)$/"\1"/'
echo ';'
echo '#define SIZEOF_usage_messages' `expr 0 + $sz`

View File

@@ -1,7 +1,5 @@
Index: busybox-1.7.2/networking/ping.c
===================================================================
--- busybox-1.7.2.orig/networking/ping.c 2007-10-30 15:34:59.000000000 -0500
+++ busybox-1.7.2/networking/ping.c 2007-10-30 15:35:05.000000000 -0500
--- a/networking/ping.c
+++ b/networking/ping.c
@@ -91,7 +91,7 @@
struct sockaddr_in pingaddr;
struct icmp *pkt;
@@ -10,7 +8,7 @@ Index: busybox-1.7.2/networking/ping.c
+ char packet[datalen + ICMP_MINLEN + MAXIPLEN + MAXICMPLEN];
pingsock = create_icmp_socket();
pingaddr = lsa->sin;
pingaddr = lsa->u.sin;
@@ -101,7 +101,7 @@
pkt->icmp_type = ICMP_ECHO;
pkt->icmp_cksum = in_cksum((unsigned short *) pkt, sizeof(packet));
@@ -28,7 +26,7 @@ Index: busybox-1.7.2/networking/ping.c
+ char packet[datalen + ICMP_MINLEN + MAXIPLEN + MAXICMPLEN];
pingsock = create_icmp6_socket();
pingaddr = lsa->sin6;
pingaddr = lsa->u.sin6;
@@ -147,7 +147,7 @@
sockopt = offsetof(struct icmp6_hdr, icmp6_cksum);
setsockopt(pingsock, SOL_RAW, IPV6_CHECKSUM, &sockopt, sizeof(sockopt));

View File

@@ -1,7 +1,5 @@
Index: busybox-1.8.1/modutils/insmod.c
===================================================================
--- busybox-1.8.1.orig/modutils/insmod.c 2007-11-10 02:40:49.000000000 +0100
+++ busybox-1.8.1/modutils/insmod.c 2007-11-10 17:28:44.391223047 +0100
--- a/modutils/insmod.c
+++ b/modutils/insmod.c
@@ -61,21 +61,117 @@
#include "libbb.h"
#include <libgen.h>
@@ -27,9 +25,9 @@ Index: busybox-1.8.1/modutils/insmod.c
#if ENABLE_FEATURE_2_6_MODULES
-static int insmod_ng_main(int argc, char **argv);
+int insmod_main_26(int argc, char **argv);
+#endif
#endif
+int insmod_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+
+static char *g_filename = NULL;
+#define _PATH_MODULES "/lib/modules"
+
@@ -69,7 +67,7 @@ Index: busybox-1.8.1/modutils/insmod.c
+ if (k_version <= 4)
+ suffix = ".o";
+ else
#endif
+#endif
+ suffix = ".ko";
+
+ len = strlen(filename);
@@ -111,7 +109,7 @@ Index: busybox-1.8.1/modutils/insmod.c
+ ret = 0;
+ else
+ free(g_filename);
+
+done:
+ free(filename);
+
@@ -125,23 +123,50 @@ Index: busybox-1.8.1/modutils/insmod.c
#if ENABLE_FEATURE_INSMOD_LOADINKMEM
#define LOADBITS 0
#else
@@ -673,7 +769,6 @@
@@ -184,7 +280,6 @@
/* Microblaze */
#if defined(__microblaze__)
#define USE_SINGLE
-#include <linux/elf-em.h>
#define MATCH_MACHINE(x) (x == EM_XILINX_MICROBLAZE)
#define SHT_RELM SHT_RELA
#define Elf32_RelM Elf32_Rela
@@ -452,7 +547,7 @@
/* The system calls unchanged between 2.0 and 2.1. */
unsigned long create_module(const char *, size_t);
-int delete_module(const char *module, unsigned int flags);
+int delete_module(const char *);
#endif /* module.h */
@@ -652,7 +747,7 @@
static enum obj_reloc arch_apply_relocation(struct obj_file *f,
struct obj_section *targsec,
- /*struct obj_section *symsec,*/
+ struct obj_section *symsec,
struct obj_symbol *sym,
ElfW(RelM) *rel, ElfW(Addr) value);
@@ -673,6 +768,7 @@
#define SPFX ""
#endif
-#define _PATH_MODULES "/lib/modules"
+
enum { STRVERSIONLEN = 64 };
/*======================================================================*/
@@ -789,27 +884,6 @@
@@ -788,28 +884,6 @@
static char *m_fullName;
-/*======================================================================*/
-
-
-static int check_module_name_match(const char *filename, struct stat *statbuf,
- void *userdata, int depth)
-static int check_module_name_match(const char *filename,
- struct stat *statbuf ATTRIBUTE_UNUSED,
- void *userdata, int depth ATTRIBUTE_UNUSED)
-{
- char *fullname = (char *) userdata;
- char *tmp;
@@ -161,7 +186,170 @@ Index: busybox-1.8.1/modutils/insmod.c
/*======================================================================*/
@@ -3897,145 +3971,57 @@
@@ -835,27 +909,18 @@
static enum obj_reloc
arch_apply_relocation(struct obj_file *f,
struct obj_section *targsec,
- /*struct obj_section *symsec,*/
+ struct obj_section *symsec,
struct obj_symbol *sym,
ElfW(RelM) *rel, ElfW(Addr) v)
{
-#if defined(__arm__) || defined(__i386__) || defined(__mc68000__) \
- || defined(__sh__) || defined(__s390__) || defined(__x86_64__)
struct arch_file *ifile = (struct arch_file *) f;
-#endif
enum obj_reloc ret = obj_reloc_ok;
ElfW(Addr) *loc = (ElfW(Addr) *) (targsec->contents + rel->r_offset);
-#if defined(__arm__) || defined(__H8300H__) || defined(__H8300S__) \
- || defined(__i386__) || defined(__mc68000__) || defined(__microblaze__) \
- || defined(__mips__) || defined(__nios2__) || defined(__powerpc__) \
- || defined(__s390__) || defined(__sh__) || defined(__x86_64__)
ElfW(Addr) dot = targsec->header.sh_addr + rel->r_offset;
-#endif
#if defined(USE_GOT_ENTRIES) || defined(USE_PLT_ENTRIES)
struct arch_symbol *isym = (struct arch_symbol *) sym;
#endif
-#if defined(__arm__) || defined(__i386__) || defined(__mc68000__) \
- || defined(__sh__) || defined(__s390__)
+#if defined(__arm__) || defined(__i386__) || defined(__mc68000__) || defined(__sh__) || defined(__s390__)
#if defined(USE_GOT_ENTRIES)
ElfW(Addr) got = ifile->got ? ifile->got->header.sh_addr : 0;
#endif
@@ -953,7 +1018,6 @@
case R_386_PLT32:
case R_386_PC32:
- case R_386_GOTOFF:
*loc += v - dot;
break;
@@ -972,6 +1036,9 @@
case R_386_GOT32:
goto bb_use_got;
+
+ case R_386_GOTOFF:
+ *loc += v - got;
break;
#elif defined(__microblaze__)
@@ -1758,7 +1825,7 @@
#if defined(USE_SINGLE)
-static int arch_single_init(/*ElfW(RelM) *rel,*/ struct arch_single_entry *single,
+static int arch_single_init(ElfW(RelM) *rel, struct arch_single_entry *single,
int offset, int size)
{
if (single->allocated == 0) {
@@ -1906,7 +1973,7 @@
#if defined(USE_GOT_ENTRIES)
if (got_allocate) {
got_offset += arch_single_init(
- /*rel,*/ &intsym->gotent,
+ rel, &intsym->gotent,
got_offset, GOT_ENTRY_SIZE);
got_needed = 1;
@@ -1920,7 +1987,7 @@
plt_offset, PLT_ENTRY_SIZE);
#else
plt_offset += arch_single_init(
- /*rel,*/ &intsym->pltent,
+ rel, &intsym->pltent,
plt_offset, PLT_ENTRY_SIZE);
#endif
plt_needed = 1;
@@ -1958,8 +2025,7 @@
while (n > 0) {
ch = *name++;
h = (h << 4) + ch;
- g = (h & 0xf0000000);
- if (g != 0) {
+ if ((g = (h & 0xf0000000)) != 0) {
h ^= g >> 24;
h &= ~g;
}
@@ -2038,7 +2104,7 @@
int n_type = ELF_ST_TYPE(info);
int n_binding = ELF_ST_BIND(info);
- for (sym = f->symtab[hash]; sym; sym = sym->next) {
+ for (sym = f->symtab[hash]; sym; sym = sym->next)
if (f->symbol_cmp(sym->name, name) == 0) {
int o_secidx = sym->secidx;
int o_info = sym->info;
@@ -2097,14 +2163,14 @@
return sym;
}
}
- }
/* Completely new symbol. */
sym = arch_new_symbol();
sym->next = f->symtab[hash];
f->symtab[hash] = sym;
sym->ksymidx = -1;
- if (ELF_ST_BIND(info) == STB_LOCAL && symidx != (unsigned long)(-1)) {
+
+ if (ELF_ST_BIND(info) == STB_LOCAL && symidx != -1) {
if (symidx >= f->local_symtab_size)
bb_error_msg("local symbol %s with index %ld exceeds local_symtab_size %ld",
name, (long) symidx, (long) f->local_symtab_size);
@@ -3227,7 +3293,7 @@
/* Do it! */
switch (arch_apply_relocation
- (f, targsec, /*symsec,*/ intsym, rel, value)
+ (f, targsec, symsec, intsym, rel, value)
) {
case obj_reloc_ok:
break;
@@ -3306,11 +3372,11 @@
/*======================================================================*/
-static struct obj_file *obj_load(FILE * fp, int loadprogbits ATTRIBUTE_UNUSED)
+static struct obj_file *obj_load(FILE * fp, int loadprogbits)
{
struct obj_file *f;
ElfW(Shdr) * section_headers;
- size_t shnum, i;
+ int shnum, i;
char *shstrtab;
/* Read the file header. */
@@ -3582,7 +3648,7 @@
while (ptr < endptr) {
value = strchr(ptr, '=');
if (value && strncmp(ptr, "license", value-ptr) == 0) {
- unsigned i;
+ int i;
if (license)
*license = value+1;
for (i = 0; i < ARRAY_SIZE(gpl_licenses); ++i) {
@@ -3686,9 +3752,6 @@
* start of some sections. this info is used by ksymoops to do better
* debugging.
*/
-#if !ENABLE_FEATURE_INSMOD_VERSION_CHECKING
-#define get_module_version(f, str) get_module_version(str)
-#endif
static int
get_module_version(struct obj_file *f, char str[STRVERSIONLEN])
{
@@ -3721,8 +3784,7 @@
struct obj_symbol *sym;
char *name, *absolute_filename;
char str[STRVERSIONLEN];
- unsigned i;
- int l, lm_name, lfilename, use_ksymtab, version;
+ int i, l, lm_name, lfilename, use_ksymtab, version;
struct stat statbuf;
/* WARNING: was using realpath, but replaced by readlink to stop using
@@ -3909,145 +3971,57 @@
void print_load_map(struct obj_file *f);
#endif
@@ -257,10 +445,8 @@ Index: busybox-1.8.1/modutils/insmod.c
- } else {
- free(tmp1);
- tmp1 = NULL; /* flag for free(m_name) before exit() */
+ tmp = xstrdup(arg1);
+ m_name = basename(tmp);
}
- }
-
- /* Get a filedesc for the module. Check that we have a complete path */
- if (stat(arg1, &st) < 0 || !S_ISREG(st.st_mode)
- || (fp = fopen(arg1, "r")) == NULL
@@ -271,7 +457,7 @@ Index: busybox-1.8.1/modutils/insmod.c
- char *module_dir;
- char *tmdn;
-
- tmdn = concat_path_file(_PATH_MODULES, myuname.release);
- tmdn = concat_path_file(CONFIG_DEFAULT_MODULES_DIR, myuname.release);
- /* Jump through hoops in case /lib/modules/`uname -r`
- * is a symlink. We do not want recursive_action to
- * follow symlinks, but we do want to follow the
@@ -293,9 +479,9 @@ Index: busybox-1.8.1/modutils/insmod.c
-
- free(m_filename);
- m_filename = NULL;
- module_dir = xmalloc_readlink(_PATH_MODULES);
- module_dir = xmalloc_readlink(CONFIG_DEFAULT_MODULES_DIR);
- if (!module_dir)
- module_dir = xstrdup(_PATH_MODULES);
- module_dir = xstrdup(CONFIG_DEFAULT_MODULES_DIR);
- /* No module found under /lib/modules/`uname -r`, this
- * time cast the net a bit wider. Search /lib/modules/ */
- r = recursive_action(module_dir, ACTION_RECURSE,
@@ -308,10 +494,12 @@ Index: busybox-1.8.1/modutils/insmod.c
- ) {
- bb_error_msg_and_die("%s: module not found", m_fullName);
- }
- }
+ tmp = xstrdup(arg1);
+ m_name = basename(tmp);
}
- } else
- m_filename = xstrdup(arg1);
-
- if (flag_verbose)
- printf("Using %s\n", m_filename);
-
@@ -329,7 +517,7 @@ Index: busybox-1.8.1/modutils/insmod.c
f = obj_load(fp, LOADBITS);
@@ -4062,7 +4048,7 @@
@@ -4074,7 +4048,7 @@
"\t%s was compiled for kernel version %s\n"
"\twhile this kernel is version %s",
flag_force_load ? "warning: " : "",
@@ -338,7 +526,7 @@ Index: busybox-1.8.1/modutils/insmod.c
if (!flag_force_load)
goto out;
}
@@ -4104,7 +4090,7 @@
@@ -4116,7 +4090,7 @@
hide_special_symbols(f);
#if ENABLE_FEATURE_INSMOD_KSYMOOPS_SYMBOLS
@@ -347,7 +535,37 @@ Index: busybox-1.8.1/modutils/insmod.c
#endif /* FEATURE_INSMOD_KSYMOOPS_SYMBOLS */
new_create_module_ksymtab(f);
@@ -4147,18 +4133,19 @@
@@ -4125,7 +4099,7 @@
m_size = obj_load_size(f);
m_addr = create_module(m_name, m_size);
- if (m_addr == (ElfW(Addr))(-1)) switch (errno) {
+ if (m_addr == -1) switch (errno) {
case EEXIST:
bb_error_msg_and_die("a module named %s already exists", m_name);
case ENOMEM:
@@ -4141,36 +4115,37 @@
* now we can load them directly into the kernel memory
*/
if (!obj_load_progbits(fp, f, (char*)m_addr)) {
- delete_module(m_name, 0);
+ delete_module(m_name);
goto out;
}
#endif
if (!obj_relocate(f, m_addr)) {
- delete_module(m_name, 0);
+ delete_module(m_name);
goto out;
}
if (!new_init_module(m_name, f, m_size)) {
- delete_module(m_name, 0);
+ delete_module(m_name);
goto out;
}
if (flag_print_load_map)
print_load_map(f);
@@ -372,19 +590,34 @@ Index: busybox-1.8.1/modutils/insmod.c
}
#endif /* ENABLE_FEATURE_2_4_MODULES */
@@ -4190,23 +4177,32 @@
@@ -4182,15 +4157,8 @@
#if ENABLE_FEATURE_2_6_MODULES
#include <sys/mman.h>
-
-#if defined __UCLIBC__ && !ENABLE_FEATURE_2_4_MODULES
-/* big time suckage. The old prototype above renders our nice fwd-decl wrong */
-extern int init_module(void *module, unsigned long len, const char *options);
-#else
#include <asm/unistd.h>
#include <sys/syscall.h>
-#define init_module(mod, len, opts) syscall(__NR_init_module, mod, len, opts)
-#endif
/* We use error numbers in a loose translation... */
static const char *moderror(int err)
@@ -4209,22 +4177,32 @@
}
}
-#if !ENABLE_FEATURE_2_4_MODULES
-int insmod_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int insmod_main(int argc, char **argv)
-int insmod_main(int argc ATTRIBUTE_UNUSED, char **argv)
-#else
-static int insmod_ng_main(int argc, char **argv)
-static int insmod_ng_main(int argc ATTRIBUTE_UNUSED, char **argv)
-#endif
+int insmod_main_26(int argc, char **argv)
{
- long ret;
- size_t len;
+ char *filename, *options;
+ struct utsname myuname;
@@ -414,12 +647,20 @@ Index: busybox-1.8.1/modutils/insmod.c
/* Rest is options */
options = xzalloc(1);
optlen = 0;
@@ -4216,36 +4212,47 @@
@@ -4234,41 +4212,47 @@
optlen += sprintf(options + optlen, (strchr(*argv,' ') ? "\"%s\" " : "%s "), *argv);
}
-#if 0
- /* Any special reason why mmap? It isn't performace critical... */
- /* Any special reason why mmap? It isn't performance critical. -vda */
- /* Yes, xmalloc'ing can use *alot* of RAM. Don't forget that there are
- * modules out there that are half a megabyte! mmap()ing is way nicer
- * for small mem boxes, i guess. */
- /* But after load, these modules will take up that 0.5mb in kernel
- * anyway. Using malloc here causes only a transient spike to 1mb,
- * after module is loaded, we go back to normal 0.5mb usage
- * (in kernel). Also, mmap isn't magic - when we touch mapped data,
- * we use memory. -vda */
- int fd;
- struct stat st;
- unsigned long len;
@@ -440,18 +681,19 @@ Index: busybox-1.8.1/modutils/insmod.c
len = MAXINT(ssize_t);
- map = xmalloc_open_read_close(filename, &len);
-#endif
-
+ map = xmalloc_open_read_close(g_filename, &len);
ret = syscall(__NR_init_module, map, len, options);
if (ret != 0) {
bb_perror_msg_and_die("cannot insert '%s': %s (%li)",
- filename, moderror(errno), ret);
+ ret = syscall(__NR_init_module, map, len, options);
+ if (ret != 0) {
+ bb_perror_msg_and_die("cannot insert '%s': %s (%li)",
+ g_filename, moderror(errno), ret);
}
+ }
+done:
+ if (g_filename && (g_filename != filename))
+ free(g_filename);
- if (init_module(map, len, options) != 0)
- bb_error_msg_and_die("cannot insert '%s': %s",
- filename, moderror(errno));
- return 0;
+ return ret;
}

View File

@@ -1,40 +0,0 @@
Index: busybox-1.8.1/editors/awk.c
===================================================================
--- busybox-1.8.1.orig/editors/awk.c 2007-11-10 23:53:16.950053243 +0100
+++ busybox-1.8.1/editors/awk.c 2007-11-10 23:53:23.422422084 +0100
@@ -446,7 +446,7 @@
tsplitter fsplitter, rsplitter;
};
#define G1 (ptr_to_globals[-1])
-#define G (*(struct globals2 *const)ptr_to_globals)
+#define G (*(struct globals2 *)ptr_to_globals)
/* For debug. nm --size-sort awk.o | grep -vi ' [tr] ' */
/* char G1size[sizeof(G1)]; - 0x6c */
/* char Gsize[sizeof(G)]; - 0x1cc */
Index: busybox-1.8.1/include/libbb.h
===================================================================
--- busybox-1.8.1.orig/include/libbb.h 2007-11-10 23:53:38.135260518 +0100
+++ busybox-1.8.1/include/libbb.h 2007-11-10 23:54:15.773405393 +0100
@@ -1111,8 +1111,10 @@
struct globals;
/* '*const' ptr makes gcc optimize code much better.
* Magic prevents ptr_to_globals from going into rodata.
- * If you want to assign a value, use PTR_TO_GLOBALS = xxx */
-extern struct globals *const ptr_to_globals;
+ * If you want to assign a value, use PTR_TO_GLOBALS = xxx
+ * unfortunately the above hack doesn't work properly :P
+ */
+extern struct globals *ptr_to_globals;
#define PTR_TO_GLOBALS (*(struct globals**)&ptr_to_globals)
Index: busybox-1.8.1/libbb/messages.c
===================================================================
--- busybox-1.8.1.orig/libbb/messages.c 2007-11-10 23:52:47.116353117 +0100
+++ busybox-1.8.1/libbb/messages.c 2007-11-10 23:52:57.752959269 +0100
@@ -74,4 +74,4 @@
struct globals;
/* Make it reside in R/W memory: */
-struct globals *const ptr_to_globals __attribute__ ((section (".data")));
+struct globals *ptr_to_globals __attribute__ ((section (".data")));

View File

@@ -1,8 +1,6 @@
Index: busybox-1.8.1/archival/Config.in
===================================================================
--- busybox-1.8.1.orig/archival/Config.in 2007-11-10 17:39:21.063504932 +0100
+++ busybox-1.8.1/archival/Config.in 2007-11-10 17:40:53.320762376 +0100
@@ -131,6 +131,15 @@
--- a/archival/Config.in
+++ b/archival/Config.in
@@ -139,6 +139,15 @@
gzip is used to compress files.
It's probably the most widely used UNIX compression program.
@@ -18,11 +16,9 @@ Index: busybox-1.8.1/archival/Config.in
config RPM2CPIO
bool "rpm2cpio"
default n
Index: busybox-1.8.1/archival/dpkg.c
===================================================================
--- busybox-1.8.1.orig/archival/dpkg.c 2007-11-10 17:39:21.071505389 +0100
+++ busybox-1.8.1/archival/dpkg.c 2007-11-10 17:40:53.320762376 +0100
@@ -1455,6 +1455,10 @@
--- a/archival/dpkg.c
+++ b/archival/dpkg.c
@@ -1482,6 +1482,10 @@
return ar_handle->sub_archive->buffer;
}
@@ -33,7 +29,7 @@ Index: busybox-1.8.1/archival/dpkg.c
static void data_extract_all_prefix(archive_handle_t *archive_handle)
{
char *name_ptr = archive_handle->file_header->name;
@@ -1466,6 +1470,8 @@
@@ -1493,6 +1497,8 @@
}
}
@@ -42,10 +38,8 @@ Index: busybox-1.8.1/archival/dpkg.c
static void unpack_package(deb_file_t *deb_file)
{
const char *package_name = name_hashtable[package_hashtable[deb_file->package]->name];
Index: busybox-1.8.1/archival/ipkg.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/ipkg.c 2007-11-10 17:41:16.866104145 +0100
--- /dev/null
+++ b/archival/ipkg.c
@@ -0,0 +1,27 @@
+/* ipkg.c - the itsy package management system
+
@@ -74,10 +68,8 @@ Index: busybox-1.8.1/archival/ipkg.c
+{
+ return ipkg_op(argc, argv);
+}
Index: busybox-1.8.1/archival/Kbuild
===================================================================
--- busybox-1.8.1.orig/archival/Kbuild 2007-11-10 17:39:21.083506071 +0100
+++ busybox-1.8.1/archival/Kbuild 2007-11-10 17:40:53.332763058 +0100
--- a/archival/Kbuild
+++ b/archival/Kbuild
@@ -16,6 +16,7 @@
lib-$(CONFIG_DPKG_DEB) += dpkg_deb.o
lib-$(CONFIG_GUNZIP) += bbunzip.o
@@ -86,10 +78,8 @@ Index: busybox-1.8.1/archival/Kbuild
lib-$(CONFIG_RPM2CPIO) += rpm2cpio.o
lib-$(CONFIG_RPM) += rpm.o
lib-$(CONFIG_TAR) += tar.o
Index: busybox-1.8.1/archival/libipkg/args.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/args.c 2007-11-10 17:40:53.336763287 +0100
--- /dev/null
+++ b/archival/libipkg/args.c
@@ -0,0 +1,242 @@
+/* args.c - parse command-line args
+
@@ -333,10 +323,8 @@ Index: busybox-1.8.1/archival/libipkg/args.c
+{
+ bb_error_msg("version %s\n", IPKG_VERSION);
+}
Index: busybox-1.8.1/archival/libipkg/args.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/args.h 2007-11-10 17:40:53.340763516 +0100
--- /dev/null
+++ b/archival/libipkg/args.h
@@ -0,0 +1,72 @@
+/* args.h - parse command-line args
+
@@ -410,10 +398,8 @@ Index: busybox-1.8.1/archival/libipkg/args.h
+void args_usage(char *complaint);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/conffile.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/conffile.c 2007-11-10 17:40:53.340763516 +0100
--- /dev/null
+++ b/archival/libipkg/conffile.c
@@ -0,0 +1,64 @@
+/* conffile.c - the itsy package management system
+
@@ -479,10 +465,8 @@ Index: busybox-1.8.1/archival/libipkg/conffile.c
+
+ return ret;
+}
Index: busybox-1.8.1/archival/libipkg/conffile.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/conffile.h 2007-11-10 17:40:53.340763516 +0100
--- /dev/null
+++ b/archival/libipkg/conffile.h
@@ -0,0 +1,30 @@
+/* conffile.h - the itsy package management system
+
@@ -514,10 +498,8 @@ Index: busybox-1.8.1/archival/libipkg/conffile.h
+
+#endif
+
Index: busybox-1.8.1/archival/libipkg/conffile_list.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/conffile_list.c 2007-11-10 17:40:53.340763516 +0100
--- /dev/null
+++ b/archival/libipkg/conffile_list.c
@@ -0,0 +1,47 @@
+/* conffile_list.c - the itsy package management system
+
@@ -566,10 +548,8 @@ Index: busybox-1.8.1/archival/libipkg/conffile_list.c
+ return nv_pair_list_pop(list);
+}
+
Index: busybox-1.8.1/archival/libipkg/conffile_list.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/conffile_list.h 2007-11-10 17:40:53.340763516 +0100
--- /dev/null
+++ b/archival/libipkg/conffile_list.h
@@ -0,0 +1,36 @@
+/* conffile_list.h - the itsy package management system
+
@@ -607,10 +587,8 @@ Index: busybox-1.8.1/archival/libipkg/conffile_list.h
+
+#endif
+
Index: busybox-1.8.1/archival/libipkg/file_util.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/file_util.c 2007-11-10 17:40:53.340763516 +0100
--- /dev/null
+++ b/archival/libipkg/file_util.c
@@ -0,0 +1,132 @@
+/* file_util.c - convenience routines for common stat operations
+
@@ -744,10 +722,8 @@ Index: busybox-1.8.1/archival/libipkg/file_util.c
+ return hash_file(file_name, HASH_MD5);
+}
+
Index: busybox-1.8.1/archival/libipkg/file_util.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/file_util.h 2007-11-10 17:40:53.344763742 +0100
--- /dev/null
+++ b/archival/libipkg/file_util.h
@@ -0,0 +1,29 @@
+/* file_util.h - convenience routines for common file operations
+
@@ -778,10 +754,8 @@ Index: busybox-1.8.1/archival/libipkg/file_util.h
+char *file_md5sum_alloc(const char *file_name);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/hash_table.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/hash_table.c 2007-11-10 17:40:53.344763742 +0100
--- /dev/null
+++ b/archival/libipkg/hash_table.c
@@ -0,0 +1,155 @@
+/* hash.c - hash tables for ipkg
+
@@ -938,10 +912,8 @@ Index: busybox-1.8.1/archival/libipkg/hash_table.c
+ }
+}
+
Index: busybox-1.8.1/archival/libipkg/hash_table.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/hash_table.h 2007-11-10 17:40:53.344763742 +0100
--- /dev/null
+++ b/archival/libipkg/hash_table.h
@@ -0,0 +1,44 @@
+/* hash.h - hash tables for ipkg
+
@@ -987,10 +959,8 @@ Index: busybox-1.8.1/archival/libipkg/hash_table.h
+void hash_table_foreach(hash_table_t *hash, void (*f)(const char *key, void *entry, void *data), void *data);
+
+#endif /* _HASH_TABLE_H_ */
Index: busybox-1.8.1/archival/libipkg/ipkg_cmd.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_cmd.c 2007-11-10 17:40:53.344763742 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_cmd.c
@@ -0,0 +1,1431 @@
+/* ipkg_cmd.c - the itsy package management system
+
@@ -2423,10 +2393,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_cmd.c
+}
+
+
Index: busybox-1.8.1/archival/libipkg/ipkg_cmd.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_cmd.h 2007-11-10 17:40:53.348763971 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_cmd.h
@@ -0,0 +1,46 @@
+/* ipkg_cmd.h - the itsy package management system
+
@@ -2474,10 +2442,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_cmd.h
+int pkg_mark_provides(pkg_t *pkg);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/ipkg_conf.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_conf.c 2007-11-10 17:40:53.348763971 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_conf.c
@@ -0,0 +1,711 @@
+/* ipkg_conf.c - the itsy package management system
+
@@ -3190,10 +3156,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_conf.c
+ sprintf_alloc(&root_filename, "%s%s", (conf->offline_root ? conf->offline_root : ""), filename);
+ return root_filename;
+}
Index: busybox-1.8.1/archival/libipkg/ipkg_conf.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_conf.h 2007-11-10 17:40:53.348763971 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_conf.h
@@ -0,0 +1,107 @@
+/* ipkg_conf.h - the itsy package management system
+
@@ -3302,10 +3266,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_conf.h
+char *root_filename_alloc(ipkg_conf_t *conf, char *filename);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/ipkg_configure.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_configure.c 2007-11-10 17:40:53.348763971 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_configure.c
@@ -0,0 +1,40 @@
+/* ipkg_configure.c - the itsy package management system
+
@@ -3347,10 +3309,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_configure.c
+ return 0;
+}
+
Index: busybox-1.8.1/archival/libipkg/ipkg_configure.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_configure.h 2007-11-10 17:40:53.348763971 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_configure.h
@@ -0,0 +1,25 @@
+/* ipkg_configure.h - the itsy package management system
+
@@ -3377,10 +3337,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_configure.h
+int ipkg_configure(ipkg_conf_t *ipkg_conf, pkg_t *pkg);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/ipkg_download.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_download.c 2007-11-10 17:40:53.352764197 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_download.c
@@ -0,0 +1,195 @@
+/* ipkg_download.c - the itsy package management system
+
@@ -3577,10 +3535,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_download.c
+ }
+ return 0;
+}
Index: busybox-1.8.1/archival/libipkg/ipkg_download.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_download.h 2007-11-10 17:40:53.352764197 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_download.h
@@ -0,0 +1,30 @@
+/* ipkg_download.h - the itsy package management system
+
@@ -3612,10 +3568,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_download.h
+int ipkg_prepare_url_for_install(ipkg_conf_t *conf, const char *url, char **namep);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/ipkg.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg.h 2007-11-10 17:40:53.352764197 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg.h
@@ -0,0 +1,74 @@
+/* ipkg.h - the itsy package management system
+
@@ -3691,10 +3645,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg.h
+extern ipkg_conf_t *global_conf;
+
+#endif
Index: busybox-1.8.1/archival/libipkg/ipkg_includes.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_includes.h 2007-11-10 17:40:53.352764197 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_includes.h
@@ -0,0 +1,79 @@
+#ifndef IPKG_INCLUDES_H
+#define IPKG_INCLUDES_H
@@ -3775,10 +3727,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_includes.h
+#endif
+
+#endif /* IPKG_INCLUDES_H */
Index: busybox-1.8.1/archival/libipkg/ipkg_install.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_install.c 2007-11-10 17:40:53.356764426 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_install.c
@@ -0,0 +1,1942 @@
+/* ipkg_install.c - the itsy package management system
+
@@ -5722,10 +5672,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_install.c
+}
+
+#endif
Index: busybox-1.8.1/archival/libipkg/ipkg_install.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_install.h 2007-11-10 17:40:53.356764426 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_install.h
@@ -0,0 +1,35 @@
+/* ipkg_install.h - the itsy package management system
+
@@ -5762,10 +5710,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_install.h
+int name_mark_dependencies_for_installation(ipkg_conf_t *conf, const char *pkg_name, pkg_vec_t *pkgs_needed);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/ipkg_message.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_message.c 2007-11-10 17:40:53.356764426 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_message.c
@@ -0,0 +1,61 @@
+/* ipkg_message.c - the itsy package management system
+
@@ -5828,10 +5774,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_message.c
+ }
+}
+#endif
Index: busybox-1.8.1/archival/libipkg/ipkg_message.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_message.h 2007-11-10 17:40:53.356764426 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_message.h
@@ -0,0 +1,32 @@
+/* ipkg_message.h - the itsy package management system
+
@@ -5865,10 +5809,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_message.h
+extern void ipkg_message(ipkg_conf_t *conf, message_level_t level, const char *fmt, ...);
+
+#endif /* _IPKG_MESSAGE_H_ */
Index: busybox-1.8.1/archival/libipkg/ipkg_remove.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_remove.c 2007-11-10 17:40:53.360764656 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_remove.c
@@ -0,0 +1,383 @@
+/* ipkg_remove.c - the itsy package management system
+
@@ -6253,10 +6195,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_remove.c
+
+ return 0;
+}
Index: busybox-1.8.1/archival/libipkg/ipkg_remove.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_remove.h 2007-11-10 17:40:53.360764656 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_remove.h
@@ -0,0 +1,33 @@
+/* ipkg_remove.h - the itsy package management system
+
@@ -6291,10 +6231,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_remove.h
+
+
+#endif
Index: busybox-1.8.1/archival/libipkg/ipkg_upgrade.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_upgrade.c 2007-11-10 17:40:53.360764656 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_upgrade.c
@@ -0,0 +1,77 @@
+/* ipkg_upgrade.c - the itsy package management system
+
@@ -6373,10 +6311,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_upgrade.c
+ new->state_flag |= SF_USER;
+ return ipkg_install_pkg(conf, new,1);
+}
Index: busybox-1.8.1/archival/libipkg/ipkg_upgrade.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_upgrade.h 2007-11-10 17:40:53.360764656 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_upgrade.h
@@ -0,0 +1,18 @@
+/* ipkg_upgrade.c - the itsy package management system
+
@@ -6396,10 +6332,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_upgrade.h
+#include "ipkg.h"
+
+int ipkg_upgrade_pkg(ipkg_conf_t *conf, pkg_t *old);
Index: busybox-1.8.1/archival/libipkg/ipkg_utils.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_utils.c 2007-11-10 17:40:53.360764656 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_utils.c
@@ -0,0 +1,181 @@
+/* ipkg_utils.c - the itsy package management system
+
@@ -6582,10 +6516,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_utils.c
+}
+
+
Index: busybox-1.8.1/archival/libipkg/ipkg_utils.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_utils.h 2007-11-10 17:40:53.360764656 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_utils.h
@@ -0,0 +1,29 @@
+/* ipkg_utils.h - the itsy package management system
+
@@ -6616,10 +6548,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_utils.h
+int line_is_blank(const char *line);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/Kbuild
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/Kbuild 2007-11-10 17:40:53.364764882 +0100
--- /dev/null
+++ b/archival/libipkg/Kbuild
@@ -0,0 +1,60 @@
+# Makefile for busybox
+#
@@ -6681,10 +6611,8 @@ Index: busybox-1.8.1/archival/libipkg/Kbuild
+IPKG_ARCH:=$(TARGET_ARCH)
+endif
+CFLAGS += -DIPKG_LIB -DIPKGLIBDIR="\"/usr/lib\"" -DHOST_CPU_STR="\"$(IPKG_ARCH)\""
Index: busybox-1.8.1/archival/libipkg/libipkg.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/libipkg.c 2007-11-10 17:40:53.364764882 +0100
--- /dev/null
+++ b/archival/libipkg/libipkg.c
@@ -0,0 +1,527 @@
+/* ipkglib.c - the itsy package management system
+
@@ -7213,10 +7141,8 @@ Index: busybox-1.8.1/archival/libipkg/libipkg.c
+}
+
+#endif /* IPKG_LIB */
Index: busybox-1.8.1/archival/libipkg/libipkg.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/libipkg.h 2007-11-10 17:40:53.364764882 +0100
--- /dev/null
+++ b/archival/libipkg/libipkg.h
@@ -0,0 +1,88 @@
+/* ipkglib.h - the itsy package management system
+
@@ -7306,10 +7232,8 @@ Index: busybox-1.8.1/archival/libipkg/libipkg.h
+
+
+#endif
Index: busybox-1.8.1/archival/libipkg/nv_pair.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/nv_pair.c 2007-11-10 17:40:53.364764882 +0100
--- /dev/null
+++ b/archival/libipkg/nv_pair.c
@@ -0,0 +1,40 @@
+/* nv_pair.c - the itsy package management system
+
@@ -7351,10 +7275,8 @@ Index: busybox-1.8.1/archival/libipkg/nv_pair.c
+}
+
+
Index: busybox-1.8.1/archival/libipkg/nv_pair.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/nv_pair.h 2007-11-10 17:40:53.372765337 +0100
--- /dev/null
+++ b/archival/libipkg/nv_pair.h
@@ -0,0 +1,32 @@
+/* nv_pair.h - the itsy package management system
+
@@ -7388,10 +7310,8 @@ Index: busybox-1.8.1/archival/libipkg/nv_pair.h
+
+#endif
+
Index: busybox-1.8.1/archival/libipkg/nv_pair_list.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/nv_pair_list.c 2007-11-10 17:40:53.372765337 +0100
--- /dev/null
+++ b/archival/libipkg/nv_pair_list.c
@@ -0,0 +1,98 @@
+/* nv_pair_list.c - the itsy package management system
+
@@ -7491,10 +7411,8 @@ Index: busybox-1.8.1/archival/libipkg/nv_pair_list.c
+ }
+ return NULL;
+}
Index: busybox-1.8.1/archival/libipkg/nv_pair_list.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/nv_pair_list.h 2007-11-10 17:40:53.372765337 +0100
--- /dev/null
+++ b/archival/libipkg/nv_pair_list.h
@@ -0,0 +1,60 @@
+/* nv_pair_list.h - the itsy package management system
+
@@ -7556,10 +7474,8 @@ Index: busybox-1.8.1/archival/libipkg/nv_pair_list.h
+
+#endif
+
Index: busybox-1.8.1/archival/libipkg/pkg.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg.c 2007-11-10 17:40:53.376765566 +0100
--- /dev/null
+++ b/archival/libipkg/pkg.c
@@ -0,0 +1,1747 @@
+/* pkg.c - the itsy package management system
+
@@ -9308,10 +9224,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg.c
+ }
+ return 0;
+}
Index: busybox-1.8.1/archival/libipkg/pkg_depends.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_depends.c 2007-11-10 17:40:53.376765566 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_depends.c
@@ -0,0 +1,1031 @@
+/* pkg_depends.c - the itsy package management system
+
@@ -10344,10 +10258,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_depends.c
+
+ return 0;
+}
Index: busybox-1.8.1/archival/libipkg/pkg_depends.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_depends.h 2007-11-10 17:40:53.376765566 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_depends.h
@@ -0,0 +1,105 @@
+/* pkg_depends.h - the itsy package management system
+
@@ -10454,10 +10366,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_depends.h
+int pkg_dependence_satisfied(ipkg_conf_t *conf, depend_t *depend);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/pkg_dest.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_dest.c 2007-11-10 17:40:53.376765566 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_dest.c
@@ -0,0 +1,92 @@
+/* pkg_dest.c - the itsy package management system
+
@@ -10551,10 +10461,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_dest.c
+
+ dest->root_dir = NULL;
+}
Index: busybox-1.8.1/archival/libipkg/pkg_dest.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_dest.h 2007-11-10 17:40:53.380765796 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_dest.h
@@ -0,0 +1,38 @@
+/* pkg_dest.h - the itsy package management system
+
@@ -10594,10 +10502,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_dest.h
+
+#endif
+
Index: busybox-1.8.1/archival/libipkg/pkg_dest_list.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_dest_list.c 2007-11-10 17:40:53.380765796 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_dest_list.c
@@ -0,0 +1,85 @@
+/* pkg_dest_list.c - the itsy package management system
+
@@ -10684,10 +10590,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_dest_list.c
+{
+ return (pkg_dest_list_elt_t *) void_list_pop((void_list_t *) list);
+}
Index: busybox-1.8.1/archival/libipkg/pkg_dest_list.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_dest_list.h 2007-11-10 17:40:53.380765796 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_dest_list.h
@@ -0,0 +1,50 @@
+/* pkg_dest_list.h - the itsy package management system
+
@@ -10739,10 +10643,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_dest_list.h
+
+#endif
+
Index: busybox-1.8.1/archival/libipkg/pkg_extract.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_extract.c 2007-11-10 17:40:53.380765796 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_extract.c
@@ -0,0 +1,224 @@
+/* pkg_extract.c - the itsy package management system
+
@@ -10968,10 +10870,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_extract.c
+
+ return 0;
+}
Index: busybox-1.8.1/archival/libipkg/pkg_extract.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_extract.h 2007-11-10 17:40:53.380765796 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_extract.h
@@ -0,0 +1,32 @@
+/* pkg_extract.c - the itsy package management system
+
@@ -11005,10 +10905,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_extract.h
+int pkg_extract_data_file_names_to_stream(pkg_t *pkg, FILE *file);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/pkg.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg.h 2007-11-10 17:40:53.384766022 +0100
--- /dev/null
+++ b/archival/libipkg/pkg.h
@@ -0,0 +1,229 @@
+/* pkg.h - the itsy package management system
+
@@ -11239,10 +11137,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg.h
+int pkg_write_changed_filelists(ipkg_conf_t *conf);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/pkg_hash.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_hash.c 2007-11-10 17:40:53.388766251 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_hash.c
@@ -0,0 +1,616 @@
+/* ipkg_hash.c - the itsy package management system
+
@@ -11860,10 +11756,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_hash.c
+}
+
+
Index: busybox-1.8.1/archival/libipkg/pkg_hash.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_hash.h 2007-11-10 17:40:53.388766251 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_hash.h
@@ -0,0 +1,61 @@
+/* pkg_hash.h - the itsy package management system
+
@@ -11926,10 +11820,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_hash.h
+
+#endif
+
Index: busybox-1.8.1/archival/libipkg/pkg_parse.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_parse.c 2007-11-10 17:40:53.388766251 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_parse.c
@@ -0,0 +1,366 @@
+/* pkg_parse.c - the itsy package management system
+
@@ -12297,10 +12189,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_parse.c
+
+ return 0;
+}
Index: busybox-1.8.1/archival/libipkg/pkg_parse.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_parse.h 2007-11-10 17:40:53.392766477 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_parse.h
@@ -0,0 +1,31 @@
+/* pkg_parse.h - the itsy package management system
+
@@ -12333,10 +12223,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_parse.h
+int pkg_valorize_other_field(pkg_t *pkg, char ***raw);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/pkg_src.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_src.c 2007-11-10 17:40:53.392766477 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_src.c
@@ -0,0 +1,43 @@
+/* pkg_src.c - the itsy package management system
+
@@ -12381,10 +12269,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_src.c
+}
+
+
Index: busybox-1.8.1/archival/libipkg/pkg_src.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_src.h 2007-11-10 17:40:53.392766477 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_src.h
@@ -0,0 +1,34 @@
+/* pkg_src.h - the itsy package management system
+
@@ -12420,10 +12306,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_src.h
+void pkg_src_deinit(pkg_src_t *src);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/pkg_src_list.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_src_list.c 2007-11-10 17:40:53.392766477 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_src_list.c
@@ -0,0 +1,75 @@
+/* pkg_src_list.c - the itsy package management system
+
@@ -12500,10 +12384,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_src_list.c
+{
+ return (pkg_src_list_elt_t *) void_list_pop((void_list_t *) list);
+}
Index: busybox-1.8.1/archival/libipkg/pkg_src_list.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_src_list.h 2007-11-10 17:40:53.396766706 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_src_list.h
@@ -0,0 +1,57 @@
+/* pkg_src_list.h - the itsy package management system
+
@@ -12562,10 +12444,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_src_list.h
+
+#endif
+
Index: busybox-1.8.1/archival/libipkg/pkg_vec.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_vec.c 2007-11-10 17:40:53.396766706 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_vec.c
@@ -0,0 +1,230 @@
+/* pkg_vec.c - the itsy package management system
+
@@ -12797,10 +12677,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_vec.c
+ qsort(vec->pkgs, vec->len, sizeof(pkg_t *), (compare_fcn_t)compar);
+}
+
Index: busybox-1.8.1/archival/libipkg/pkg_vec.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_vec.h 2007-11-10 17:40:53.396766706 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_vec.h
@@ -0,0 +1,64 @@
+/* pkg_vec.h - the itsy package management system
+
@@ -12866,10 +12744,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_vec.h
+void abstract_pkg_vec_sort(pkg_vec_t *vec, int (*compar)(abstract_pkg_t *, abstract_pkg_t *));
+#endif
+
Index: busybox-1.8.1/archival/libipkg/sprintf_alloc.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/sprintf_alloc.h 2007-11-10 17:40:53.396766706 +0100
--- /dev/null
+++ b/archival/libipkg/sprintf_alloc.h
@@ -0,0 +1,25 @@
+/* sprintf_alloca.c -- like sprintf with memory allocation
+
@@ -12896,10 +12772,8 @@ Index: busybox-1.8.1/archival/libipkg/sprintf_alloc.h
+#define sprintf_alloc(str, fmt, args...) *str = xasprintf(fmt, ## args)
+
+#endif
Index: busybox-1.8.1/archival/libipkg/str_list.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/str_list.c 2007-11-10 17:40:53.396766706 +0100
--- /dev/null
+++ b/archival/libipkg/str_list.c
@@ -0,0 +1,76 @@
+/* str_list.c - the itsy package management system
+
@@ -12977,10 +12851,8 @@ Index: busybox-1.8.1/archival/libipkg/str_list.c
+ (void *)target_str,
+ (void_list_cmp_t)strcmp);
+}
Index: busybox-1.8.1/archival/libipkg/str_list.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/str_list.h 2007-11-10 17:40:53.400766935 +0100
--- /dev/null
+++ b/archival/libipkg/str_list.h
@@ -0,0 +1,51 @@
+/* str_list.h - the itsy package management system
+
@@ -13033,10 +12905,8 @@ Index: busybox-1.8.1/archival/libipkg/str_list.h
+char *str_list_remove_elt(str_list_t *list, const char *target_str);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/str_util.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/str_util.c 2007-11-10 17:40:53.400766935 +0100
--- /dev/null
+++ b/archival/libipkg/str_util.c
@@ -0,0 +1,63 @@
+/* str_utils.c - the itsy package management system
+
@@ -13101,10 +12971,8 @@ Index: busybox-1.8.1/archival/libipkg/str_util.c
+ return str ? strdup(str) : NULL;
+}
+
Index: busybox-1.8.1/archival/libipkg/str_util.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/str_util.h 2007-11-10 17:40:53.400766935 +0100
--- /dev/null
+++ b/archival/libipkg/str_util.h
@@ -0,0 +1,27 @@
+/* str_utils.h - the itsy package management system
+
@@ -13133,10 +13001,8 @@ Index: busybox-1.8.1/archival/libipkg/str_util.h
+char *str_dup_safe(const char *str);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/user.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/user.c 2007-11-10 17:40:53.400766935 +0100
--- /dev/null
+++ b/archival/libipkg/user.c
@@ -0,0 +1,58 @@
+/* user.c - the itsy package management system
+
@@ -13196,10 +13062,8 @@ Index: busybox-1.8.1/archival/libipkg/user.c
+
+ return response;
+}
Index: busybox-1.8.1/archival/libipkg/user.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/user.h 2007-11-10 17:40:53.400766935 +0100
--- /dev/null
+++ b/archival/libipkg/user.h
@@ -0,0 +1,23 @@
+/* user.c - the itsy package management system
+
@@ -13224,10 +13088,8 @@ Index: busybox-1.8.1/archival/libipkg/user.h
+
+char *get_user_response(const char *format, ...);
+
Index: busybox-1.8.1/archival/libipkg/void_list.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/void_list.c 2007-11-10 17:40:53.404767161 +0100
--- /dev/null
+++ b/archival/libipkg/void_list.c
@@ -0,0 +1,194 @@
+/* void_list.c - the itsy package management system
+
@@ -13423,10 +13285,8 @@ Index: busybox-1.8.1/archival/libipkg/void_list.c
+ else
+ return NULL;
+}
Index: busybox-1.8.1/archival/libipkg/void_list.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/void_list.h 2007-11-10 17:40:53.404767161 +0100
--- /dev/null
+++ b/archival/libipkg/void_list.h
@@ -0,0 +1,59 @@
+/* void_list.h - the itsy package management system
+
@@ -13487,10 +13347,8 @@ Index: busybox-1.8.1/archival/libipkg/void_list.h
+void *void_list_remove_elt(void_list_t *list, const void *target_data, void_list_cmp_t cmp);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/xsystem.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/xsystem.c 2007-11-10 17:40:53.404767161 +0100
--- /dev/null
+++ b/archival/libipkg/xsystem.c
@@ -0,0 +1,64 @@
+/* xsystem.c - system(3) with error messages
+
@@ -13556,10 +13414,8 @@ Index: busybox-1.8.1/archival/libipkg/xsystem.c
+ return -1;
+}
+
Index: busybox-1.8.1/archival/libipkg/xsystem.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/xsystem.h 2007-11-10 17:40:53.404767161 +0100
--- /dev/null
+++ b/archival/libipkg/xsystem.h
@@ -0,0 +1,34 @@
+/* xsystem.h - system(3) with error messages
+
@@ -13595,11 +13451,9 @@ Index: busybox-1.8.1/archival/libipkg/xsystem.h
+
+#endif
+
Index: busybox-1.8.1/archival/libunarchive/data_extract_all.c
===================================================================
--- busybox-1.8.1.orig/archival/libunarchive/data_extract_all.c 2007-11-10 17:39:21.471528185 +0100
+++ busybox-1.8.1/archival/libunarchive/data_extract_all.c 2007-11-10 17:40:53.404767161 +0100
@@ -129,3 +129,17 @@
--- a/archival/libunarchive/data_extract_all.c
+++ b/archival/libunarchive/data_extract_all.c
@@ -144,3 +144,17 @@
}
}
}
@@ -13617,10 +13471,8 @@ Index: busybox-1.8.1/archival/libunarchive/data_extract_all.c
+ }
+}
+
Index: busybox-1.8.1/archival/libunarchive/Kbuild
===================================================================
--- busybox-1.8.1.orig/archival/libunarchive/Kbuild 2007-11-10 17:39:21.479528641 +0100
+++ busybox-1.8.1/archival/libunarchive/Kbuild 2007-11-10 17:40:53.408767391 +0100
--- a/archival/libunarchive/Kbuild
+++ b/archival/libunarchive/Kbuild
@@ -54,6 +54,7 @@
lib-$(CONFIG_FEATURE_DEB_TAR_LZMA) += decompress_unlzma.o get_header_tar_lzma.o
lib-$(CONFIG_GUNZIP) += decompress_unzip.o
@@ -13629,11 +13481,9 @@ Index: busybox-1.8.1/archival/libunarchive/Kbuild
lib-$(CONFIG_RPM2CPIO) += decompress_unzip.o get_header_cpio.o
lib-$(CONFIG_RPM) += decompress_unzip.o get_header_cpio.o
lib-$(CONFIG_FEATURE_RPM_BZ2) += decompress_bunzip2.o
Index: busybox-1.8.1/include/applets.h
===================================================================
--- busybox-1.8.1.orig/include/applets.h 2007-11-10 17:39:21.487529096 +0100
+++ busybox-1.8.1/include/applets.h 2007-11-10 17:40:53.408767391 +0100
@@ -198,6 +198,7 @@
--- a/include/applets.h
+++ b/include/applets.h
@@ -200,6 +200,7 @@
USE_IPCALC(APPLET(ipcalc, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_IPCRM(APPLET(ipcrm, _BB_DIR_USR_BIN, _BB_SUID_ALWAYS))
USE_IPCS(APPLET(ipcs, _BB_DIR_USR_BIN, _BB_SUID_ALWAYS))
@@ -13641,11 +13491,9 @@ Index: busybox-1.8.1/include/applets.h
USE_IPLINK(APPLET(iplink, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_IPROUTE(APPLET(iproute, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_IPRULE(APPLET(iprule, _BB_DIR_BIN, _BB_SUID_NEVER))
Index: busybox-1.8.1/include/unarchive.h
===================================================================
--- busybox-1.8.1.orig/include/unarchive.h 2007-11-10 17:39:21.495529554 +0100
+++ busybox-1.8.1/include/unarchive.h 2007-11-10 17:40:53.408767391 +0100
@@ -74,6 +74,7 @@
--- a/include/unarchive.h
+++ b/include/unarchive.h
@@ -82,6 +82,7 @@
extern void data_skip(archive_handle_t *archive_handle);
extern void data_extract_all(archive_handle_t *archive_handle);
@@ -13653,11 +13501,9 @@ Index: busybox-1.8.1/include/unarchive.h
extern void data_extract_to_stdout(archive_handle_t *archive_handle);
extern void data_extract_to_buffer(archive_handle_t *archive_handle);
Index: busybox-1.8.1/include/usage.h
===================================================================
--- busybox-1.8.1.orig/include/usage.h 2007-11-10 17:40:53.208755993 +0100
+++ busybox-1.8.1/include/usage.h 2007-11-10 17:40:53.412767617 +0100
@@ -1294,6 +1294,82 @@
--- a/include/usage.h
+++ b/include/usage.h
@@ -1425,6 +1425,82 @@
"$ ls -la /tmp/busybox*\n" \
"-rw-rw-r-- 1 andersen andersen 554058 Apr 14 17:49 /tmp/busybox.tar.gz\n"
@@ -13739,12 +13585,10 @@ Index: busybox-1.8.1/include/usage.h
+
#define halt_trivial_usage \
"[-d delay] [-n] [-f]"
#define halt_full_usage \
Index: busybox-1.8.1/Makefile
===================================================================
--- busybox-1.8.1.orig/Makefile 2007-11-10 17:39:21.511530465 +0100
+++ busybox-1.8.1/Makefile 2007-11-10 17:40:53.412767617 +0100
@@ -428,6 +428,7 @@
#define halt_full_usage "\n\n" \
--- a/Makefile
+++ b/Makefile
@@ -444,6 +444,7 @@
libs-y := \
archival/ \

View File

@@ -1,8 +1,25 @@
Index: busybox-1.8.1/coreutils/md5_sha1_sum.c
===================================================================
--- busybox-1.8.1.orig/coreutils/md5_sha1_sum.c 2007-11-10 02:40:51.000000000 +0100
+++ busybox-1.8.1/coreutils/md5_sha1_sum.c 2007-11-10 17:05:59.957468399 +0100
@@ -8,75 +8,10 @@
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -1211,6 +1211,7 @@
extern const char bb_uuenc_tbl_std[];
void bb_uuencode(char *store, const void *s, int length, const char *tbl);
+typedef enum { HASH_SHA1, HASH_MD5 } hash_algo_t;
typedef struct sha1_ctx_t {
uint32_t count[2];
uint32_t hash[5];
@@ -1232,6 +1233,8 @@
void md5_begin(md5_ctx_t *ctx);
void md5_hash(const void *data, size_t length, md5_ctx_t *ctx);
void *md5_end(void *resbuf, md5_ctx_t *ctx);
+unsigned char *hash_bin_to_hex(unsigned char *hash_value, unsigned hash_length);
+uint8_t *hash_file(const char *filename, hash_algo_t hash_algo);
uint32_t *crc32_filltable(uint32_t *tbl256, int endian);
--- a/coreutils/md5_sha1_sum.c
+++ b/coreutils/md5_sha1_sum.c
@@ -8,72 +8,10 @@
#include "libbb.h"
@@ -19,7 +36,7 @@ Index: busybox-1.8.1/coreutils/md5_sha1_sum.c
- /* xzalloc zero-terminates */
- char *hex_value = xzalloc((hash_length * 2) + 1);
- bin2hex(hex_value, (char*)hash_value, hash_length);
- return hex_value;
- return (unsigned char *)hex_value;
-}
-
-static uint8_t *hash_file(const char *filename, hash_algo_t hash_algo)
@@ -34,12 +51,9 @@ Index: busybox-1.8.1/coreutils/md5_sha1_sum.c
- void (*update)(const void*, size_t, void*);
- void (*final)(void*, void*);
-
- src_fd = STDIN_FILENO;
- if (NOT_LONE_DASH(filename)) {
- src_fd = open_or_warn(filename, O_RDONLY);
- if (src_fd < 0) {
- return NULL;
- }
- src_fd = open_or_warn_stdin(filename);
- if (src_fd < 0) {
- return NULL;
- }
-
- /* figure specific hash algorithims */
@@ -76,46 +90,21 @@ Index: busybox-1.8.1/coreutils/md5_sha1_sum.c
-}
-
int md5_sha1_sum_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int md5_sha1_sum_main(int argc, char **argv)
int md5_sha1_sum_main(int argc ATTRIBUTE_UNUSED, char **argv)
{
Index: busybox-1.8.1/include/libbb.h
===================================================================
--- busybox-1.8.1.orig/include/libbb.h 2007-11-10 16:55:07.048261223 +0100
+++ busybox-1.8.1/include/libbb.h 2007-11-10 17:04:07.543062264 +0100
@@ -1022,6 +1022,7 @@
extern const char bb_uuenc_tbl_std[];
void bb_uuencode(char *store, const void *s, int length, const char *tbl);
+typedef enum { HASH_SHA1, HASH_MD5 } hash_algo_t;
typedef struct sha1_ctx_t {
uint32_t count[2];
uint32_t hash[5];
@@ -1043,6 +1044,8 @@
void md5_begin(md5_ctx_t *ctx);
void md5_hash(const void *data, size_t length, md5_ctx_t *ctx);
void *md5_end(void *resbuf, md5_ctx_t *ctx);
+unsigned char *hash_bin_to_hex(unsigned char *hash_value, unsigned hash_length);
+uint8_t *hash_file(const char *filename, hash_algo_t hash_algo);
uint32_t *crc32_filltable(uint32_t *tbl256, int endian);
Index: busybox-1.8.1/libbb/Kbuild
===================================================================
--- busybox-1.8.1.orig/libbb/Kbuild 2007-11-10 02:40:52.000000000 +0100
+++ busybox-1.8.1/libbb/Kbuild 2007-11-10 17:04:07.547062497 +0100
@@ -39,6 +39,7 @@
--- a/libbb/Kbuild
+++ b/libbb/Kbuild
@@ -40,6 +40,7 @@
lib-y += get_last_path_component.o
lib-y += get_line_from_file.o
lib-y += getopt32.o
+lib-y += hash.o
lib-y += getpty.o
lib-y += herror_msg.o
lib-y += herror_msg_and_die.o
lib-y += human_readable.o
Index: busybox-1.8.1/libbb/hash.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/libbb/hash.c 2007-11-10 17:04:07.551062729 +0100
@@ -0,0 +1,81 @@
--- /dev/null
+++ b/libbb/hash.c
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2003 Glenn L. McGrath
+ * Copyright (C) 2003-2004 Erik Andersen
@@ -155,12 +144,9 @@ Index: busybox-1.8.1/libbb/hash.c
+ void (*update)(const void*, size_t, void*);
+ void (*final)(void*, void*);
+
+ src_fd = STDIN_FILENO;
+ if (NOT_LONE_DASH(filename)) {
+ src_fd = open_or_warn(filename, O_RDONLY);
+ if (src_fd < 0) {
+ return NULL;
+ }
+ src_fd = open_or_warn_stdin(filename);
+ if (src_fd < 0) {
+ return NULL;
+ }
+
+ /* figure specific hash algorithims */

View File

@@ -1,8 +1,6 @@
Index: busybox-1.8.1/editors/awk.c
===================================================================
--- busybox-1.8.1.orig/editors/awk.c 2007-11-10 16:55:07.032260312 +0100
+++ busybox-1.8.1/editors/awk.c 2007-11-10 17:07:04.493146078 +0100
@@ -33,6 +33,11 @@
--- a/editors/awk.c
+++ b/editors/awk.c
@@ -32,6 +32,11 @@
/* these flags are static, don't change them when value is changed */
#define VF_DONTTOUCH (VF_ARRAY | VF_SPECIAL | VF_WALK | VF_CHILD | VF_DIRTY)
@@ -14,23 +12,22 @@ Index: busybox-1.8.1/editors/awk.c
/* Variable */
typedef struct var_s {
unsigned type; /* flags */
@@ -54,9 +59,14 @@
@@ -53,9 +58,14 @@
} chain;
/* Function */
+typedef var *(*awk_cfunc)(var *res, var *args, int nargs);
typedef struct func_s {
unsigned nargs;
- struct chain_s body;
+ enum { AWKFUNC, CFUNC } type;
+ union {
+ awk_cfunc cfunc;
+ struct chain_s body;
struct chain_s body;
+ } x;
} func;
/* I/O stream */
@@ -1400,7 +1410,8 @@
@@ -1395,7 +1405,8 @@
next_token(TC_FUNCTION);
g_pos++;
f = newfunc(t_string);
@@ -40,7 +37,7 @@ Index: busybox-1.8.1/editors/awk.c
f->nargs = 0;
while (next_token(TC_VARIABLE | TC_SEQTERM) & TC_VARIABLE) {
v = findvar(ahash, t_string);
@@ -1409,7 +1420,7 @@
@@ -1404,7 +1415,7 @@
if (next_token(TC_COMMA | TC_SEQTERM) & TC_SEQTERM)
break;
}
@@ -49,7 +46,7 @@ Index: busybox-1.8.1/editors/awk.c
chain_group();
clear_array(ahash);
@@ -2372,7 +2383,8 @@
@@ -2367,7 +2378,8 @@
break;
case XC( OC_FUNC ):
@@ -59,7 +56,7 @@ Index: busybox-1.8.1/editors/awk.c
syntax_error(EMSG_UNDEF_FUNC);
X.v = R.v = nvalloc(op->r.f->nargs+1);
@@ -2389,7 +2401,10 @@
@@ -2384,7 +2396,10 @@
fnargs = X.v;
L.s = g_progname;
@@ -71,7 +68,7 @@ Index: busybox-1.8.1/editors/awk.c
g_progname = L.s;
nvfree(fnargs);
@@ -2753,6 +2768,12 @@
@@ -2748,6 +2763,12 @@
}
int awk_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
@@ -84,7 +81,7 @@ Index: busybox-1.8.1/editors/awk.c
int awk_main(int argc, char **argv)
{
unsigned opt;
@@ -2817,6 +2838,11 @@
@@ -2812,6 +2833,11 @@
*s1 = '=';
}
}
@@ -93,13 +90,11 @@ Index: busybox-1.8.1/editors/awk.c
+ do_awx(argc, argv);
+#endif
+
opt_complementary = "v::f::";
opt = getopt32(argv, "F:v:f:W:", &opt_F, &opt_v, &opt_f, &opt_W);
opt_complementary = "v::f::"; /* -v and -f can occur multiple times */
opt = getopt32(argv, "F:v:f:W:", &opt_F, &list_v, &list_f, &opt_W);
argv += optind;
Index: busybox-1.8.1/editors/awx.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/editors/awx.c 2007-11-10 17:06:19.258568308 +0100
--- /dev/null
+++ b/editors/awx.c
@@ -0,0 +1,636 @@
+/*
+ * awk web extension
@@ -737,10 +732,8 @@ Index: busybox-1.8.1/editors/awx.c
+ return awk_main(argc, argv);
+}
+
Index: busybox-1.8.1/editors/awx_parser.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/editors/awx_parser.h 2007-11-10 17:06:19.266568760 +0100
--- /dev/null
+++ b/editors/awx_parser.h
@@ -0,0 +1,38 @@
+#ifndef __TEMPLATE_PARSER_H
+#define __TEMPLATE_PARSER_H
@@ -780,10 +773,8 @@ Index: busybox-1.8.1/editors/awx_parser.h
+void free_template(struct template_cb *cb, struct template_element *e);
+
+#endif
Index: busybox-1.8.1/editors/awx_parser.l
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/editors/awx_parser.l 2007-11-10 17:06:19.270568989 +0100
--- /dev/null
+++ b/editors/awx_parser.l
@@ -0,0 +1,302 @@
+%{
+#include <stdio.h>
@@ -1087,10 +1078,8 @@ Index: busybox-1.8.1/editors/awx_parser.l
+ free(e);
+ return free_template(cb, next);
+}
Index: busybox-1.8.1/editors/Config.in
===================================================================
--- busybox-1.8.1.orig/editors/Config.in 2007-11-10 02:40:54.000000000 +0100
+++ busybox-1.8.1/editors/Config.in 2007-11-10 17:06:19.274569218 +0100
--- a/editors/Config.in
+++ b/editors/Config.in
@@ -12,6 +12,13 @@
Awk is used as a pattern scanning and processing language. This is
the BusyBox implementation of that programming language.
@@ -1105,10 +1094,8 @@ Index: busybox-1.8.1/editors/Config.in
config FEATURE_AWK_MATH
bool "Enable math functions (requires libm)"
default y
Index: busybox-1.8.1/editors/Kbuild
===================================================================
--- busybox-1.8.1.orig/editors/Kbuild 2007-11-10 02:40:54.000000000 +0100
+++ busybox-1.8.1/editors/Kbuild 2007-11-10 17:06:19.278569448 +0100
--- a/editors/Kbuild
+++ b/editors/Kbuild
@@ -12,3 +12,12 @@
lib-$(CONFIG_PATCH) += patch.o
lib-$(CONFIG_SED) += sed.o
@@ -1122,22 +1109,30 @@ Index: busybox-1.8.1/editors/Kbuild
+editors/awx_parser.o: editors/awx_parser.c FORCE
+ $(call cmd,force_checksrc)
+ $(call if_changed_rule,cc_o_c)
Index: busybox-1.8.1/include/applets.h
===================================================================
--- busybox-1.8.1.orig/include/applets.h 2007-11-10 17:03:38.957433264 +0100
+++ busybox-1.8.1/include/applets.h 2007-11-10 17:06:19.282569674 +0100
@@ -83,6 +83,7 @@
--- a/include/applets.h
+++ b/include/applets.h
@@ -77,6 +77,7 @@
USE_ARPING(APPLET(arping, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
USE_ASH(APPLET_NOUSAGE(ash, ash, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_ASH(APPLET(ash, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_AWK(APPLET_NOEXEC(awk, awk, _BB_DIR_USR_BIN, _BB_SUID_NEVER, awk))
+USE_AWX(APPLET_NOUSAGE(awx, awx, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
+USE_AWK(APPLET_ODDNAME(awx, awk, _BB_DIR_USR_BIN, _BB_SUID_NEVER, awx))
USE_BASENAME(APPLET_NOFORK(basename, basename, _BB_DIR_USR_BIN, _BB_SUID_NEVER, basename))
USE_BBCONFIG(APPLET(bbconfig, _BB_DIR_BIN, _BB_SUID_NEVER))
//USE_BBSH(APPLET(bbsh, _BB_DIR_BIN, _BB_SUID_NEVER))
Index: busybox-1.8.1/include/cgi.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/include/cgi.h 2007-11-10 17:06:19.282569674 +0100
--- a/include/usage.h
+++ b/include/usage.h
@@ -114,6 +114,9 @@
"\n -F sep Use sep as field separator" \
"\n -f file Read program from file" \
+#define awx_trivial_usage NOUSAGE_STR
+#define awx_full_usage ""
+
#define basename_trivial_usage \
"FILE [SUFFIX]"
#define basename_full_usage "\n\n" \
--- /dev/null
+++ b/include/cgi.h
@@ -0,0 +1,8 @@
+#ifndef CGI_H
+#define CGI_H
@@ -1147,10 +1142,8 @@ Index: busybox-1.8.1/include/cgi.h
+int cgi_init(var_handler);
+
+#endif
Index: busybox-1.8.1/libbb/cgi.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/libbb/cgi.c 2007-11-10 17:06:19.282569674 +0100
--- /dev/null
+++ b/libbb/cgi.c
@@ -0,0 +1,457 @@
+/* --------------------------------------------------------------------------
+ * functions for processing cgi form data
@@ -1609,11 +1602,9 @@ Index: busybox-1.8.1/libbb/cgi.c
+
+ return retval;
+}
Index: busybox-1.8.1/libbb/Kbuild
===================================================================
--- busybox-1.8.1.orig/libbb/Kbuild 2007-11-10 17:04:07.547062497 +0100
+++ busybox-1.8.1/libbb/Kbuild 2007-11-10 17:06:19.282569674 +0100
@@ -101,6 +101,7 @@
--- a/libbb/Kbuild
+++ b/libbb/Kbuild
@@ -112,6 +112,7 @@
lib-y += xreadlink.o
# conditionally compiled objects:

View File

@@ -1,7 +1,5 @@
Index: busybox-1.7.2/archival/libipkg/ipkg_conf.c
===================================================================
--- busybox-1.7.2.orig/archival/libipkg/ipkg_conf.c 2007-10-30 15:38:45.000000000 -0500
+++ busybox-1.7.2/archival/libipkg/ipkg_conf.c 2007-10-30 15:38:47.000000000 -0500
--- a/archival/libipkg/ipkg_conf.c
+++ b/archival/libipkg/ipkg_conf.c
@@ -66,6 +66,8 @@
{ "offline_root_pre_script_cmd", IPKG_OPT_TYPE_STRING, &conf->offline_root_pre_script_cmd },
{ "proxy_passwd", IPKG_OPT_TYPE_STRING, &conf->proxy_passwd },
@@ -21,10 +19,8 @@ Index: busybox-1.7.2/archival/libipkg/ipkg_conf.c
pkg_hash_init("pkg-hash", &conf->pkg_hash, IPKG_CONF_DEFAULT_HASH_LEN);
hash_table_init("file-hash", &conf->file_hash, IPKG_CONF_DEFAULT_HASH_LEN);
hash_table_init("obs-file-hash", &conf->obs_file_hash, IPKG_CONF_DEFAULT_HASH_LEN);
Index: busybox-1.7.2/archival/libipkg/ipkg_conf.h
===================================================================
--- busybox-1.7.2.orig/archival/libipkg/ipkg_conf.h 2007-10-30 15:38:45.000000000 -0500
+++ busybox-1.7.2/archival/libipkg/ipkg_conf.h 2007-10-30 15:38:47.000000000 -0500
--- a/archival/libipkg/ipkg_conf.h
+++ b/archival/libipkg/ipkg_conf.h
@@ -79,6 +79,10 @@
char *proxy_user;
char *proxy_passwd;
@@ -36,10 +32,8 @@ Index: busybox-1.7.2/archival/libipkg/ipkg_conf.h
hash_table_t pkg_hash;
hash_table_t file_hash;
hash_table_t obs_file_hash;
Index: busybox-1.7.2/archival/libipkg/ipkg_download.c
===================================================================
--- busybox-1.7.2.orig/archival/libipkg/ipkg_download.c 2007-10-30 15:38:45.000000000 -0500
+++ busybox-1.7.2/archival/libipkg/ipkg_download.c 2007-10-30 15:38:47.000000000 -0500
--- a/archival/libipkg/ipkg_download.c
+++ b/archival/libipkg/ipkg_download.c
@@ -69,8 +69,12 @@
}

View File

@@ -1,7 +1,5 @@
Index: busybox-1.7.2/archival/libipkg/ipkg_install.c
===================================================================
--- busybox-1.7.2.orig/archival/libipkg/ipkg_install.c 2007-10-30 17:15:31.000000000 -0500
+++ busybox-1.7.2/archival/libipkg/ipkg_install.c 2007-10-30 17:15:33.000000000 -0500
--- a/archival/libipkg/ipkg_install.c
+++ b/archival/libipkg/ipkg_install.c
@@ -136,6 +136,7 @@
ipkg_error_t ipkg_install_by_name(ipkg_conf_t *conf, const char *pkg_name)
{

View File

@@ -1,7 +1,5 @@
Index: busybox-1.8.2/archival/libipkg/pkg.c
===================================================================
--- busybox-1.8.2.orig/archival/libipkg/pkg.c 2008-01-03 17:25:55.000000000 +0100
+++ busybox-1.8.2/archival/libipkg/pkg.c 2008-01-03 17:33:57.000000000 +0100
--- a/archival/libipkg/pkg.c
+++ b/archival/libipkg/pkg.c
@@ -575,25 +575,28 @@
return temp;
}
@@ -36,16 +34,10 @@ Index: busybox-1.8.2/archival/libipkg/pkg.c
} else if (strcasecmp(field, "Conflicts") == 0) {
int i;
Index: busybox-1.8.2/archival/libipkg/pkg_parse.c
===================================================================
--- busybox-1.8.2.orig/archival/libipkg/pkg_parse.c 2008-01-03 17:25:55.000000000 +0100
+++ busybox-1.8.2/archival/libipkg/pkg_parse.c 2008-01-03 17:30:14.000000000 +0100
-85,20 +85,17 @@
{
char file_name[1048], md5sum[1048]; /* please tell me there aren't any longer that 1k */
- if(!strncmp(raw, "Conffiles:", 10))
+ if(!strncmp(raw, "Conffiles:",10))
--- 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++;
@@ -55,14 +47,13 @@ Index: busybox-1.8.2/archival/libipkg/pkg_parse.c
- while (*raw && isspace(*raw)) {
- raw++;
- }
- raw += strlen(file_name);
raw += strlen(file_name);
- while (*raw && isspace(*raw)) {
- raw++;
- }
- raw += strlen(md5sum);
+ raw += strlen(file_name);
+ while(*raw && isspace(*raw)) raw++;
+ raw += strlen(md5sum);
+ while(*raw && isspace(*raw)) raw++;
raw += strlen(md5sum);
+ while(*raw && isspace(*raw)) raw++;
}
}
}

View File

@@ -1,7 +1,5 @@
Index: busybox-1.8.2/archival/libipkg/pkg.c
===================================================================
--- busybox-1.8.2.orig/archival/libipkg/pkg.c 2008-01-06 03:14:12.003658206 +0100
+++ busybox-1.8.2/archival/libipkg/pkg.c 2008-01-06 03:24:18.187737063 +0100
--- a/archival/libipkg/pkg.c
+++ b/archival/libipkg/pkg.c
@@ -224,8 +224,7 @@
if (err) { return err; }
@@ -12,10 +10,8 @@ Index: busybox-1.8.2/archival/libipkg/pkg.c
fclose(control_file);
Index: busybox-1.8.2/archival/libipkg/pkg_hash.c
===================================================================
--- busybox-1.8.2.orig/archival/libipkg/pkg_hash.c 2008-01-06 03:14:12.231671203 +0100
+++ busybox-1.8.2/archival/libipkg/pkg_hash.c 2008-01-06 03:28:38.218555373 +0100
--- a/archival/libipkg/pkg_hash.c
+++ b/archival/libipkg/pkg_hash.c
@@ -89,20 +89,20 @@
pkg_src_t *src, pkg_dest_t *dest, int is_status_file)
{
@@ -58,11 +54,9 @@ Index: busybox-1.8.2/archival/libipkg/pkg_hash.c
return 0;
}
Index: busybox-1.8.2/archival/libipkg/pkg_parse.c
===================================================================
--- busybox-1.8.2.orig/archival/libipkg/pkg_parse.c 2008-01-06 03:14:12.283674167 +0100
+++ busybox-1.8.2/archival/libipkg/pkg_parse.c 2008-01-06 03:38:24.111943535 +0100
@@ -227,6 +227,161 @@
--- a/archival/libipkg/pkg_parse.c
+++ b/archival/libipkg/pkg_parse.c
@@ -224,6 +224,161 @@
Enhances, perhaps we could generalize all of these and save some
code duplication.
*/
@@ -224,7 +218,7 @@ Index: busybox-1.8.2/archival/libipkg/pkg_parse.c
int pkg_parse_raw(pkg_t *pkg, char ***raw, pkg_src_t *src, pkg_dest_t *dest)
{
int reading_conffiles, reading_description;
@@ -345,6 +500,7 @@
@@ -342,6 +497,7 @@
return EINVAL;
}
}
@@ -232,10 +226,8 @@ Index: busybox-1.8.2/archival/libipkg/pkg_parse.c
int pkg_valorize_other_field(pkg_t *pkg, char ***raw)
{
Index: busybox-1.8.2/archival/libipkg/pkg_parse.h
===================================================================
--- busybox-1.8.2.orig/archival/libipkg/pkg_parse.h 2008-01-06 03:14:12.303675307 +0100
+++ busybox-1.8.2/archival/libipkg/pkg_parse.h 2008-01-06 03:39:03.954214018 +0100
--- a/archival/libipkg/pkg_parse.h
+++ b/archival/libipkg/pkg_parse.h
@@ -25,7 +25,10 @@
char ** parseDependsString(char * raw, int * depends_count);
int parseVersion(pkg_t *pkg, char *raw);

View File

@@ -1,12 +1,10 @@
Index: busybox-1.8.2/networking/udhcp/dhcpc.c
===================================================================
--- busybox-1.8.2.orig/networking/udhcp/dhcpc.c 2008-01-03 05:00:31.506419917 +0100
+++ busybox-1.8.2/networking/udhcp/dhcpc.c 2008-01-03 05:00:44.311149618 +0100
@@ -65,7 +65,6 @@
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -63,7 +63,6 @@
state = RENEW_REQUESTED;
break;
case RENEW_REQUESTED: /* impatient are we? fine, square 1 */
- udhcp_run_script(NULL, "deconfig");
case REQUESTING:
case RELEASED:
change_mode(LISTEN_RAW);
change_listen_mode(LISTEN_RAW);

View File

@@ -1,6 +1,5 @@
diff -urN busybox-1.8.2.old/archival/libipkg/pkg_extract.c busybox-1.8.2.dev/archival/libipkg/pkg_extract.c
--- busybox-1.8.2.old/archival/libipkg/pkg_extract.c 2008-01-23 22:18:44.000000000 +0100
+++ busybox-1.8.2.dev/archival/libipkg/pkg_extract.c 2008-01-23 22:20:31.000000000 +0100
--- a/archival/libipkg/pkg_extract.c
+++ b/archival/libipkg/pkg_extract.c
@@ -85,6 +85,7 @@
free(archive->buffer);
free(archive->accept);

View File

@@ -0,0 +1,43 @@
--- a/archival/libipkg/pkg.c
+++ b/archival/libipkg/pkg.c
@@ -1139,8 +1139,12 @@
return 0;
}
-int pkg_name_version_and_architecture_compare(pkg_t *a, pkg_t *b)
+int pkg_name_version_and_architecture_compare(const void *pkg_a, const void *pkg_b)
{
+ pkg_t * const *p1 = pkg_a;
+ pkg_t * const *p2 = pkg_b;
+ const pkg_t *a = *p1;
+ const pkg_t *b = *p2;
int namecmp;
int vercmp;
if (!a->name || !b->name) {
@@ -1167,8 +1171,12 @@
return 0;
}
-int abstract_pkg_name_compare(abstract_pkg_t *a, abstract_pkg_t *b)
+int abstract_pkg_name_compare(const void *apkg_a, const void *apkg_b)
{
+ abstract_pkg_t * const *ap1 = apkg_a;
+ abstract_pkg_t * const *ap2 = apkg_b;
+ const abstract_pkg_t *a = *ap1;
+ const abstract_pkg_t *b = *ap2;
if (!a->name || !b->name) {
fprintf(stderr, "abstract_pkg_name_compare: a=%p a->name=%p b=%p b->name=%p\n",
a, a->name, b, b->name);
--- a/archival/libipkg/pkg.h
+++ b/archival/libipkg/pkg.h
@@ -191,8 +191,8 @@
char *pkg_version_str_alloc(pkg_t *pkg);
int pkg_compare_versions(const pkg_t *pkg, const pkg_t *ref_pkg);
-int pkg_name_version_and_architecture_compare(pkg_t *a, pkg_t *b);
-int abstract_pkg_name_compare(abstract_pkg_t *a, abstract_pkg_t *b);
+int pkg_name_version_and_architecture_compare(const void *pkg_a, const void *pkg_b);
+int abstract_pkg_name_compare(const void *apkg_a, const void *apkg_b);
char * pkg_formatted_info(pkg_t *pkg );
char * pkg_formatted_field(pkg_t *pkg, const char *field );

View File

@@ -0,0 +1,9 @@
--- a/coreutils/basename.c
+++ b/coreutils/basename.c
@@ -48,5 +48,5 @@
/* puts(s) will do, but we can do without stdio this way: */
s[m++] = '\n';
- return full_write(STDOUT_FILENO, s, m) == (ssize_t)m;
+ return full_write(STDOUT_FILENO, s, m) != (ssize_t)m;
}

View File

@@ -0,0 +1,55 @@
--- a/archival/libunarchive/get_header_tar.c
+++ b/archival/libunarchive/get_header_tar.c
@@ -261,26 +261,33 @@
case '0':
#if ENABLE_FEATURE_TAR_OLDGNU_COMPATIBILITY
if (last_char_is(file_header->name, '/')) {
- file_header->mode |= S_IFDIR;
- } else
+ goto set_dir;
+ }
#endif
file_header->mode |= S_IFREG;
break;
case '2':
file_header->mode |= S_IFLNK;
+ /* have seen tarballs with size field containing
+ * the size of the link target's name */
+ size0:
+ file_header->size = 0;
break;
case '3':
file_header->mode |= S_IFCHR;
- break;
+ goto size0; /* paranoia */
case '4':
file_header->mode |= S_IFBLK;
- break;
+ goto size0;
case '5':
+#if ENABLE_FEATURE_TAR_OLDGNU_COMPATIBILITY
+ set_dir:
+#endif
file_header->mode |= S_IFDIR;
- break;
+ goto size0;
case '6':
file_header->mode |= S_IFIFO;
- break;
+ goto size0;
#if ENABLE_FEATURE_TAR_GNU_EXTENSIONS
case 'L':
/* free: paranoia: tar with several consecutive longnames */
--- a/archival/libunarchive/seek_by_jump.c
+++ b/archival/libunarchive/seek_by_jump.c
@@ -8,7 +8,9 @@
void seek_by_jump(const archive_handle_t *archive_handle, unsigned amount)
{
- if (lseek(archive_handle->src_fd, (off_t) amount, SEEK_CUR) == (off_t) -1) {
+ if (amount
+ && lseek(archive_handle->src_fd, (off_t) amount, SEEK_CUR) == (off_t) -1
+ ) {
if (errno == ESPIPE)
seek_by_read(archive_handle, amount);
else

View File

@@ -0,0 +1,155 @@
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -1569,14 +1569,14 @@
static char *optptr; /* used by nextopt */
/*
- * XXX - should get rid of. have all builtins use getopt(3). the
- * library getopt must have the BSD extension static variable "optreset"
- * otherwise it can't be used within the shell safely.
+ * XXX - should get rid of. Have all builtins use getopt(3).
+ * The library getopt must have the BSD extension static variable
+ * "optreset", otherwise it can't be used within the shell safely.
*
- * Standard option processing (a la getopt) for builtin routines. The
- * only argument that is passed to nextopt is the option string; the
- * other arguments are unnecessary. It return the character, or '\0' on
- * end of input.
+ * Standard option processing (a la getopt) for builtin routines.
+ * The only argument that is passed to nextopt is the option string;
+ * the other arguments are unnecessary. It returns the character,
+ * or '\0' on end of input.
*/
static int
nextopt(const char *optstring)
@@ -1587,13 +1587,20 @@
p = optptr;
if (p == NULL || *p == '\0') {
+ /* We ate entire "-param", take next one */
p = *argptr;
- if (p == NULL || *p != '-' || *++p == '\0')
+ if (p == NULL)
+ return '\0';
+ if (*p != '-')
+ return '\0';
+ if (*++p == '\0') /* just "-" ? */
return '\0';
argptr++;
- if (LONE_DASH(p)) /* check for "--" */
+ if (LONE_DASH(p)) /* "--" ? */
return '\0';
+ /* p => next "-param" */
}
+ /* p => some option char in the middle of a "-param" */
c = *p++;
for (q = optstring; *q != c;) {
if (*q == '\0')
@@ -1602,8 +1609,11 @@
q++;
}
if (*++q == ':') {
- if (*p == '\0' && (p = *argptr++) == NULL)
- ash_msg_and_raise_error("no arg for -%c option", c);
+ if (*p == '\0') {
+ p = *argptr++;
+ if (p == NULL)
+ ash_msg_and_raise_error("no arg for -%c option", c);
+ }
optionarg = p;
p = NULL;
}
@@ -7428,8 +7438,10 @@
else if (c != 'p')
abort();
#endif
- if (verify)
+ /* Mimic bash: just "command -v" doesn't complain, it's a nop */
+ if (verify && (*argptr != NULL)) {
return describe_command(*argptr, verify - VERIFY_BRIEF);
+ }
return 0;
}
@@ -7788,16 +7800,33 @@
static void
evaltree(union node *n, int flags)
{
+
+ struct jmploc *volatile savehandler = exception_handler;
+ struct jmploc jmploc;
int checkexit = 0;
void (*evalfn)(union node *, int);
- unsigned isor;
int status;
+
if (n == NULL) {
TRACE(("evaltree(NULL) called\n"));
- goto out;
+ goto out1;
}
TRACE(("pid %d, evaltree(%p: %d, %d) called\n",
getpid(), n, n->type, flags));
+
+ exception_handler = &jmploc;
+ {
+ int err = setjmp(jmploc.loc);
+ if (err) {
+ /* if it was a signal, check for trap handlers */
+ if (exception == EXSIG)
+ goto out;
+ /* continue on the way out */
+ exception_handler = savehandler;
+ longjmp(exception_handler->loc, err);
+ }
+ }
+
switch (n->type) {
default:
#if DEBUG
@@ -7843,19 +7872,20 @@
goto calleval;
case NAND:
case NOR:
- case NSEMI:
+ case NSEMI: {
+
#if NAND + 1 != NOR
#error NAND + 1 != NOR
#endif
#if NOR + 1 != NSEMI
#error NOR + 1 != NSEMI
#endif
- isor = n->type - NAND;
+ unsigned is_or = n->type - NAND;
evaltree(
n->nbinary.ch1,
- (flags | ((isor >> 1) - 1)) & EV_TESTED
+ (flags | ((is_or >> 1) - 1)) & EV_TESTED
);
- if (!exitstatus == isor)
+ if (!exitstatus == is_or)
break;
if (!evalskip) {
n = n->nbinary.ch2;
@@ -7866,6 +7896,7 @@
break;
}
break;
+ }
case NIF:
evaltree(n->nif.test, EV_TESTED);
if (evalskip)
@@ -7886,8 +7917,11 @@
exitstatus = status;
break;
}
+
out:
- if ((checkexit & exitstatus))
+ exception_handler = savehandler;
+ out1:
+ if (checkexit & exitstatus)
evalskip |= SKIPEVAL;
else if (pendingsig && dotrap())
goto exexit;

View File

@@ -0,0 +1,28 @@
--- a/applets/usage_compressed
+++ b/applets/usage_compressed
@@ -14,14 +14,21 @@
echo 'static const char packed_usage[] ALIGN1 = {'
-# Extra effort to avoid using "od -t x1": -t is not available
-# in non-CONFIG_DESKTOPed busybox od
+## Breaks on big-endian systems!
+## # Extra effort to avoid using "od -t x1": -t is not available
+## # in non-CONFIG_DESKTOPed busybox od
+##
+## "$loc/usage" | bzip2 -1 | od -v -x \
+## | $SED -e 's/^[^ ]*//' \
+## | $SED -e 's/ //g' \
+## | grep -v '^$' \
+## | $SED -e 's/\(..\)\(..\)/0x\2,0x\1,/g'
-"$loc/usage" | bzip2 -1 | od -v -x \
+"$loc/usage" | bzip2 -1 | od -v -t x1 \
| $SED -e 's/^[^ ]*//' \
| $SED -e 's/ //g' \
| grep -v '^$' \
-| $SED -e 's/\(..\)\(..\)/0x\2,0x\1,/g'
+| $SED -e 's/\(..\)/0x\1,/g'
echo '};'
echo '#define SIZEOF_usage_messages' `expr 0 + $sz`