aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2007-03-26 13:35:09 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2007-03-26 13:35:09 +0000
commit53091ecd20c294f0e0757a5f4e0d5c8c7b23b555 (patch)
treef4ae0be26d5debff091d2c976e77fa8050c6758c
parentec1a4b5a521b5adf295bc757c25231910f8c854b (diff)
downloadbusybox-w32-53091ecd20c294f0e0757a5f4e0d5c8c7b23b555.tar.gz
busybox-w32-53091ecd20c294f0e0757a5f4e0d5c8c7b23b555.tar.bz2
busybox-w32-53091ecd20c294f0e0757a5f4e0d5c8c7b23b555.zip
Attempt to get more applets compile for NOMMU.
TODO_config_nommu documents what I managed to compile so far (yay! msh works! cool). inetd, telnetd, httpd still do not compile. TODO Also make fork(), daemon() produce warnings on compile stage (in addition to erros on link stage).
-rw-r--r--TODO_config_nommu696
-rw-r--r--archival/libunarchive/Kbuild8
-rw-r--r--console-tools/openvt.c29
-rw-r--r--e2fsprogs/fsck.c15
-rw-r--r--include/libbb.h25
-rw-r--r--libbb/vfork_daemon_rexec.c10
-rw-r--r--loginutils/login.c35
-rw-r--r--miscutils/setsid.c15
-rw-r--r--networking/httpd.c14
-rw-r--r--runit/sv.c17
10 files changed, 769 insertions, 95 deletions
diff --git a/TODO_config_nommu b/TODO_config_nommu
new file mode 100644
index 000000000..74095aa9a
--- /dev/null
+++ b/TODO_config_nommu
@@ -0,0 +1,696 @@
1# This .config compiles for NOMMU.
2# TODO:
3# Pick disabled applet, enable & try to make it compile & work on NOMMU
4
5#
6# Automatically generated make config: don't edit
7# Busybox version: 1.6.0.svn
8# Mon Mar 26 15:00:56 2007
9#
10CONFIG_HAVE_DOT_CONFIG=y
11
12#
13# Busybox Settings
14#
15
16#
17# General Configuration
18#
19# CONFIG_NITPICK is not set
20# CONFIG_DESKTOP is not set
21# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
22# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
23# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
24CONFIG_SHOW_USAGE=y
25CONFIG_FEATURE_VERBOSE_USAGE=y
26# CONFIG_FEATURE_COMPRESS_USAGE is not set
27CONFIG_FEATURE_INSTALLER=y
28# CONFIG_LOCALE_SUPPORT is not set
29CONFIG_GETOPT_LONG=y
30CONFIG_FEATURE_DEVPTS=y
31# CONFIG_FEATURE_CLEAN_UP is not set
32CONFIG_FEATURE_SUID=y
33CONFIG_FEATURE_SYSLOG=y
34# CONFIG_FEATURE_SUID_CONFIG is not set
35# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
36# CONFIG_FEATURE_HAVE_RPC is not set
37# CONFIG_SELINUX is not set
38# CONFIG_FEATURE_EXEC_PREFER_APPLETS is not set
39CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
40
41#
42# Build Options
43#
44# CONFIG_STATIC is not set
45# CONFIG_BUILD_LIBBUSYBOX is not set
46# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set
47# CONFIG_FEATURE_SHARED_BUSYBOX is not set
48CONFIG_LFS=y
49# CONFIG_BUILD_AT_ONCE is not set
50
51#
52# Debugging Options
53#
54# CONFIG_DEBUG is not set
55CONFIG_WERROR=y
56# CONFIG_NO_DEBUG_LIB is not set
57# CONFIG_DMALLOC is not set
58# CONFIG_EFENCE is not set
59CONFIG_INCLUDE_SUSv2=y
60
61#
62# Installation Options
63#
64# CONFIG_INSTALL_NO_USR is not set
65CONFIG_INSTALL_APPLET_SYMLINKS=y
66# CONFIG_INSTALL_APPLET_HARDLINKS is not set
67# CONFIG_INSTALL_APPLET_DONT is not set
68CONFIG_PREFIX="./_install"
69
70#
71# Busybox Library Tuning
72#
73CONFIG_PASSWORD_MINLEN=6
74CONFIG_MD5_SIZE_VS_SPEED=2
75CONFIG_FEATURE_EDITING=y
76# CONFIG_FEATURE_EDITING_FANCY_KEYS is not set
77# CONFIG_FEATURE_EDITING_VI is not set
78CONFIG_FEATURE_EDITING_HISTORY=15
79# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
80# CONFIG_FEATURE_TAB_COMPLETION is not set
81# CONFIG_FEATURE_USERNAME_COMPLETION is not set
82# CONFIG_FEATURE_EDITING_FANCY_PROMPT is not set
83
84#
85# Applets
86#
87
88#
89# Archival Utilities
90#
91CONFIG_AR=y
92CONFIG_FEATURE_AR_LONG_FILENAMES=y
93CONFIG_BUNZIP2=y
94CONFIG_CPIO=y
95# CONFIG_DPKG is not set
96# CONFIG_DPKG_DEB is not set
97# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
98CONFIG_GUNZIP=y
99CONFIG_FEATURE_GUNZIP_UNCOMPRESS=y
100CONFIG_GZIP=y
101CONFIG_RPM2CPIO=y
102# CONFIG_RPM is not set
103CONFIG_TAR=y
104CONFIG_FEATURE_TAR_CREATE=y
105# CONFIG_FEATURE_TAR_BZIP2 is not set
106# CONFIG_FEATURE_TAR_LZMA is not set
107CONFIG_FEATURE_TAR_FROM=y
108# CONFIG_FEATURE_TAR_GZIP is not set
109# CONFIG_FEATURE_TAR_COMPRESS is not set
110CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
111CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
112CONFIG_FEATURE_TAR_LONG_OPTIONS=y
113CONFIG_UNCOMPRESS=y
114CONFIG_UNLZMA=y
115CONFIG_FEATURE_LZMA_FAST=y
116CONFIG_UNZIP=y
117
118#
119# Common options for cpio and tar
120#
121CONFIG_FEATURE_UNARCHIVE_TAPE=y
122# CONFIG_FEATURE_DEB_TAR_GZ is not set
123# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
124# CONFIG_FEATURE_DEB_TAR_LZMA is not set
125
126#
127# Coreutils
128#
129CONFIG_BASENAME=y
130CONFIG_CAL=y
131CONFIG_CAT=y
132CONFIG_CATV=y
133CONFIG_CHGRP=y
134CONFIG_CHMOD=y
135CONFIG_CHOWN=y
136CONFIG_CHROOT=y
137CONFIG_CKSUM=y
138CONFIG_CMP=y
139CONFIG_COMM=y
140CONFIG_CP=y
141CONFIG_CUT=y
142CONFIG_DATE=y
143CONFIG_FEATURE_DATE_ISOFMT=y
144CONFIG_DD=y
145CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
146CONFIG_FEATURE_DD_IBS_OBS=y
147CONFIG_DF=y
148CONFIG_DIFF=y
149CONFIG_FEATURE_DIFF_BINARY=y
150CONFIG_FEATURE_DIFF_DIR=y
151CONFIG_FEATURE_DIFF_MINIMAL=y
152CONFIG_DIRNAME=y
153CONFIG_DOS2UNIX=y
154CONFIG_UNIX2DOS=y
155CONFIG_DU=y
156CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
157CONFIG_ECHO=y
158CONFIG_FEATURE_FANCY_ECHO=y
159CONFIG_ENV=y
160CONFIG_FEATURE_ENV_LONG_OPTIONS=y
161CONFIG_EXPR=y
162CONFIG_EXPR_MATH_SUPPORT_64=y
163CONFIG_FALSE=y
164CONFIG_FOLD=y
165CONFIG_HEAD=y
166CONFIG_FEATURE_FANCY_HEAD=y
167CONFIG_HOSTID=y
168CONFIG_ID=y
169CONFIG_INSTALL=y
170CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
171CONFIG_LENGTH=y
172CONFIG_LN=y
173CONFIG_LOGNAME=y
174CONFIG_LS=y
175CONFIG_FEATURE_LS_FILETYPES=y
176CONFIG_FEATURE_LS_FOLLOWLINKS=y
177CONFIG_FEATURE_LS_RECURSIVE=y
178CONFIG_FEATURE_LS_SORTFILES=y
179CONFIG_FEATURE_LS_TIMESTAMPS=y
180CONFIG_FEATURE_LS_USERNAME=y
181CONFIG_FEATURE_LS_COLOR=y
182CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
183CONFIG_MD5SUM=y
184CONFIG_MKDIR=y
185CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
186CONFIG_MKFIFO=y
187CONFIG_MKNOD=y
188CONFIG_MV=y
189CONFIG_FEATURE_MV_LONG_OPTIONS=y
190CONFIG_NICE=y
191CONFIG_NOHUP=y
192CONFIG_OD=y
193CONFIG_PRINTENV=y
194CONFIG_PRINTF=y
195CONFIG_PWD=y
196CONFIG_REALPATH=y
197CONFIG_RM=y
198CONFIG_RMDIR=y
199CONFIG_SEQ=y
200CONFIG_SHA1SUM=y
201CONFIG_SLEEP=y
202CONFIG_FEATURE_FANCY_SLEEP=y
203CONFIG_SORT=y
204CONFIG_FEATURE_SORT_BIG=y
205CONFIG_SPLIT=y
206CONFIG_STAT=y
207CONFIG_FEATURE_STAT_FORMAT=y
208CONFIG_STTY=y
209CONFIG_SUM=y
210CONFIG_SYNC=y
211CONFIG_TAIL=y
212CONFIG_FEATURE_FANCY_TAIL=y
213CONFIG_TEE=y
214CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
215CONFIG_TEST=y
216CONFIG_FEATURE_TEST_64=y
217CONFIG_TOUCH=y
218CONFIG_TR=y
219CONFIG_FEATURE_TR_CLASSES=y
220CONFIG_FEATURE_TR_EQUIV=y
221CONFIG_TRUE=y
222CONFIG_TTY=y
223CONFIG_UNAME=y
224CONFIG_UNIQ=y
225CONFIG_USLEEP=y
226CONFIG_UUDECODE=y
227CONFIG_UUENCODE=y
228CONFIG_WATCH=y
229CONFIG_WC=y
230CONFIG_FEATURE_WC_LARGE=y
231CONFIG_WHO=y
232CONFIG_WHOAMI=y
233CONFIG_YES=y
234
235#
236# Common options for cp and mv
237#
238CONFIG_FEATURE_PRESERVE_HARDLINKS=y
239
240#
241# Common options for ls, more and telnet
242#
243CONFIG_FEATURE_AUTOWIDTH=y
244
245#
246# Common options for df, du, ls
247#
248CONFIG_FEATURE_HUMAN_READABLE=y
249
250#
251# Common options for md5sum, sha1sum
252#
253CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
254
255#
256# Console Utilities
257#
258CONFIG_CHVT=y
259CONFIG_CLEAR=y
260CONFIG_DEALLOCVT=y
261CONFIG_DUMPKMAP=y
262CONFIG_LOADFONT=y
263CONFIG_LOADKMAP=y
264CONFIG_OPENVT=y
265CONFIG_RESET=y
266CONFIG_RESIZE=y
267CONFIG_FEATURE_RESIZE_PRINT=y
268CONFIG_SETCONSOLE=y
269# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
270CONFIG_SETKEYCODES=y
271CONFIG_SETLOGCONS=y
272
273#
274# Debian Utilities
275#
276CONFIG_MKTEMP=y
277CONFIG_PIPE_PROGRESS=y
278CONFIG_READLINK=y
279CONFIG_FEATURE_READLINK_FOLLOW=y
280CONFIG_RUN_PARTS=y
281CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
282# CONFIG_START_STOP_DAEMON is not set
283# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set
284# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set
285CONFIG_WHICH=y
286
287#
288# Editors
289#
290CONFIG_AWK=y
291CONFIG_FEATURE_AWK_MATH=y
292CONFIG_ED=y
293CONFIG_PATCH=y
294CONFIG_SED=y
295CONFIG_VI=y
296CONFIG_FEATURE_VI_COLON=y
297CONFIG_FEATURE_VI_YANKMARK=y
298CONFIG_FEATURE_VI_SEARCH=y
299CONFIG_FEATURE_VI_USE_SIGNALS=y
300CONFIG_FEATURE_VI_DOT_CMD=y
301CONFIG_FEATURE_VI_READONLY=y
302CONFIG_FEATURE_VI_SETOPTS=y
303CONFIG_FEATURE_VI_SET=y
304CONFIG_FEATURE_VI_WIN_RESIZE=y
305CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
306CONFIG_FEATURE_ALLOW_EXEC=y
307
308#
309# Finding Utilities
310#
311CONFIG_FIND=y
312CONFIG_FEATURE_FIND_PRINT0=y
313CONFIG_FEATURE_FIND_MTIME=y
314CONFIG_FEATURE_FIND_MMIN=y
315CONFIG_FEATURE_FIND_PERM=y
316CONFIG_FEATURE_FIND_TYPE=y
317CONFIG_FEATURE_FIND_XDEV=y
318CONFIG_FEATURE_FIND_NEWER=y
319CONFIG_FEATURE_FIND_INUM=y
320CONFIG_FEATURE_FIND_EXEC=y
321CONFIG_FEATURE_FIND_USER=y
322CONFIG_FEATURE_FIND_NOT=y
323CONFIG_GREP=y
324CONFIG_FEATURE_GREP_EGREP_ALIAS=y
325CONFIG_FEATURE_GREP_FGREP_ALIAS=y
326CONFIG_FEATURE_GREP_CONTEXT=y
327CONFIG_XARGS=y
328CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
329CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
330CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
331CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
332
333#
334# Init Utilities
335#
336# CONFIG_INIT is not set
337# CONFIG_DEBUG_INIT is not set
338# CONFIG_FEATURE_USE_INITTAB is not set
339# CONFIG_FEATURE_INIT_SCTTY is not set
340# CONFIG_FEATURE_INIT_SYSLOG is not set
341# CONFIG_FEATURE_EXTRA_QUIET is not set
342# CONFIG_FEATURE_INIT_COREDUMPS is not set
343# CONFIG_FEATURE_INITRD is not set
344CONFIG_HALT=y
345CONFIG_MESG=y
346
347#
348# Login/Password Management Utilities
349#
350CONFIG_FEATURE_SHADOWPASSWDS=y
351CONFIG_USE_BB_SHADOW=y
352CONFIG_USE_BB_PWD_GRP=y
353CONFIG_ADDGROUP=y
354CONFIG_DELGROUP=y
355CONFIG_ADDUSER=y
356CONFIG_DELUSER=y
357CONFIG_GETTY=y
358CONFIG_FEATURE_UTMP=y
359CONFIG_FEATURE_WTMP=y
360CONFIG_LOGIN=y
361CONFIG_LOGIN_SCRIPTS=y
362CONFIG_FEATURE_SECURETTY=y
363CONFIG_PASSWD=y
364CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
365CONFIG_SU=y
366CONFIG_FEATURE_SU_SYSLOG=y
367CONFIG_FEATURE_SU_CHECKS_SHELLS=y
368CONFIG_SULOGIN=y
369CONFIG_VLOCK=y
370
371#
372# Linux Ext2 FS Progs
373#
374CONFIG_CHATTR=y
375CONFIG_FSCK=y
376CONFIG_LSATTR=y
377
378#
379# Linux Module Utilities
380#
381CONFIG_INSMOD=y
382CONFIG_FEATURE_INSMOD_VERSION_CHECKING=y
383CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS=y
384CONFIG_FEATURE_INSMOD_LOADINKMEM=y
385CONFIG_FEATURE_INSMOD_LOAD_MAP=y
386CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL=y
387CONFIG_RMMOD=y
388CONFIG_LSMOD=y
389CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
390CONFIG_MODPROBE=y
391CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
392CONFIG_FEATURE_MODPROBE_FANCY_ALIAS=y
393
394#
395# Options common to multiple modutils
396#
397CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
398CONFIG_FEATURE_2_4_MODULES=y
399CONFIG_FEATURE_2_6_MODULES=y
400# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
401
402#
403# Linux System Utilities
404#
405CONFIG_DMESG=y
406CONFIG_FEATURE_DMESG_PRETTY=y
407CONFIG_FBSET=y
408CONFIG_FEATURE_FBSET_FANCY=y
409CONFIG_FEATURE_FBSET_READMODE=y
410CONFIG_FDFLUSH=y
411CONFIG_FDFORMAT=y
412CONFIG_FDISK=y
413CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
414CONFIG_FEATURE_FDISK_WRITABLE=y
415CONFIG_FEATURE_AIX_LABEL=y
416CONFIG_FEATURE_SGI_LABEL=y
417CONFIG_FEATURE_SUN_LABEL=y
418CONFIG_FEATURE_OSF_LABEL=y
419CONFIG_FEATURE_FDISK_ADVANCED=y
420CONFIG_FREERAMDISK=y
421CONFIG_FSCK_MINIX=y
422CONFIG_MKFS_MINIX=y
423
424#
425# Minix filesystem support
426#
427CONFIG_FEATURE_MINIX2=y
428CONFIG_GETOPT=y
429CONFIG_HEXDUMP=y
430CONFIG_HWCLOCK=y
431CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
432CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
433CONFIG_IPCRM=y
434CONFIG_IPCS=y
435CONFIG_LOSETUP=y
436CONFIG_MDEV=y
437CONFIG_FEATURE_MDEV_CONF=y
438CONFIG_FEATURE_MDEV_EXEC=y
439CONFIG_MKSWAP=y
440CONFIG_FEATURE_MKSWAP_V0=y
441CONFIG_MORE=y
442CONFIG_FEATURE_USE_TERMIOS=y
443CONFIG_MOUNT=y
444# CONFIG_FEATURE_MOUNT_NFS is not set
445CONFIG_FEATURE_MOUNT_CIFS=y
446CONFIG_FEATURE_MOUNT_FLAGS=y
447CONFIG_FEATURE_MOUNT_FSTAB=y
448CONFIG_PIVOT_ROOT=y
449CONFIG_RDATE=y
450CONFIG_READPROFILE=y
451CONFIG_SETARCH=y
452CONFIG_SWAPONOFF=y
453CONFIG_SWITCH_ROOT=y
454CONFIG_UMOUNT=y
455CONFIG_FEATURE_UMOUNT_ALL=y
456
457#
458# Common options for mount/umount
459#
460CONFIG_FEATURE_MOUNT_LOOP=y
461# CONFIG_FEATURE_MTAB_SUPPORT is not set
462
463#
464# Miscellaneous Utilities
465#
466CONFIG_ADJTIMEX=y
467# CONFIG_BBCONFIG is not set
468CONFIG_CHRT=y
469# CONFIG_CROND is not set
470# CONFIG_DEBUG_CROND_OPTION is not set
471# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
472# CONFIG_CRONTAB is not set
473CONFIG_DC=y
474# CONFIG_DEVFSD is not set
475# CONFIG_DEVFSD_MODLOAD is not set
476# CONFIG_DEVFSD_FG_NP is not set
477# CONFIG_DEVFSD_VERBOSE is not set
478# CONFIG_FEATURE_DEVFS is not set
479CONFIG_EJECT=y
480CONFIG_LAST=y
481CONFIG_LESS=y
482CONFIG_FEATURE_LESS_MAXLINES=9999999
483CONFIG_FEATURE_LESS_BRACKETS=y
484CONFIG_FEATURE_LESS_FLAGS=y
485CONFIG_FEATURE_LESS_FLAGCS=y
486CONFIG_FEATURE_LESS_MARKS=y
487CONFIG_FEATURE_LESS_REGEXP=y
488CONFIG_HDPARM=y
489CONFIG_FEATURE_HDPARM_GET_IDENTITY=y
490CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF=y
491CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF=y
492CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET=y
493CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF=y
494CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA=y
495CONFIG_MAKEDEVS=y
496# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
497CONFIG_FEATURE_MAKEDEVS_TABLE=y
498CONFIG_MOUNTPOINT=y
499CONFIG_MT=y
500CONFIG_NMETER=y
501CONFIG_RAIDAUTORUN=y
502CONFIG_READAHEAD=y
503CONFIG_RUNLEVEL=y
504CONFIG_RX=y
505CONFIG_STRINGS=y
506CONFIG_SETSID=y
507# CONFIG_TASKSET is not set
508# CONFIG_FEATURE_TASKSET_FANCY is not set
509CONFIG_TIME=y
510CONFIG_WATCHDOG=y
511
512#
513# Networking Utilities
514#
515CONFIG_FEATURE_IPV6=y
516# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
517CONFIG_ARP=y
518CONFIG_ARPING=y
519CONFIG_DNSD=y
520CONFIG_ETHER_WAKE=y
521CONFIG_FAKEIDENTD=y
522CONFIG_FTPGET=y
523CONFIG_FTPPUT=y
524CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
525CONFIG_HOSTNAME=y
526# CONFIG_HTTPD is not set
527# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
528# CONFIG_FEATURE_HTTPD_SETUID is not set
529# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
530# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
531# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
532# CONFIG_FEATURE_HTTPD_CGI is not set
533# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
534# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
535# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
536CONFIG_IFCONFIG=y
537CONFIG_FEATURE_IFCONFIG_STATUS=y
538CONFIG_FEATURE_IFCONFIG_SLIP=y
539CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
540CONFIG_FEATURE_IFCONFIG_HW=y
541CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
542# CONFIG_IFUPDOWN is not set
543# CONFIG_FEATURE_IFUPDOWN_IP is not set
544# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set
545# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
546# CONFIG_FEATURE_IFUPDOWN_IPV4 is not set
547# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
548# CONFIG_FEATURE_IFUPDOWN_IPX is not set
549# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
550# CONFIG_INETD is not set
551# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
552# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
553# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
554# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
555# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
556# CONFIG_FEATURE_INETD_RPC is not set
557CONFIG_IP=y
558CONFIG_FEATURE_IP_ADDRESS=y
559CONFIG_FEATURE_IP_LINK=y
560CONFIG_FEATURE_IP_ROUTE=y
561CONFIG_FEATURE_IP_TUNNEL=y
562CONFIG_FEATURE_IP_RULE=y
563CONFIG_FEATURE_IP_SHORT_FORMS=y
564CONFIG_IPADDR=y
565CONFIG_IPLINK=y
566CONFIG_IPROUTE=y
567CONFIG_IPTUNNEL=y
568CONFIG_IPRULE=y
569CONFIG_IPCALC=y
570CONFIG_FEATURE_IPCALC_FANCY=y
571CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y
572CONFIG_NAMEIF=y
573CONFIG_NC=y
574CONFIG_NC_SERVER=y
575CONFIG_NC_EXTRA=y
576CONFIG_NETSTAT=y
577CONFIG_NSLOOKUP=y
578CONFIG_PING=y
579CONFIG_PING6=y
580CONFIG_FEATURE_FANCY_PING=y
581CONFIG_ROUTE=y
582CONFIG_TELNET=y
583CONFIG_FEATURE_TELNET_TTYPE=y
584CONFIG_FEATURE_TELNET_AUTOLOGIN=y
585# CONFIG_TELNETD is not set
586# CONFIG_FEATURE_TELNETD_STANDALONE is not set
587CONFIG_TFTP=y
588CONFIG_FEATURE_TFTP_GET=y
589CONFIG_FEATURE_TFTP_PUT=y
590CONFIG_FEATURE_TFTP_BLOCKSIZE=y
591# CONFIG_DEBUG_TFTP is not set
592CONFIG_TRACEROUTE=y
593# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
594# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
595# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
596CONFIG_APP_UDHCPD=y
597CONFIG_APP_DHCPRELAY=y
598CONFIG_APP_DUMPLEASES=y
599# CONFIG_APP_UDHCPC is not set
600CONFIG_FEATURE_UDHCP_SYSLOG=y
601# CONFIG_FEATURE_UDHCP_DEBUG is not set
602CONFIG_FEATURE_RFC3397=y
603CONFIG_VCONFIG=y
604CONFIG_WGET=y
605CONFIG_FEATURE_WGET_STATUSBAR=y
606CONFIG_FEATURE_WGET_AUTHENTICATION=y
607CONFIG_FEATURE_WGET_LONG_OPTIONS=y
608# CONFIG_ZCIP is not set
609
610#
611# Process Utilities
612#
613CONFIG_FREE=y
614CONFIG_FUSER=y
615CONFIG_KILL=y
616CONFIG_KILLALL=y
617CONFIG_KILLALL5=y
618CONFIG_PIDOF=y
619CONFIG_FEATURE_PIDOF_SINGLE=y
620CONFIG_FEATURE_PIDOF_OMIT=y
621CONFIG_PS=y
622CONFIG_FEATURE_PS_WIDE=y
623CONFIG_RENICE=y
624CONFIG_BB_SYSCTL=y
625CONFIG_TOP=y
626CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
627CONFIG_UPTIME=y
628
629#
630# Shells
631#
632# CONFIG_FEATURE_SH_IS_ASH is not set
633# CONFIG_FEATURE_SH_IS_HUSH is not set
634# CONFIG_FEATURE_SH_IS_LASH is not set
635# CONFIG_FEATURE_SH_IS_MSH is not set
636CONFIG_FEATURE_SH_IS_NONE=y
637# CONFIG_ASH is not set
638# CONFIG_ASH_JOB_CONTROL is not set
639# CONFIG_ASH_READ_NCHARS is not set
640# CONFIG_ASH_READ_TIMEOUT is not set
641# CONFIG_ASH_ALIAS is not set
642# CONFIG_ASH_MATH_SUPPORT is not set
643# CONFIG_ASH_MATH_SUPPORT_64 is not set
644# CONFIG_ASH_GETOPTS is not set
645# CONFIG_ASH_BUILTIN_ECHO is not set
646# CONFIG_ASH_BUILTIN_TEST is not set
647# CONFIG_ASH_CMDCMD is not set
648# CONFIG_ASH_MAIL is not set
649# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set
650# CONFIG_ASH_RANDOM_SUPPORT is not set
651# CONFIG_ASH_EXPAND_PRMT is not set
652# CONFIG_HUSH is not set
653# CONFIG_LASH is not set
654CONFIG_MSH=y
655
656#
657# Bourne Shell Options
658#
659CONFIG_FEATURE_SH_EXTRA_QUIET=y
660# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
661
662#
663# System Logging Utilities
664#
665CONFIG_SYSLOGD=y
666CONFIG_FEATURE_ROTATE_LOGFILE=y
667CONFIG_FEATURE_REMOTE_LOG=y
668CONFIG_FEATURE_IPC_SYSLOG=y
669CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
670CONFIG_LOGREAD=y
671CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
672CONFIG_KLOGD=y
673CONFIG_LOGGER=y
674
675#
676# Runit Utilities
677#
678# CONFIG_RUNSV is not set
679# CONFIG_RUNSVDIR is not set
680CONFIG_SV=y
681# CONFIG_SVLOGD is not set
682CONFIG_CHPST=y
683CONFIG_SETUIDGID=y
684CONFIG_ENVUIDGID=y
685CONFIG_ENVDIR=y
686CONFIG_SOFTLIMIT=y
687# CONFIG_CHCON is not set
688# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
689# CONFIG_GETENFORCE is not set
690# CONFIG_GETSEBOOL is not set
691# CONFIG_LOAD_POLICY is not set
692# CONFIG_MATCHPATHCON is not set
693# CONFIG_RUNCON is not set
694# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
695# CONFIG_SELINUXENABLED is not set
696# CONFIG_SETENFORCE is not set
diff --git a/archival/libunarchive/Kbuild b/archival/libunarchive/Kbuild
index 4e1454184..010043c4c 100644
--- a/archival/libunarchive/Kbuild
+++ b/archival/libunarchive/Kbuild
@@ -26,7 +26,6 @@ lib-y:= \
26\ 26\
27 data_align.o \ 27 data_align.o \
28 find_list_entry.o \ 28 find_list_entry.o \
29 open_transformer.o \
30 init_handle.o 29 init_handle.o
31 30
32GUNZIP_FILES:= check_header_gzip.o decompress_unzip.o 31GUNZIP_FILES:= check_header_gzip.o decompress_unzip.o
@@ -36,6 +35,13 @@ DPKG_FILES:= \
36 get_header_tar.o \ 35 get_header_tar.o \
37 filter_accept_list_reassign.o 36 filter_accept_list_reassign.o
38 37
38# open_transformer uses fork. Compile it only if absolutely necessary
39lib-$(CONFIG_RPM) += open_transformer.o
40lib-$(CONFIG_FEATURE_TAR_BZIP2) += open_transformer.o
41lib-$(CONFIG_FEATURE_TAR_LZMA) += open_transformer.o
42lib-$(CONFIG_FEATURE_TAR_GZIP) += open_transformer.o
43lib-$(CONFIG_FEATURE_TAR_COMPRESS) += open_transformer.o
44
39lib-$(CONFIG_AR) += get_header_ar.o unpack_ar_archive.o 45lib-$(CONFIG_AR) += get_header_ar.o unpack_ar_archive.o
40lib-$(CONFIG_BUNZIP2) += decompress_bunzip2.o 46lib-$(CONFIG_BUNZIP2) += decompress_bunzip2.o
41lib-$(CONFIG_UNLZMA) += decompress_unlzma.o 47lib-$(CONFIG_UNLZMA) += decompress_unlzma.o
diff --git a/console-tools/openvt.c b/console-tools/openvt.c
index 0584584df..882563b29 100644
--- a/console-tools/openvt.c
+++ b/console-tools/openvt.c
@@ -15,30 +15,21 @@
15int openvt_main(int argc, char **argv); 15int openvt_main(int argc, char **argv);
16int openvt_main(int argc, char **argv) 16int openvt_main(int argc, char **argv)
17{ 17{
18 int fd;
19 char vtname[sizeof(VC_FORMAT) + 2]; 18 char vtname[sizeof(VC_FORMAT) + 2];
20 19
21 if (argc < 3) { 20 if (argc < 3)
22 bb_show_usage(); 21 bb_show_usage();
23 } 22
24 /* check for illegal vt number: < 1 or > 63 */ 23 /* check for illegal vt number: < 1 or > 63 */
25 sprintf(vtname, VC_FORMAT, (int)xatou_range(argv[1], 1, 63)); 24 sprintf(vtname, VC_FORMAT, (int)xatou_range(argv[1], 1, 63));
26 25
27//FIXME NOMMU 26 bb_daemonize_or_rexec(DAEMON_CLOSE_EXTRA_FDS, argv);
28 if (fork() == 0) { 27 /* grab new one */
29 /* child */ 28 close(0);
30 /* leave current vt (controlling tty) */ 29 xopen(vtname, O_RDWR);
31 setsid(); 30 dup2(0, STDOUT_FILENO);
32 /* and grab new one */ 31 dup2(0, STDERR_FILENO);
33 fd = xopen(vtname, O_RDWR);
34 /* Reassign stdin, stdout and sterr */
35 dup2(fd, STDIN_FILENO);
36 dup2(fd, STDOUT_FILENO);
37 dup2(fd, STDERR_FILENO);
38 while (fd > 2) close(fd--);
39 32
40 BB_EXECVP(argv[2], &argv[2]); 33 BB_EXECVP(argv[2], &argv[2]);
41 _exit(1); 34 _exit(1);
42 }
43 return EXIT_SUCCESS;
44} 35}
diff --git a/e2fsprogs/fsck.c b/e2fsprogs/fsck.c
index c31ab3f1a..447b4d008 100644
--- a/e2fsprogs/fsck.c
+++ b/e2fsprogs/fsck.c
@@ -667,20 +667,9 @@ static void execute(const char *type, const char *device, const char *mntpt,
667 /* Fork and execute the correct program. */ 667 /* Fork and execute the correct program. */
668 pid = -1; 668 pid = -1;
669 if (!noexecute) { 669 if (!noexecute) {
670/* TODO: NOMMU friendly way (vfork)? */ 670 pid = spawn(argv);
671 pid = fork();
672 if (pid < 0) 671 if (pid < 0)
673 bb_perror_msg_and_die("fork"); 672 bb_perror_msg("%s", argv[0]);
674 if (pid == 0) {
675 /* Child */
676 if (!interactive) {
677 /* NB: e2fsck will complain because of this!
678 * Use "fsck -s" to avoid... */
679 close(0);
680 }
681 BB_EXECVP(argv[0], argv);
682 bb_perror_msg_and_die("%s", argv[0]);
683 }
684 } 673 }
685 674
686 for (i = num_args+1; i < argc; i++) 675 for (i = num_args+1; i < argc; i++)
diff --git a/include/libbb.h b/include/libbb.h
index ff7d3bf1a..32e099b54 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -471,7 +471,9 @@ int bb_execvp(const char *file, char *const argv[]);
471pid_t spawn(char **argv); 471pid_t spawn(char **argv);
472pid_t xspawn(char **argv); 472pid_t xspawn(char **argv);
473/* Helpers for daemonization. 473/* Helpers for daemonization.
474 *
474 * bb_daemonize(flags) = daemonize, does not compile on NOMMU 475 * bb_daemonize(flags) = daemonize, does not compile on NOMMU
476 *
475 * bb_daemonize_or_rexec(flags, argv) = daemonizes on MMU (and ignores argv), 477 * bb_daemonize_or_rexec(flags, argv) = daemonizes on MMU (and ignores argv),
476 * rexec's itself on NOMMU with argv passed as command line. 478 * rexec's itself on NOMMU with argv passed as command line.
477 * Thus bb_daemonize_or_rexec may cause your <applet>_main() to be re-executed 479 * Thus bb_daemonize_or_rexec may cause your <applet>_main() to be re-executed
@@ -482,7 +484,12 @@ pid_t xspawn(char **argv);
482 * Both of the above will redirect fd 0,1,2 to /dev/null and drop ctty 484 * Both of the above will redirect fd 0,1,2 to /dev/null and drop ctty
483 * (will do setsid()). 485 * (will do setsid()).
484 * 486 *
487 * forkexit_or_rexec(argv) = bare-bones "fork + parent exits" on MMU,
488 * "vfork + re-exec ourself" on NOMMU. No fd redirection, no setsid().
489 * Currently used for openvt. On MMU ignores argv.
490 *
485 * Helper for network daemons in foreground mode: 491 * Helper for network daemons in foreground mode:
492 *
486 * bb_sanitize_stdio() = make sure that fd 0,1,2 are opened by opening them 493 * bb_sanitize_stdio() = make sure that fd 0,1,2 are opened by opening them
487 * to /dev/null if they are not. 494 * to /dev/null if they are not.
488 */ 495 */
@@ -493,16 +500,16 @@ enum {
493 DAEMON_ONLY_SANITIZE = 8, /* internal use */ 500 DAEMON_ONLY_SANITIZE = 8, /* internal use */
494}; 501};
495#ifndef BB_NOMMU 502#ifndef BB_NOMMU
496#define bb_daemonize_or_rexec(flags, argv) bb_daemonize_or_rexec(flags) 503 void forkexit_or_rexec(void);
497#define bb_daemonize(flags) bb_daemonize_or_rexec(flags, bogus) 504# define forkexit_or_rexec(argv) forkexit_or_rexec()
505# define bb_daemonize_or_rexec(flags, argv) bb_daemonize_or_rexec(flags)
506# define bb_daemonize(flags) bb_daemonize_or_rexec(flags, bogus)
498#else 507#else
499extern smallint re_execed; 508 void forkexit_or_rexec(char **argv);
500pid_t BUG_fork_is_unavailable_on_nommu(void); 509 extern smallint re_execed;
501pid_t BUG_daemon_is_unavailable_on_nommu(void); 510# define fork() BUG_fork_is_unavailable_on_nommu()
502pid_t BUG_bb_daemonize_is_unavailable_on_nommu(void); 511# define daemon(a,b) BUG_daemon_is_unavailable_on_nommu()
503#define fork() BUG_fork_is_unavailable_on_nommu() 512# define bb_daemonize(a) BUG_bb_daemonize_is_unavailable_on_nommu()
504#define daemon(a,b) BUG_daemon_is_unavailable_on_nommu()
505#define bb_daemonize(a) BUG_bb_daemonize_is_unavailable_on_nommu()
506#endif 513#endif
507void bb_daemonize_or_rexec(int flags, char **argv); 514void bb_daemonize_or_rexec(int flags, char **argv);
508void bb_sanitize_stdio(void); 515void bb_sanitize_stdio(void);
diff --git a/libbb/vfork_daemon_rexec.c b/libbb/vfork_daemon_rexec.c
index c59b0b6fd..89ae9a73c 100644
--- a/libbb/vfork_daemon_rexec.c
+++ b/libbb/vfork_daemon_rexec.c
@@ -115,7 +115,7 @@ void vfork_daemon_rexec(int nochdir, int noclose, char **argv)
115#endif /* BB_NOMMU */ 115#endif /* BB_NOMMU */
116 116
117#ifdef BB_NOMMU 117#ifdef BB_NOMMU
118static void daemon_or_rexec(char **argv) 118void forkexit_or_rexec(char **argv)
119{ 119{
120 pid_t pid; 120 pid_t pid;
121 /* Maybe we are already re-execed and come here again? */ 121 /* Maybe we are already re-execed and come here again? */
@@ -135,7 +135,9 @@ static void daemon_or_rexec(char **argv)
135 bb_perror_msg_and_die("exec %s", CONFIG_BUSYBOX_EXEC_PATH); 135 bb_perror_msg_and_die("exec %s", CONFIG_BUSYBOX_EXEC_PATH);
136} 136}
137#else 137#else
138static void daemon_or_rexec(void) 138/* Dance around (void)...*/
139#undef forkexit_or_rexec
140void forkexit_or_rexec(void)
139{ 141{
140 pid_t pid; 142 pid_t pid;
141 pid = fork(); 143 pid = fork();
@@ -145,7 +147,7 @@ static void daemon_or_rexec(void)
145 exit(0); 147 exit(0);
146 /* child */ 148 /* child */
147} 149}
148#define daemon_or_rexec(argv) daemon_or_rexec() 150#define forkexit_or_rexec(argv) forkexit_or_rexec()
149#endif 151#endif
150 152
151 153
@@ -170,7 +172,7 @@ void bb_daemonize_or_rexec(int flags, char **argv)
170 fd = dup(fd); /* have 0,1,2 open at least to /dev/null */ 172 fd = dup(fd); /* have 0,1,2 open at least to /dev/null */
171 173
172 if (!(flags & DAEMON_ONLY_SANITIZE)) { 174 if (!(flags & DAEMON_ONLY_SANITIZE)) {
173 daemon_or_rexec(argv); 175 forkexit_or_rexec(argv);
174 /* if daemonizing, make sure we detach from stdio */ 176 /* if daemonizing, make sure we detach from stdio */
175 setsid(); 177 setsid();
176 dup2(fd, 0); 178 dup2(fd, 0);
diff --git a/loginutils/login.c b/loginutils/login.c
index 791e44d83..3d8b8e540 100644
--- a/loginutils/login.c
+++ b/loginutils/login.c
@@ -337,25 +337,24 @@ auth_failed:
337 fchown(0, pw->pw_uid, pw->pw_gid); 337 fchown(0, pw->pw_uid, pw->pw_gid);
338 fchmod(0, 0600); 338 fchmod(0, 0600);
339 339
340/* TODO: be nommu-friendly, use spawn? */
341 if (ENABLE_LOGIN_SCRIPTS) { 340 if (ENABLE_LOGIN_SCRIPTS) {
342 char *script = getenv("LOGIN_PRE_SUID_SCRIPT"); 341 char *t_argv[2];
343 if (script) { 342
344 char *t_argv[2] = { script, NULL }; 343 t_argv[0] = getenv("LOGIN_PRE_SUID_SCRIPT");
345 switch (fork()) { 344 if (t_argv[0]) {
346 case -1: break; 345 t_argv[1] = NULL;
347 case 0: /* child */ 346 setenv("LOGIN_TTY", full_tty, 1);
348 xchdir("/"); 347 setenv("LOGIN_USER", pw->pw_name, 1);
349 setenv("LOGIN_TTY", full_tty, 1); 348 setenv("LOGIN_UID", utoa(pw->pw_uid), 1);
350 setenv("LOGIN_USER", pw->pw_name, 1); 349 setenv("LOGIN_GID", utoa(pw->pw_gid), 1);
351 setenv("LOGIN_UID", utoa(pw->pw_uid), 1); 350 setenv("LOGIN_SHELL", pw->pw_shell, 1);
352 setenv("LOGIN_GID", utoa(pw->pw_gid), 1); 351 xspawn(argv); /* NOMMU-friendly */
353 setenv("LOGIN_SHELL", pw->pw_shell, 1); 352 unsetenv("LOGIN_TTY");
354 BB_EXECVP(script, t_argv); 353 unsetenv("LOGIN_USER");
355 exit(1); 354 unsetenv("LOGIN_UID");
356 default: /* parent */ 355 unsetenv("LOGIN_GID");
357 wait(NULL); 356 unsetenv("LOGIN_SHELL");
358 } 357 wait(NULL);
359 } 358 }
360 } 359 }
361 360
diff --git a/miscutils/setsid.c b/miscutils/setsid.c
index 6db07be5f..c878f524b 100644
--- a/miscutils/setsid.c
+++ b/miscutils/setsid.c
@@ -22,21 +22,12 @@ int setsid_main(int argc, char *argv[])
22 if (argc < 2) 22 if (argc < 2)
23 bb_show_usage(); 23 bb_show_usage();
24 24
25 if (getpgrp() == getpid()) { 25 /* Comment why is this necessary? */
26 switch (fork()) { 26 if (getpgrp() == getpid())
27 case -1: 27 forkexit_or_rexec(argv);
28 bb_perror_msg_and_die("fork");
29 case 0:
30 break;
31 default: /* parent */
32 exit(0);
33 }
34 }
35 /* child */
36 28
37 setsid(); /* no error possible */ 29 setsid(); /* no error possible */
38 30
39 BB_EXECVP(argv[1], argv + 1); 31 BB_EXECVP(argv[1], argv + 1);
40
41 bb_perror_msg_and_die("%s", argv[1]); 32 bb_perror_msg_and_die("%s", argv[1]);
42} 33}
diff --git a/networking/httpd.c b/networking/httpd.c
index b8d9b6b6f..8ab2bc45d 100644
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -1938,13 +1938,6 @@ enum {
1938 OPT_FOREGROUND = 1 << p_opt_foreground, 1938 OPT_FOREGROUND = 1 << p_opt_foreground,
1939}; 1939};
1940 1940
1941static const char httpd_opts[] = "c:d:h:"
1942 USE_FEATURE_HTTPD_ENCODE_URL_STR("e:")
1943 USE_FEATURE_HTTPD_BASIC_AUTH("r:")
1944 USE_FEATURE_HTTPD_AUTH_MD5("m:")
1945 USE_FEATURE_HTTPD_SETUID("u:")
1946 "p:if";
1947
1948 1941
1949int httpd_main(int argc, char *argv[]); 1942int httpd_main(int argc, char *argv[]);
1950int httpd_main(int argc, char *argv[]) 1943int httpd_main(int argc, char *argv[])
@@ -1970,7 +1963,12 @@ int httpd_main(int argc, char *argv[])
1970 config->port = 80; 1963 config->port = 80;
1971 config->ContentLength = -1; 1964 config->ContentLength = -1;
1972 1965
1973 opt = getopt32(argc, argv, httpd_opts, 1966 opt = getopt32(argc, argv, "c:d:h:"
1967 USE_FEATURE_HTTPD_ENCODE_URL_STR("e:")
1968 USE_FEATURE_HTTPD_BASIC_AUTH("r:")
1969 USE_FEATURE_HTTPD_AUTH_MD5("m:")
1970 USE_FEATURE_HTTPD_SETUID("u:")
1971 "p:if",
1974 &(config->configFile), &url_for_decode, &home_httpd 1972 &(config->configFile), &url_for_decode, &home_httpd
1975 USE_FEATURE_HTTPD_ENCODE_URL_STR(, &url_for_encode) 1973 USE_FEATURE_HTTPD_ENCODE_URL_STR(, &url_for_encode)
1976 USE_FEATURE_HTTPD_BASIC_AUTH(, &(config->realm)) 1974 USE_FEATURE_HTTPD_BASIC_AUTH(, &(config->realm))
diff --git a/runit/sv.c b/runit/sv.c
index 051e64e67..d52eb6d22 100644
--- a/runit/sv.c
+++ b/runit/sv.c
@@ -310,21 +310,16 @@ static int checkscript(void)
310 return 0; 310 return 0;
311 } 311 }
312 /* if (!(s.st_mode & S_IXUSR)) return 1; */ 312 /* if (!(s.st_mode & S_IXUSR)) return 1; */
313 if ((pid = fork()) == -1) { 313 prog[0] = (char*)"./check";
314 bb_perror_msg(WARN"cannot fork for %s/check", *service); 314 prog[1] = NULL;
315 pid = spawn(prog);
316 if (pid <= 0) {
317 bb_perror_msg(WARN"cannot %s child %s/check", "run", *service);
315 return 0; 318 return 0;
316 } 319 }
317 if (!pid) {
318 prog[0] = (char*)"./check";
319 prog[1] = NULL;
320 close(1);
321 execve("check", prog, environ);
322 bb_perror_msg(WARN"cannot run %s/check", *service);
323 _exit(0);
324 }
325 while (wait_pid(&w, pid) == -1) { 320 while (wait_pid(&w, pid) == -1) {
326 if (errno == EINTR) continue; 321 if (errno == EINTR) continue;
327 bb_perror_msg(WARN"cannot wait for child %s/check", *service); 322 bb_perror_msg(WARN"cannot %s child %s/check", "wait for", *service);
328 return 0; 323 return 0;
329 } 324 }
330 return !wait_exitcode(w); 325 return !wait_exitcode(w);