apply post-1.16.0 fixes, bump version to 1.16.1

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2010-03-28 20:01:31 +02:00
parent e52b735231
commit 58cdca3984
27 changed files with 407 additions and 313 deletions

View File

@ -1,6 +1,6 @@
VERSION = 1
PATCHLEVEL = 16
SUBLEVEL = 0
SUBLEVEL = 1
EXTRAVERSION =
NAME = Unnamed

View File

@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Busybox version: 1.15.0.svn
# Fri Aug 21 00:13:18 2009
# Busybox version: 1.16.0
# Wed Jan 27 21:01:26 2010
#
CONFIG_HAVE_DOT_CONFIG=y
@ -14,6 +14,8 @@ CONFIG_HAVE_DOT_CONFIG=y
#
CONFIG_DESKTOP=y
CONFIG_EXTRA_COMPAT=y
CONFIG_INCLUDE_SUSv2=y
# CONFIG_USE_PORTABLE_CODE is not set
CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
@ -59,7 +61,6 @@ CONFIG_EXTRA_CFLAGS=""
CONFIG_NO_DEBUG_LIB=y
# CONFIG_DMALLOC is not set
# CONFIG_EFENCE is not set
CONFIG_INCLUDE_SUSv2=y
#
# Installation Options
@ -120,6 +121,7 @@ CONFIG_DPKG_DEB=y
CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY=y
CONFIG_GUNZIP=y
CONFIG_GZIP=y
CONFIG_FEATURE_GZIP_LONG_OPTIONS=y
CONFIG_LZOP=y
CONFIG_LZOP_COMPR_HIGH=y
CONFIG_RPM2CPIO=y
@ -133,6 +135,7 @@ CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY=y
CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
CONFIG_FEATURE_TAR_LONG_OPTIONS=y
CONFIG_FEATURE_TAR_UNAME_GNAME=y
CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y
CONFIG_UNCOMPRESS=y
CONFIG_UNLZMA=y
CONFIG_FEATURE_LZMA_FAST=y
@ -148,15 +151,19 @@ CONFIG_CATV=y
CONFIG_CHGRP=y
CONFIG_CHMOD=y
CONFIG_CHOWN=y
CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y
CONFIG_CHROOT=y
CONFIG_CKSUM=y
CONFIG_COMM=y
CONFIG_CP=y
CONFIG_FEATURE_CP_LONG_OPTIONS=y
CONFIG_CUT=y
CONFIG_DATE=y
CONFIG_FEATURE_DATE_ISOFMT=y
CONFIG_FEATURE_DATE_COMPAT=y
CONFIG_DD=y
CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y
CONFIG_FEATURE_DD_IBS_OBS=y
CONFIG_DF=y
CONFIG_FEATURE_DF_FANCY=y
@ -271,7 +278,7 @@ CONFIG_FEATURE_AUTOWIDTH=y
CONFIG_FEATURE_HUMAN_READABLE=y
#
# Common options for md5sum, sha1sum
# Common options for md5sum, sha1sum, sha256sum, sha512sum
#
CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
@ -318,9 +325,8 @@ CONFIG_AWK=y
CONFIG_FEATURE_AWK_LIBM=y
CONFIG_CMP=y
CONFIG_DIFF=y
CONFIG_FEATURE_DIFF_BINARY=y
CONFIG_FEATURE_DIFF_LONG_OPTIONS=y
CONFIG_FEATURE_DIFF_DIR=y
CONFIG_FEATURE_DIFF_MINIMAL=y
CONFIG_ED=y
CONFIG_PATCH=y
CONFIG_SED=y
@ -364,6 +370,7 @@ CONFIG_FEATURE_FIND_DELETE=y
CONFIG_FEATURE_FIND_PATH=y
CONFIG_FEATURE_FIND_REGEX=y
CONFIG_FEATURE_FIND_CONTEXT=y
CONFIG_FEATURE_FIND_LINKS=y
CONFIG_GREP=y
CONFIG_FEATURE_GREP_EGREP_ALIAS=y
CONFIG_FEATURE_GREP_FGREP_ALIAS=y
@ -453,6 +460,7 @@ CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED=y
# Options common to multiple modutils
#
# CONFIG_FEATURE_2_4_MODULES is not set
CONFIG_FEATURE_INSMOD_TRY_MMAP=y
# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
@ -488,12 +496,14 @@ CONFIG_FEATURE_FDISK_ADVANCED=y
CONFIG_FINDFS=y
CONFIG_FREERAMDISK=y
CONFIG_FSCK_MINIX=y
CONFIG_MKFS_EXT2=y
CONFIG_MKFS_MINIX=y
#
# Minix filesystem support
#
CONFIG_FEATURE_MINIX2=y
CONFIG_MKFS_REISER=y
CONFIG_MKFS_VFAT=y
CONFIG_GETOPT=y
CONFIG_FEATURE_GETOPT_LONG=y
@ -506,6 +516,8 @@ CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
CONFIG_IPCRM=y
CONFIG_IPCS=y
CONFIG_LOSETUP=y
CONFIG_LSPCI=y
CONFIG_LSUSB=y
CONFIG_MDEV=y
CONFIG_FEATURE_MDEV_CONF=y
CONFIG_FEATURE_MDEV_RENAME=y
@ -518,6 +530,7 @@ CONFIG_MORE=y
CONFIG_FEATURE_USE_TERMIOS=y
CONFIG_VOLUMEID=y
CONFIG_FEATURE_VOLUMEID_EXT=y
CONFIG_FEATURE_VOLUMEID_BTRFS=y
CONFIG_FEATURE_VOLUMEID_REISERFS=y
CONFIG_FEATURE_VOLUMEID_FAT=y
CONFIG_FEATURE_VOLUMEID_HFS=y
@ -595,6 +608,7 @@ CONFIG_DEVMEM=y
CONFIG_EJECT=y
CONFIG_FEATURE_EJECT_SCSI=y
CONFIG_FBSPLASH=y
CONFIG_FLASHCP=y
# CONFIG_FLASH_LOCK is not set
# CONFIG_FLASH_UNLOCK is not set
# CONFIG_FLASH_ERASEALL is not set
@ -638,6 +652,7 @@ CONFIG_TIME=y
CONFIG_TIMEOUT=y
CONFIG_TTYSIZE=y
CONFIG_VOLNAME=y
CONFIG_WALL=y
CONFIG_WATCHDOG=y
#
@ -657,6 +672,7 @@ CONFIG_ETHER_WAKE=y
CONFIG_FAKEIDENTD=y
CONFIG_FTPD=y
CONFIG_FEATURE_FTP_WRITE=y
CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST=y
CONFIG_FTPGET=y
CONFIG_FTPPUT=y
CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
@ -722,6 +738,8 @@ CONFIG_NETSTAT=y
CONFIG_FEATURE_NETSTAT_WIDE=y
CONFIG_FEATURE_NETSTAT_PRG=y
CONFIG_NSLOOKUP=y
CONFIG_NTPD=y
CONFIG_FEATURE_NTPD_SERVER=y
CONFIG_PING=y
CONFIG_PING6=y
CONFIG_FEATURE_FANCY_PING=y
@ -733,13 +751,16 @@ CONFIG_FEATURE_TELNET_TTYPE=y
CONFIG_FEATURE_TELNET_AUTOLOGIN=y
CONFIG_TELNETD=y
CONFIG_FEATURE_TELNETD_STANDALONE=y
CONFIG_FEATURE_TELNETD_INETD_WAIT=y
CONFIG_TFTP=y
CONFIG_TFTPD=y
CONFIG_FEATURE_TFTP_GET=y
CONFIG_FEATURE_TFTP_PUT=y
CONFIG_FEATURE_TFTP_BLOCKSIZE=y
CONFIG_FEATURE_TFTP_PROGRESS_BAR=y
CONFIG_TFTP_DEBUG=y
CONFIG_TRACEROUTE=y
CONFIG_TRACEROUTE6=y
CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE=y
CONFIG_FEATURE_TRACEROUTE_USE_ICMP=y
@ -813,6 +834,7 @@ CONFIG_FEATURE_TOP_SMP_CPU=y
CONFIG_FEATURE_TOP_DECIMALS=y
CONFIG_FEATURE_TOP_SMP_PROCESS=y
CONFIG_FEATURE_TOPMEM=y
CONFIG_FEATURE_SHOW_THREADS=y
CONFIG_UPTIME=y
CONFIG_WATCH=y
@ -881,6 +903,7 @@ CONFIG_HUSH_CASE=y
CONFIG_HUSH_FUNCTIONS=y
CONFIG_HUSH_LOCAL=y
CONFIG_HUSH_EXPORT_N=y
CONFIG_HUSH_RANDOM_SUPPORT=y
CONFIG_LASH=y
CONFIG_MSH=y
CONFIG_SH_MATH_SUPPORT=y

View File

@ -79,6 +79,7 @@ int main(int argc, char **argv)
}
printf("\n");
printf("#ifndef SKIP_definitions\n");
printf("const char applet_names[] ALIGN1 = \"\"\n");
for (i = 0; i < NUM_APPLETS; i++) {
printf("\"%s\" \"\\0\"\n", applets[i].name);
@ -120,9 +121,10 @@ int main(int argc, char **argv)
printf("0x%02x,\n", v);
i++;
}
printf("};\n\n");
printf("};\n");
#endif
printf("#endif /* SKIP_definitions */\n");
printf("\n");
printf("#define MAX_APPLET_NAME_LEN %u\n", MAX_APPLET_NAME_LEN);
return 0;

View File

@ -7,6 +7,9 @@
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
*/
#include "libbb.h"
#ifndef O_NOATIME
# define O_NOATIME 0
#endif
/* This is a NOFORK applet. Be very careful! */

View File

@ -101,8 +101,10 @@ int md5_sha1_sum_main(int argc UNUSED_PARAM, char **argv)
unsigned flags;
/*hash_algo_t hash_algo = applet_name[3];*/
if (ENABLE_FEATURE_MD5_SHA1_SUM_CHECK)
flags = getopt32(argv, "scw");
if (ENABLE_FEATURE_MD5_SHA1_SUM_CHECK) {
/* -b "binary", -t "text" are ignored (shaNNNsum compat) */
flags = getopt32(argv, "scwbt");
}
else optind = 1;
argv += optind;
//argc -= optind;

View File

@ -241,7 +241,8 @@ int tail_main(int argc, char **argv)
} while (nwrite);
}
}
xwrite(STDOUT_FILENO, buf + nread - nwrite, nwrite);
if (nwrite > 0)
xwrite(STDOUT_FILENO, buf + nread - nwrite, nwrite);
} else if (count) {
if (COUNT_BYTES) {
taillen += nread;

View File

@ -104,7 +104,7 @@ int touch_main(int argc UNUSED_PARAM, char **argv)
}
do {
if (utimes(*argv, reference_file ? timebuf : NULL) != 0) {
if (utimes(*argv, (reference_file || date_str) ? timebuf : NULL) != 0) {
if (errno == ENOENT) { /* no such file */
if (opts) { /* creation is disabled, so ignore */
continue;
@ -113,7 +113,7 @@ int touch_main(int argc UNUSED_PARAM, char **argv)
fd = open(*argv, O_RDWR | O_CREAT, 0666);
if (fd >= 0) {
xclose(fd);
if (reference_file)
if (reference_file || date_str)
utimes(*argv, timebuf);
continue;
}

View File

@ -88,6 +88,8 @@ int wc_main(int argc UNUSED_PARAM, char **argv)
if (!argv[0]) {
*--argv = (char *) bb_msg_standard_input;
fname_fmt = "\n";
}
if (!argv[1]) { /* zero or one filename? */
if (!((print_type-1) & print_type)) /* exactly one option? */
start_fmt = "%"COUNT_FMT;
}

View File

@ -227,10 +227,12 @@ struct cand {
static int search(const int *c, int k, int y, const struct cand *list)
{
int i, j;
if (list[c[k]].y < y) /* quick look for typical case */
return k + 1;
for (int i = 0, j = k + 1;;) {
for (i = 0, j = k + 1;;) {
const int l = (i + j) >> 1;
if (l > i) {
const int t = list[c[l]].y;
@ -265,11 +267,13 @@ static void stone(const int *a, int n, const int *b, int *J, int pref)
int clistlen = 100;
int k = 0;
struct cand *clist = xzalloc(clistlen * sizeof(clist[0]));
struct cand cand;
struct cand *q;
int *klist = xzalloc((n + 2) * sizeof(klist[0]));
/*clist[0] = (struct cand){0}; - xzalloc did it */
/*klist[0] = 0; */
for (struct cand cand = {1}; cand.x <= n; cand.x++) {
for (cand.x = 1; cand.x <= n; cand.x++) {
int j = a[cand.x], oldl = 0;
unsigned numtries = 0;
if (j == 0)
@ -303,7 +307,7 @@ static void stone(const int *a, int n, const int *b, int *J, int pref)
} while ((cand.y = b[++j]) > 0 && numtries < bound);
}
/* Unravel */
for (struct cand *q = clist + klist[k]; q->y; q = clist + q->pred)
for (q = clist + klist[k]; q->y; q = clist + q->pred)
J[q->x + pref] = q->y + pref;
free(klist);
free(clist);
@ -348,10 +352,11 @@ static void equiv(struct line *a, int n, struct line *b, int m, int *c)
static void unsort(const struct line *f, int l, int *b)
{
int i;
int *a = xmalloc((l + 1) * sizeof(a[0]));
for (int i = 1; i <= l; i++)
for (i = 1; i <= l; i++)
a[f[i].serial] = f[i].value;
for (int i = 1; i <= l; i++)
for (i = 1; i <= l; i++)
b[i] = a[i];
free(a);
}
@ -370,12 +375,13 @@ static int line_compar(const void *a, const void *b)
static void fetch(FILE_and_pos_t *ft, const off_t *ix, int a, int b, int ch)
{
for (int i = a; i <= b; i++) {
int i, j, col;
for (i = a; i <= b; i++) {
seek_ft(ft, ix[i - 1]);
putchar(ch);
if (option_mask32 & FLAG(T))
putchar('\t');
for (int j = 0, col = 0; j < ix[i] - ix[i - 1]; j++) {
for (j = 0, col = 0; j < ix[i] - ix[i - 1]; j++) {
int c = fgetc(ft->ft_fp);
if (c == EOF) {
printf("\n\\ No newline at end of file\n");
@ -410,19 +416,20 @@ static NOINLINE int *create_J(FILE_and_pos_t ft[2], int nlen[2], off_t *ix[2])
{
int *J, slen[2], *class, *member;
struct line *nfile[2], *sfile[2];
int pref = 0, suff = 0;
int pref = 0, suff = 0, i, j, delta;
/* Lines of both files are hashed, and in the process
* their offsets are stored in the array ix[fileno]
* where fileno == 0 points to the old file, and
* fileno == 1 points to the new one.
*/
for (int i = 0; i < 2; i++) {
for (i = 0; i < 2; i++) {
unsigned hash;
token_t tok;
size_t sz = 100;
nfile[i] = xmalloc((sz + 3) * sizeof(nfile[i][0]));
/* ft gets here without the correct position, cant use seek_ft */
ft[i].ft_pos = 0;
fseeko(ft[i].ft_fp, 0, SEEK_SET);
nlen[i] = 0;
@ -460,11 +467,11 @@ start:
nlen[i]--;
/* Now we copy the line offsets into ix */
ix[i] = xmalloc((nlen[i] + 2) * sizeof(ix[i][0]));
for (int j = 0; j < nlen[i] + 1; j++)
for (j = 0; j < nlen[i] + 1; j++)
ix[i][j] = nfile[i][j].offset;
}
/* lenght of prefix and suffix is calculated */
/* length of prefix and suffix is calculated */
for (; pref < nlen[0] && pref < nlen[1] &&
nfile[0][pref + 1].value == nfile[1][pref + 1].value;
pref++);
@ -475,10 +482,10 @@ start:
* the result being sorted and stored in sfile[fileno],
* and their sizes are stored in slen[fileno]
*/
for (int j = 0; j < 2; j++) {
for (j = 0; j < 2; j++) {
sfile[j] = nfile[j] + pref;
slen[j] = nlen[j] - pref - suff;
for (int i = 0; i <= slen[j]; i++)
for (i = 0; i <= slen[j]; i++)
sfile[j][i].serial = i;
qsort(sfile[j] + 1, slen[j], sizeof(*sfile[j]), line_compar);
}
@ -494,7 +501,7 @@ start:
free(nfile[1]);
class = xmalloc((slen[0] + 1) * sizeof(class[0]));
for (int i = 1; i <= slen[0]; i++) /* Unsorting */
for (i = 1; i <= slen[0]; i++) /* Unsorting */
class[sfile[0][i].serial] = sfile[0][i].value;
free(nfile[0]);
#else
@ -512,7 +519,7 @@ start:
* are initialized with 0 (no matches), so that function stone can
* then assign them their right values
*/
for (int i = 0, delta = nlen[1] - nlen[0]; i <= nlen[0]; i++)
for (i = 0, delta = nlen[1] - nlen[0]; i <= nlen[0]; i++)
J[i] = i <= pref ? i :
i > (nlen[0] - suff) ? (i + delta) : 0;
/* Here the magic is performed */
@ -526,14 +533,14 @@ start:
* which, due to limitations intrinsic to any hashing algorithm,
* are different but ended up confounded as the same
*/
for (int i = 1; i <= nlen[0]; i++) {
for (i = 1; i <= nlen[0]; i++) {
if (!J[i])
continue;
seek_ft(&ft[0], ix[0][i - 1]);
seek_ft(&ft[1], ix[1][J[i] - 1]);
for (int j = J[i]; i <= nlen[0] && J[i] == j; i++, j++) {
for (j = J[i]; i <= nlen[0] && J[i] == j; i++, j++) {
token_t tok0 = 0, tok1 = 0;
do {
tok0 = read_token(&ft[0], tok0);
@ -555,13 +562,18 @@ static bool diff(FILE* fp[2], char *file[2])
{
int nlen[2];
off_t *ix[2];
FILE_and_pos_t ft[2] = { { fp[0] }, { fp[1] } };
int *J = create_J(ft, nlen, ix);
bool anychange = false;
FILE_and_pos_t ft[2];
typedef struct { int a, b; } vec_t[2];
vec_t *vec = NULL;
int i = 1, idx = -1;
int i = 1, j, k, idx = -1;
bool anychange = false;
int *J;
ft[0].ft_fp = fp[0];
ft[1].ft_fp = fp[1];
/* note that ft[i].ft_pos is unintitalized, create_J()
* must not assume otherwise */
J = create_J(ft, nlen, ix);
do {
bool nonempty = false;
@ -596,8 +608,8 @@ static bool diff(FILE* fp[2], char *file[2])
break;
}
for (int j = 0; j < 2; j++)
for (int k = v[j].a; k < v[j].b; k++)
for (j = 0; j < 2; j++)
for (k = v[j].a; k < v[j].b; k++)
nonempty |= (ix[j][k+1] - ix[j][k] != 1);
vec = xrealloc_vector(vec, 6, ++idx);
@ -612,6 +624,7 @@ static bool diff(FILE* fp[2], char *file[2])
if (idx < 0 || ((option_mask32 & FLAG(B)) && !nonempty))
goto cont;
if (!(option_mask32 & FLAG(q))) {
int lowa;
vec_t span, *cvp = vec;
if (!anychange) {
@ -621,7 +634,7 @@ static bool diff(FILE* fp[2], char *file[2])
}
printf("@@");
for (int j = 0; j < 2; j++) {
for (j = 0; j < 2; j++) {
int a = span[j].a = MAX(1, (*cvp)[j].a - opt_U_context);
int b = span[j].b = MIN(nlen[j], vec[idx][j].b + opt_U_context);
@ -635,12 +648,12 @@ static bool diff(FILE* fp[2], char *file[2])
* Output changes in "unified" diff format--the old and new lines
* are printed together.
*/
for (int lowa = span[0].a; ; lowa = (*cvp++)[0].b + 1) {
for (lowa = span[0].a; ; lowa = (*cvp++)[0].b + 1) {
bool end = cvp > &vec[idx];
fetch(&ft[0], ix[0], lowa, end ? span[0].b : (*cvp)[0].a - 1, ' ');
if (end)
break;
for (int j = 0; j < 2; j++)
for (j = 0; j < 2; j++)
fetch(&ft[j], ix[j], (*cvp)[j].a, (*cvp)[j].b, j ? '+' : '-');
}
}
@ -660,9 +673,9 @@ static int diffreg(char *file[2])
{
FILE *fp[2] = { stdin, stdin };
bool binary = false, differ = false;
int status = STATUS_SAME;
int status = STATUS_SAME, i;
for (int i = 0; i < 2; i++) {
for (i = 0; i < 2; i++) {
int fd = open_or_warn_stdin(file[i]);
if (fd == -1)
goto out;
@ -688,7 +701,7 @@ static int diffreg(char *file[2])
const size_t sz = COMMON_BUFSIZE / 2;
char *const buf0 = bb_common_bufsiz1;
char *const buf1 = buf0 + sz;
int i, j;
int j, k;
i = fread(buf0, 1, sz, fp[0]);
j = fread(buf1, 1, sz, fp[1]);
if (i != j) {
@ -697,7 +710,7 @@ static int diffreg(char *file[2])
}
if (i == 0)
break;
for (int k = 0; k < i; k++) {
for (k = 0; k < i; k++) {
if (!buf0[k] || !buf1[k])
binary = true;
if (buf0[k] != buf1[k])
@ -771,9 +784,10 @@ static int FAST_FUNC skip_dir(const char *filename,
static void diffdir(char *p[2], const char *s_start)
{
struct dlist list[2];
int i;
memset(&list, 0, sizeof(list));
for (int i = 0; i < 2; i++) {
for (i = 0; i < 2; i++) {
/*list[i].s = list[i].e = 0; - memset did it */
/*list[i].dl = NULL; */
@ -815,7 +829,7 @@ static void diffdir(char *p[2], const char *s_start)
else {
char *fullpath[2], *path[2]; /* if -N */
for (int i = 0; i < 2; i++) {
for (i = 0; i < 2; i++) {
if (pos == 0 || i == k) {
path[i] = fullpath[i] = concat_path_file(p[i], dp[i]);
stat(fullpath[i], &stb[i]);
@ -883,7 +897,7 @@ static const char diff_longopts[] ALIGN1 =
int diff_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int diff_main(int argc UNUSED_PARAM, char **argv)
{
int gotstdin = 0;
int gotstdin = 0, i;
char *file[2], *s_start = NULL;
llist_t *L_arg = NULL;
@ -900,7 +914,7 @@ int diff_main(int argc UNUSED_PARAM, char **argv)
while (L_arg)
label[!!label[0]] = llist_pop(&L_arg);
xfunc_error_retval = 2;
for (int i = 0; i < 2; i++) {
for (i = 0; i < 2; i++) {
file[i] = argv[i];
/* Compat: "diff file name_which_doesnt_exist" exits with 2 */
if (LONE_DASH(file[i])) {

File diff suppressed because it is too large Load Diff

View File

@ -79,11 +79,11 @@ int beep_main(int argc, char **argv)
}
while (rep) {
//bb_info_msg("rep[%d] freq=%d, length=%d, delay=%d", rep, freq, length, delay);
xioctl(speaker, KIOCSOUND, (void*)(long)tickrate_div_freq);
xioctl(speaker, KIOCSOUND, (void*)(uintptr_t)tickrate_div_freq);
usleep(1000 * length);
ioctl(speaker, KIOCSOUND, (void*)0);
if (--rep)
usleep(delay);
usleep(1000 * delay);
}
}

View File

@ -84,7 +84,7 @@ static void fb_open(const char *strfb_device)
// map the device in memory
G.addr = mmap(NULL,
G.scr_var.xres * G.scr_var.yres
* BYTES_PER_PIXEL /*(G.scr_var.bits_per_pixel / 8)*/ ,
* BYTES_PER_PIXEL /*(G.scr_var.bits_per_pixel / 8)*/,
PROT_WRITE, MAP_SHARED, fbfd, 0);
if (G.addr == MAP_FAILED)
bb_perror_msg_and_die("mmap");
@ -121,7 +121,7 @@ static void fb_drawrectangle(void)
// vertical lines
ptr1 = (DATA*)(G.addr + (G.nbar_posy * G.scr_var.xres + G.nbar_posx) * BYTES_PER_PIXEL);
ptr2 = (DATA*)(G.addr + (G.nbar_posy * G.scr_var.xres + G.nbar_posx + G.nbar_width - 1) * BYTES_PER_PIXEL);
cnt = G.nbar_height - 1 /* HUH?! G.nbar_posy + G.nbar_height - 1 - G.nbar_posy*/;
cnt = G.nbar_height - 1;
do {
*ptr1 = thispix; ptr1 += G.scr_var.xres;
*ptr2 = thispix; ptr2 += G.scr_var.xres;
@ -216,70 +216,69 @@ static void fb_drawprogressbar(unsigned percent)
*/
static void fb_drawimage(void)
{
char *head, *ptr;
FILE *theme_file;
char *read_ptr;
unsigned char *pixline;
unsigned i, j, width, height, line_size;
if (LONE_DASH(G.image_filename))
if (LONE_DASH(G.image_filename)) {
theme_file = stdin;
else {
} else {
int fd = open_zipped(G.image_filename);
if (fd < 0)
bb_simple_perror_msg_and_die(G.image_filename);
theme_file = xfdopen_for_read(fd);
}
head = xmalloc(256);
/* parse ppm header
* - A ppm images magic number is the two characters "P6".
/* Parse ppm header:
* - Magic: two characters "P6".
* - Whitespace (blanks, TABs, CRs, LFs).
* - A width, formatted as ASCII characters in decimal.
* - Whitespace.
* - A height, again in ASCII decimal.
* - A height, ASCII decimal.
* - Whitespace.
* - The maximum color value (Maxval), again in ASCII decimal. Must be
* less than 65536.
* - The maximum color value, ASCII decimal, in 0..65535
* - Newline or other single whitespace character.
* (we support newline only)
* - A raster of Width * Height pixels in triplets of rgb
* in pure binary by 1 (or not implemented 2) bytes.
* in pure binary by 1 or 2 bytes. (we support only 1 byte)
*/
#define concat_buf bb_common_bufsiz1
read_ptr = concat_buf;
while (1) {
if (fgets(head, 256, theme_file) == NULL
/* do not overrun the buffer */
|| strlen(bb_common_bufsiz1) >= sizeof(bb_common_bufsiz1) - 256)
int w, h, max_color_val;
int rem = concat_buf + sizeof(concat_buf) - read_ptr;
if (rem < 2
|| fgets(read_ptr, rem, theme_file) == NULL
) {
bb_error_msg_and_die("bad PPM file '%s'", G.image_filename);
ptr = memchr(skip_whitespace(head), '#', 256);
if (ptr != NULL)
*ptr = 0; /* ignore comments */
strcat(bb_common_bufsiz1, head);
// width, height, max_color_val
if (sscanf(bb_common_bufsiz1, "P6 %u %u %u", &width, &height, &i) == 3
&& i <= 255)
}
read_ptr = strchrnul(read_ptr, '#');
*read_ptr = '\0'; /* ignore #comments */
if (sscanf(concat_buf, "P6 %u %u %u", &w, &h, &max_color_val) == 3
&& max_color_val <= 255
) {
width = w; /* w is on stack, width may be in register */
height = h;
break;
/* If we do not find a signature throughout the whole file then
we will diagnose this via EOF on read in the head of the loop. */
}
}
if (ENABLE_FEATURE_CLEAN_UP)
free(head);
if (width != G.scr_var.xres || height != G.scr_var.yres)
bb_error_msg_and_die("PPM %dx%d does not match screen %dx%d",
width, height, G.scr_var.xres, G.scr_var.yres);
line_size = width*3;
pixline = xmalloc(line_size);
if (width > G.scr_var.xres)
width = G.scr_var.xres;
if (height > G.scr_var.yres)
height = G.scr_var.yres;
pixline = xmalloc(line_size);
for (j = 0; j < height; j++) {
unsigned char *pixel = pixline;
DATA *src = (DATA *)(G.addr + j * G.scr_fix.line_length);
unsigned char *pixel;
DATA *src;
if (fread(pixline, 1, line_size, theme_file) != line_size)
bb_error_msg_and_die("bad PPM file '%s'", G.image_filename);
pixel = pixline;
src = (DATA *)(G.addr + j * G.scr_fix.line_length);
for (i = 0; i < width; i++) {
unsigned thispix;
thispix = (((unsigned)pixel[0] << 8) & 0xf800)
@ -289,8 +288,7 @@ static void fb_drawimage(void)
pixel += 3;
}
}
if (ENABLE_FEATURE_CLEAN_UP)
free(pixline);
free(pixline);
fclose(theme_file);
}
@ -301,7 +299,7 @@ static void fb_drawimage(void)
*/
static void init(const char *cfg_filename)
{
static const char const param_names[] ALIGN1 =
static const char param_names[] ALIGN1 =
"BAR_WIDTH\0" "BAR_HEIGHT\0"
"BAR_LEFT\0" "BAR_TOP\0"
"BAR_R\0" "BAR_G\0" "BAR_B\0"
@ -312,7 +310,7 @@ static void init(const char *cfg_filename)
char *token[2];
parser_t *parser = config_open2(cfg_filename, xfopen_stdin);
while (config_read(parser, token, 2, 2, "#=",
(PARSE_NORMAL | PARSE_MIN_DIE) & ~(PARSE_TRIM | PARSE_COLLAPSE))) {
(PARSE_NORMAL | PARSE_MIN_DIE) & ~(PARSE_TRIM | PARSE_COLLAPSE))) {
unsigned val = xatoi_u(token[1]);
int i = index_in_strings(param_names, token[0]);
if (i < 0)

View File

@ -119,7 +119,7 @@ int microcom_main(int argc UNUSED_PARAM, char **argv)
nfd = 2;
// Not safe_poll: we want to exit on signal
while (!bb_got_signal && poll(pfd, nfd, timeout) > 0) {
if (nfd > 1 && (pfd[1].revents & POLLIN)) {
if (nfd > 1 && pfd[1].revents) {
char c;
// read from stdin -> write to device
if (safe_read(STDIN_FILENO, &c, 1) < 1) {
@ -143,7 +143,7 @@ int microcom_main(int argc UNUSED_PARAM, char **argv)
safe_poll(pfd, 1, delay);
skip_write: ;
}
if (pfd[0].revents & POLLIN) {
if (pfd[0].revents) {
#define iobuf bb_common_bufsiz1
ssize_t len;
// read from device -> write to stdout

View File

@ -1167,7 +1167,7 @@ static NOINLINE void cgi_io_loop_and_exit(int fromCgi_rd, int toCgi_wr, int post
break;
}
if (pfd[TO_CGI].revents & POLLOUT) {
if (pfd[TO_CGI].revents) {
/* hdr_cnt > 0 here due to the way pfd[TO_CGI].events set */
/* Have data from peer and can write to CGI */
count = safe_write(toCgi_wr, hdr_ptr, hdr_cnt);
@ -1184,7 +1184,7 @@ static NOINLINE void cgi_io_loop_and_exit(int fromCgi_rd, int toCgi_wr, int post
}
}
if (pfd[0].revents & POLLIN) {
if (pfd[0].revents) {
/* post_len > 0 && hdr_cnt == 0 here */
/* We expect data, prev data portion is eaten by CGI
* and there *is* data to read from the peer
@ -1202,7 +1202,7 @@ static NOINLINE void cgi_io_loop_and_exit(int fromCgi_rd, int toCgi_wr, int post
}
}
if (pfd[FROM_CGI].revents & POLLIN) {
if (pfd[FROM_CGI].revents) {
/* There is something to read from CGI */
char *rbuf = iobuf;

View File

@ -618,7 +618,7 @@ int telnet_main(int argc UNUSED_PARAM, char **argv)
default:
#ifdef USE_POLL
if (ufds[0].revents & POLLIN)
if (ufds[0].revents)
#else
if (FD_ISSET(STDIN_FILENO, &rfds))
#endif
@ -631,7 +631,7 @@ int telnet_main(int argc UNUSED_PARAM, char **argv)
}
#ifdef USE_POLL
if (ufds[1].revents & POLLIN)
if (ufds[1].revents)
#else
if (FD_ISSET(netfd, &rfds))
#endif

View File

@ -308,7 +308,7 @@ static int tftp_protocol(
if (!ENABLE_TFTP || our_lsa) { /* tftpd */
/* Open file (must be after changing user) */
local_fd = open(local_file, open_mode);
local_fd = open(local_file, open_mode, 0666);
if (local_fd < 0) {
error_pkt_reason = ERR_NOFILE;
strcpy((char*)error_pkt_str, "can't open file");

View File

@ -61,7 +61,7 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv)
logmode |= LOGMODE_SYSLOG;
}
#if ENABLE_FEATURE_UDHCP_PORT
if (opt & 4) { /* -P */
if (opt & 8) { /* -P */
SERVER_PORT = xatou16(str_P);
CLIENT_PORT = SERVER_PORT + 1;
}

View File

@ -546,6 +546,8 @@ int wget_main(int argc UNUSED_PARAM, char **argv)
"passive-ftp\0" No_argument "\xff"
"header\0" Required_argument "\xfe"
"post-data\0" Required_argument "\xfd"
/* Ignored (we don't do ssl) */
"no-check-certificate\0" No_argument "\xfc"
;
#endif
@ -590,6 +592,7 @@ int wget_main(int argc UNUSED_PARAM, char **argv)
if (use_proxy) {
proxy = getenv(target.is_ftp ? "ftp_proxy" : "http_proxy");
if (proxy && proxy[0]) {
server.user = NULL;
parse_url(proxy, &server);
} else {
use_proxy = 0;

View File

@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Busybox version: 1.15.0.svn
# Fri Aug 21 00:14:11 2009
# Busybox version: 1.16.1
# Sun Mar 28 20:00:00 2010
#
CONFIG_HAVE_DOT_CONFIG=y
@ -14,6 +14,8 @@ CONFIG_HAVE_DOT_CONFIG=y
#
# CONFIG_DESKTOP is not set
# CONFIG_EXTRA_COMPAT is not set
CONFIG_INCLUDE_SUSv2=y
# CONFIG_USE_PORTABLE_CODE is not set
CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
@ -22,7 +24,7 @@ CONFIG_FEATURE_VERBOSE_USAGE=y
CONFIG_FEATURE_COMPRESS_USAGE=y
CONFIG_FEATURE_INSTALLER=y
CONFIG_LOCALE_SUPPORT=y
# CONFIG_FEATURE_ASSUME_UNICODE is not set
CONFIG_FEATURE_ASSUME_UNICODE=y
# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
CONFIG_LONG_OPTS=y
CONFIG_FEATURE_DEVPTS=y
@ -59,7 +61,6 @@ CONFIG_EXTRA_CFLAGS=""
CONFIG_NO_DEBUG_LIB=y
# CONFIG_DMALLOC is not set
# CONFIG_EFENCE is not set
CONFIG_INCLUDE_SUSv2=y
#
# Installation Options
@ -120,10 +121,11 @@ CONFIG_FEATURE_CPIO_P=y
# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
CONFIG_GUNZIP=y
CONFIG_GZIP=y
CONFIG_FEATURE_GZIP_LONG_OPTIONS=y
CONFIG_LZOP=y
# CONFIG_LZOP_COMPR_HIGH is not set
# CONFIG_RPM2CPIO is not set
# CONFIG_RPM is not set
CONFIG_RPM2CPIO=y
CONFIG_RPM=y
CONFIG_TAR=y
CONFIG_FEATURE_TAR_CREATE=y
CONFIG_FEATURE_TAR_AUTODETECT=y
@ -133,6 +135,7 @@ CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY=y
CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
CONFIG_FEATURE_TAR_LONG_OPTIONS=y
CONFIG_FEATURE_TAR_UNAME_GNAME=y
CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y
CONFIG_UNCOMPRESS=y
CONFIG_UNLZMA=y
CONFIG_FEATURE_LZMA_FAST=y
@ -148,15 +151,19 @@ CONFIG_CATV=y
CONFIG_CHGRP=y
CONFIG_CHMOD=y
CONFIG_CHOWN=y
CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y
CONFIG_CHROOT=y
CONFIG_CKSUM=y
CONFIG_COMM=y
CONFIG_CP=y
CONFIG_FEATURE_CP_LONG_OPTIONS=y
CONFIG_CUT=y
CONFIG_DATE=y
CONFIG_FEATURE_DATE_ISOFMT=y
CONFIG_FEATURE_DATE_COMPAT=y
CONFIG_DD=y
CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y
CONFIG_FEATURE_DD_IBS_OBS=y
CONFIG_DF=y
CONFIG_FEATURE_DF_FANCY=y
@ -271,7 +278,7 @@ CONFIG_FEATURE_AUTOWIDTH=y
CONFIG_FEATURE_HUMAN_READABLE=y
#
# Common options for md5sum, sha1sum
# Common options for md5sum, sha1sum, sha256sum, sha512sum
#
CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
@ -318,9 +325,8 @@ CONFIG_AWK=y
CONFIG_FEATURE_AWK_LIBM=y
CONFIG_CMP=y
CONFIG_DIFF=y
CONFIG_FEATURE_DIFF_BINARY=y
CONFIG_FEATURE_DIFF_LONG_OPTIONS=y
CONFIG_FEATURE_DIFF_DIR=y
CONFIG_FEATURE_DIFF_MINIMAL=y
CONFIG_ED=y
CONFIG_PATCH=y
CONFIG_SED=y
@ -364,6 +370,7 @@ CONFIG_FEATURE_FIND_DELETE=y
CONFIG_FEATURE_FIND_PATH=y
CONFIG_FEATURE_FIND_REGEX=y
# CONFIG_FEATURE_FIND_CONTEXT is not set
CONFIG_FEATURE_FIND_LINKS=y
CONFIG_GREP=y
CONFIG_FEATURE_GREP_EGREP_ALIAS=y
CONFIG_FEATURE_GREP_FGREP_ALIAS=y
@ -453,6 +460,7 @@ CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED=y
# Options common to multiple modutils
#
# CONFIG_FEATURE_2_4_MODULES is not set
# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set
# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
@ -467,8 +475,8 @@ CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
#
# Linux System Utilities
#
# CONFIG_ACPID is not set
# CONFIG_FEATURE_ACPID_COMPAT is not set
CONFIG_ACPID=y
CONFIG_FEATURE_ACPID_COMPAT=y
CONFIG_BLKID=y
CONFIG_DMESG=y
CONFIG_FEATURE_DMESG_PRETTY=y
@ -488,12 +496,14 @@ CONFIG_FEATURE_FDISK_ADVANCED=y
CONFIG_FINDFS=y
CONFIG_FREERAMDISK=y
CONFIG_FSCK_MINIX=y
CONFIG_MKFS_EXT2=y
CONFIG_MKFS_MINIX=y
#
# Minix filesystem support
#
CONFIG_FEATURE_MINIX2=y
# CONFIG_MKFS_REISER is not set
CONFIG_MKFS_VFAT=y
CONFIG_GETOPT=y
CONFIG_FEATURE_GETOPT_LONG=y
@ -506,6 +516,8 @@ CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
CONFIG_IPCRM=y
CONFIG_IPCS=y
CONFIG_LOSETUP=y
CONFIG_LSPCI=y
CONFIG_LSUSB=y
CONFIG_MDEV=y
CONFIG_FEATURE_MDEV_CONF=y
CONFIG_FEATURE_MDEV_RENAME=y
@ -518,6 +530,7 @@ CONFIG_MORE=y
CONFIG_FEATURE_USE_TERMIOS=y
CONFIG_VOLUMEID=y
CONFIG_FEATURE_VOLUMEID_EXT=y
CONFIG_FEATURE_VOLUMEID_BTRFS=y
CONFIG_FEATURE_VOLUMEID_REISERFS=y
CONFIG_FEATURE_VOLUMEID_FAT=y
CONFIG_FEATURE_VOLUMEID_HFS=y
@ -595,11 +608,12 @@ CONFIG_DEVMEM=y
CONFIG_EJECT=y
CONFIG_FEATURE_EJECT_SCSI=y
CONFIG_FBSPLASH=y
# CONFIG_FLASH_LOCK is not set
# CONFIG_FLASH_UNLOCK is not set
# CONFIG_FLASH_ERASEALL is not set
CONFIG_FLASHCP=y
CONFIG_FLASH_LOCK=y
CONFIG_FLASH_UNLOCK=y
CONFIG_FLASH_ERASEALL=y
CONFIG_IONICE=y
# CONFIG_INOTIFYD is not set
CONFIG_INOTIFYD=y
CONFIG_LAST=y
# CONFIG_FEATURE_LAST_SMALL is not set
CONFIG_FEATURE_LAST_FANCY=y
@ -632,8 +646,8 @@ CONFIG_RUNLEVEL=y
CONFIG_RX=y
CONFIG_SETSID=y
CONFIG_STRINGS=y
# CONFIG_TASKSET is not set
# CONFIG_FEATURE_TASKSET_FANCY is not set
CONFIG_TASKSET=y
CONFIG_FEATURE_TASKSET_FANCY=y
CONFIG_TIME=y
CONFIG_TIMEOUT=y
CONFIG_TTYSIZE=y
@ -658,6 +672,7 @@ CONFIG_ETHER_WAKE=y
CONFIG_FAKEIDENTD=y
CONFIG_FTPD=y
CONFIG_FEATURE_FTP_WRITE=y
CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST=y
CONFIG_FTPGET=y
CONFIG_FTPPUT=y
CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
@ -723,6 +738,8 @@ CONFIG_NETSTAT=y
CONFIG_FEATURE_NETSTAT_WIDE=y
CONFIG_FEATURE_NETSTAT_PRG=y
CONFIG_NSLOOKUP=y
CONFIG_NTPD=y
CONFIG_FEATURE_NTPD_SERVER=y
CONFIG_PING=y
CONFIG_PING6=y
CONFIG_FEATURE_FANCY_PING=y
@ -734,13 +751,16 @@ CONFIG_FEATURE_TELNET_TTYPE=y
CONFIG_FEATURE_TELNET_AUTOLOGIN=y
CONFIG_TELNETD=y
CONFIG_FEATURE_TELNETD_STANDALONE=y
CONFIG_FEATURE_TELNETD_INETD_WAIT=y
CONFIG_TFTP=y
CONFIG_TFTPD=y
CONFIG_FEATURE_TFTP_GET=y
CONFIG_FEATURE_TFTP_PUT=y
CONFIG_FEATURE_TFTP_BLOCKSIZE=y
CONFIG_FEATURE_TFTP_PROGRESS_BAR=y
# CONFIG_TFTP_DEBUG is not set
CONFIG_TRACEROUTE=y
CONFIG_TRACEROUTE6=y
CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
@ -814,6 +834,7 @@ CONFIG_FEATURE_TOP_SMP_CPU=y
CONFIG_FEATURE_TOP_DECIMALS=y
CONFIG_FEATURE_TOP_SMP_PROCESS=y
CONFIG_FEATURE_TOPMEM=y
CONFIG_FEATURE_SHOW_THREADS=y
CONFIG_UPTIME=y
CONFIG_WATCH=y
@ -878,6 +899,7 @@ CONFIG_HUSH_CASE=y
CONFIG_HUSH_FUNCTIONS=y
CONFIG_HUSH_LOCAL=y
CONFIG_HUSH_EXPORT_N=y
CONFIG_HUSH_RANDOM_SUPPORT=y
# CONFIG_LASH is not set
CONFIG_MSH=y
CONFIG_SH_MATH_SUPPORT=y

View File

@ -43,8 +43,6 @@
#endif
#include "busybox.h" /* for applet_names */
//TODO: pull in some .h and find out do we have SINGLE_APPLET_MAIN?
//#include "applet_tables.h" doesn't work
#include <paths.h>
#include <setjmp.h>
#include <fnmatch.h>
@ -58,12 +56,15 @@
# define CLEAR_RANDOM_T(rnd) ((void)0)
#endif
#if defined SINGLE_APPLET_MAIN
#define SKIP_definitions 1
#include "applet_tables.h"
#undef SKIP_definitions
#if NUM_APPLETS == 1
/* STANDALONE does not make sense, and won't compile */
# undef CONFIG_FEATURE_SH_STANDALONE
# undef ENABLE_FEATURE_SH_STANDALONE
# undef IF_FEATURE_SH_STANDALONE
# undef IF_NOT_FEATURE_SH_STANDALONE(...)
# undef IF_NOT_FEATURE_SH_STANDALONE
# define ENABLE_FEATURE_SH_STANDALONE 0
# define IF_FEATURE_SH_STANDALONE(...)
# define IF_NOT_FEATURE_SH_STANDALONE(...) __VA_ARGS__
@ -4539,7 +4540,7 @@ forkchild(struct job *jp, union node *n, int mode)
if (mode == FORK_NOJOB /* is it `xxx` ? */
&& n && n->type == NCMD /* is it single cmd? */
/* && n->ncmd.args->type == NARG - always true? */
&& strcmp(n->ncmd.args->narg.text, "trap") == 0
&& n->ncmd.args && strcmp(n->ncmd.args->narg.text, "trap") == 0
&& n->ncmd.args->narg.next == NULL /* "trap" with no arguments */
/* && n->ncmd.args->narg.backquote == NULL - do we need to check this? */
) {
@ -4627,7 +4628,7 @@ forkchild(struct job *jp, union node *n, int mode)
}
#if JOBS
if (n && n->type == NCMD
&& strcmp(n->ncmd.args->narg.text, "jobs") == 0
&& n->ncmd.args && strcmp(n->ncmd.args->narg.text, "jobs") == 0
) {
TRACE(("Job hack\n"));
/* "jobs": we do not want to clear job list for it,

View File

@ -0,0 +1,3 @@
Test 1
Test 2
Done

View File

@ -0,0 +1,3 @@
echo Test ` ` 1
echo Test `</dev/null` 2
echo Done

View File

@ -125,14 +125,18 @@
# define USE_FOR_MMU(...)
#endif
#if defined SINGLE_APPLET_MAIN
#define SKIP_definitions 1
#include "applet_tables.h"
#undef SKIP_definitions
#if NUM_APPLETS == 1
/* STANDALONE does not make sense, and won't compile */
# undef CONFIG_FEATURE_SH_STANDALONE
# undef ENABLE_FEATURE_SH_STANDALONE
# undef IF_FEATURE_SH_STANDALONE
# undef IF_NOT_FEATURE_SH_STANDALONE
# define ENABLE_FEATURE_SH_STANDALONE 0
# define IF_FEATURE_SH_STANDALONE(...)
# define IF_NOT_FEATURE_SH_STANDALONE(...) __VA_ARGS__
# define ENABLE_FEATURE_SH_STANDALONE 0
#endif
#if !ENABLE_HUSH_INTERACTIVE
@ -3568,7 +3572,9 @@ static void execvp_or_die(char **argv)
{
debug_printf_exec("execing '%s'\n", argv[0]);
sigprocmask(SIG_SETMASK, &G.inherited_set, NULL);
execvp(argv[0], argv);
/* if FEATURE_SH_STANDALONE, "exec <applet_name>" should work,
* therefore we should use BB_EXECVP, not execvp */
BB_EXECVP(argv[0], argv);
bb_perror_msg("can't execute '%s'", argv[0]);
_exit(127); /* bash compat */
}

View File

@ -698,7 +698,7 @@ int syslogd_main(int argc UNUSED_PARAM, char **argv)
if (!(opts & OPT_nofork)) {
bb_daemonize_or_rexec(DAEMON_CHDIR_ROOT, argv);
}
umask(0);
//umask(0); - why??
write_pidfile("/var/run/syslogd.pid");
do_syslogd();
/* return EXIT_SUCCESS; */

View File

@ -7,7 +7,8 @@
# ls -ln shows date. Need to remove that, it's variable.
# sed: coalesce spaces
# cut: remove date
FILTER_LS="sed 's/ */ /g' | cut -d' ' -f 1-5,9-"
# grep: remove "total NNN" lines
FILTER_LS="sed 's/ */ /g' | cut -d' ' -f 1-5,9- | grep -v '^total '"
# newc cpio archive of directory cpio.testdir with empty x and y hardlinks
@ -36,7 +37,6 @@ ls -ln cpio.testdir | $FILTER_LS" \
"\
1 blocks
0
total 0
-rw-r--r-- 2 $user $group 0 x
-rw-r--r-- 2 $user $group 0 y
" \
@ -75,7 +75,6 @@ ls -ln cpio.testdir2/cpio.testdir | $FILTER_LS" \
"\
2 blocks
0
total 8
-rw-r--r-- 2 $user $group 0 empty
-rw-r--r-- 2 $user $group 0 empty1
-rw-r--r-- 2 $user $group 2 nonempty

View File

@ -119,7 +119,7 @@ int script_main(int argc UNUSED_PARAM, char **argv)
* for example, try "script -c true" */
break;
}
if (pfd[0].revents & POLLIN) {
if (pfd[0].revents) {
errno = 0;
count = safe_read(pty, buf, sizeof(buf));
if (count <= 0 && errno != EAGAIN) {
@ -143,7 +143,7 @@ int script_main(int argc UNUSED_PARAM, char **argv)
}
}
}
if (pfd[1].revents & POLLIN) {
if (pfd[1].revents) {
count = safe_read(STDIN_FILENO, buf, sizeof(buf));
if (count <= 0) {
/* err/eof from stdin: don't read stdin anymore */

View File

@ -52,7 +52,11 @@ int FAST_FUNC volume_id_probe_linux_swap(struct volume_id *id /*,uint64_t off*/)
goto found;
}
if (memcmp(buf, "SWAPSPACE2", 10) == 0) {
if (memcmp(buf, "SWAPSPACE2", 10) == 0
|| memcmp(buf, "S1SUSPEND", 9) == 0
|| memcmp(buf, "S2SUSPEND", 9) == 0
|| memcmp(buf, "ULSUSPEND", 9) == 0
) {
sw = volume_id_get_buffer(id, off, sizeof(struct swap_header_v1_2));
if (sw == NULL)
return -1;