summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>1999-11-18 00:19:26 +0000
committerEric Andersen <andersen@codepoet.org>1999-11-18 00:19:26 +0000
commitded6259f624c34f3bc221d1b2caee30fbcd729a4 (patch)
treecf1f7e4ffe1e24939dcfbc66d3bf0453081c5dc1
parentd80e851dc05f978dded84b7ac9fcae7066e3ffe0 (diff)
downloadbusybox-w32-0_36.tar.gz
busybox-w32-0_36.tar.bz2
busybox-w32-0_36.zip
Latest and greatest0_36
-rw-r--r--Changelog19
-rw-r--r--LICENSE357
-rw-r--r--Makefile7
-rw-r--r--README40
-rw-r--r--busybox.spec2
-rw-r--r--chmod_chown_chgrp.c16
-rw-r--r--coreutils/mkdir.c2
-rw-r--r--examples/busybox.spec2
-rw-r--r--init.c11
-rw-r--r--init/init.c11
-rw-r--r--mkdir.c2
11 files changed, 414 insertions, 55 deletions
diff --git a/Changelog b/Changelog
index bba974618..efd70cbb8 100644
--- a/Changelog
+++ b/Changelog
@@ -1,13 +1,12 @@
10.36 10.36
2 * fixed dd so it properly defaults to stdin and stdout when no 2 * fixed dd so it properly defaults to stdin and stdout when no
3 if= and of= are set (fix thanks to Eric Delaunay). 3 if= and of= are set (fix thanks to Eric Delaunay).
4 * Don't try to close the file descriptor of a pipe. (fix also from 4 * Don't try to close the file descriptor of a pipein tar. (fix also from
5 Eric Delaunay). 5 Eric Delaunay).
6 * Made createPath be quiet (again thanks to Eric Delaunay). 6 * Made createPath be quiet (again thanks to Eric Delaunay).
7 * If BB_CONSOLE_CMD_IF_RC_SCRIPT_EXITS is defined, then whatever 7 * If BB_CONSOLE_CMD_IF_RC_SCRIPT_EXITS is defined, then whatever
8 command you define it as will be run if the init script exits. 8 command you define it as will be run if the init script exits.
9 * Made createPath be quiet (again thanks to Eric Delaunay). 9 * Updated install.sh to make it more robust (thanks to Adam Di Carlo)
10 * Updated to install.sh to make it more robust (thanks to Adam Di Carlo)
11 * NFS support added to mount by Eric Delaunay. It costs 10k when compiled 10 * NFS support added to mount by Eric Delaunay. It costs 10k when compiled
12 in, but that is still a big win for those that use NFS. 11 in, but that is still a big win for those that use NFS.
13 * Made 'rm -f' be silent for non-existant files (thanks to Eric Delaunay). 12 * Made 'rm -f' be silent for non-existant files (thanks to Eric Delaunay).
@@ -15,9 +14,17 @@
15 and acts as god intended gunzip and zcat to act. They answer --help and 14 and acts as god intended gunzip and zcat to act. They answer --help and
16 obey the '-c' flag. 15 obey the '-c' flag.
17 * Fixed a bug in mv which caused it to not move files when the destination 16 * Fixed a bug in mv which caused it to not move files when the destination
18 was a directory name. 17 was a directory.
19 18 * Fixed a decimal-instead-of-octal bug causing mkdir to make directories
20 -Erik Andersen 19 with very wrong permissions.
20 * chmod would overwrite file permissions instead of modifying them.
21 Now it properly modifies permissions.
22 * Init now sends warnings destined for the console to /dev/console to ensure
23 they show up on whatever the active console it. Otherwise important
24 messages (for example that the system is rebooting) were not seen when
25 switched to a different VT.
26
27 -Erik Andersen, Nov 17, 1999
21 28
220.35 290.35
23 * gzip now obeys the principle of least surprise and acts like god intended 30 * gzip now obeys the principle of least surprise and acts like god intended
diff --git a/LICENSE b/LICENSE
index fcbeb8a2c..0bcb75984 100644
--- a/LICENSE
+++ b/LICENSE
@@ -17,15 +17,362 @@ Copyright 1998 Dave Cinege <dcinege@psychosis.com>
17mini-gzip(gzip), mini-netcat(mnc) 17mini-gzip(gzip), mini-netcat(mnc)
18Copyright 1998 Charles P. Wright <cpwright@villagenet.com> 18Copyright 1998 Charles P. Wright <cpwright@villagenet.com>
19 19
20 20Tons of new stuff as noted in header files
21bunches of stuff as noted in header files
22Copyright (C) 1999 by Lineo, inc. and written by 21Copyright (C) 1999 by Lineo, inc. and written by
23Erik Andersen <andersen@lineo.com>, <andersee@debian.org> 22Erik Andersen <andersen@lineo.com>, <andersee@debian.org>
24 23
25copyright and license info.
26 24
27This program suite may be distributed under the GNU General Public License.
28 25
26Please feed suggestions, bug reports, insults, and bribes back to:
27 Erik Andersen
28 <andersen@lineo.com>
29 <andersee@deban.org>
30
31
32
33Busybox may be used and distributed under the GNU General Public License.
34
35---------------------------------------------------------------------------
36
37
38 GNU GENERAL PUBLIC LICENSE
39 Version 2, June 1991
40
41 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
42 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
43 Everyone is permitted to copy and distribute verbatim copies
44 of this license document, but changing it is not allowed.
45
46 Preamble
47
48 The licenses for most software are designed to take away your
49freedom to share and change it. By contrast, the GNU General Public
50License is intended to guarantee your freedom to share and change free
51software--to make sure the software is free for all its users. This
52General Public License applies to most of the Free Software
53Foundation's software and to any other program whose authors commit to
54using it. (Some other Free Software Foundation software is covered by
55the GNU Library General Public License instead.) You can apply it to
56your programs, too.
57
58 When we speak of free software, we are referring to freedom, not
59price. Our General Public Licenses are designed to make sure that you
60have the freedom to distribute copies of free software (and charge for
61this service if you wish), that you receive source code or can get it
62if you want it, that you can change the software or use pieces of it
63in new free programs; and that you know you can do these things.
64
65 To protect your rights, we need to make restrictions that forbid
66anyone to deny you these rights or to ask you to surrender the rights.
67These restrictions translate to certain responsibilities for you if you
68distribute copies of the software, or if you modify it.
69
70 For example, if you distribute copies of such a program, whether
71gratis or for a fee, you must give the recipients all the rights that
72you have. You must make sure that they, too, receive or can get the
73source code. And you must show them these terms so they know their
74rights.
75
76 We protect your rights with two steps: (1) copyright the software, and
77(2) offer you this license which gives you legal permission to copy,
78distribute and/or modify the software.
79
80 Also, for each author's protection and ours, we want to make certain
81that everyone understands that there is no warranty for this free
82software. If the software is modified by someone else and passed on, we
83want its recipients to know that what they have is not the original, so
84that any problems introduced by others will not reflect on the original
85authors' reputations.
86
87 Finally, any free program is threatened constantly by software
88patents. We wish to avoid the danger that redistributors of a free
89program will individually obtain patent licenses, in effect making the
90program proprietary. To prevent this, we have made it clear that any
91patent must be licensed for everyone's free use or not licensed at all.
92
93 The precise terms and conditions for copying, distribution and
94modification follow.
95
96 GNU GENERAL PUBLIC LICENSE
97 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
98
99 0. This License applies to any program or other work which contains
100a notice placed by the copyright holder saying it may be distributed
101under the terms of this General Public License. The "Program", below,
102refers to any such program or work, and a "work based on the Program"
103means either the Program or any derivative work under copyright law:
104that is to say, a work containing the Program or a portion of it,
105either verbatim or with modifications and/or translated into another
106language. (Hereinafter, translation is included without limitation in
107the term "modification".) Each licensee is addressed as "you".
108
109Activities other than copying, distribution and modification are not
110covered by this License; they are outside its scope. The act of
111running the Program is not restricted, and the output from the Program
112is covered only if its contents constitute a work based on the
113Program (independent of having been made by running the Program).
114Whether that is true depends on what the Program does.
115
116 1. You may copy and distribute verbatim copies of the Program's
117source code as you receive it, in any medium, provided that you
118conspicuously and appropriately publish on each copy an appropriate
119copyright notice and disclaimer of warranty; keep intact all the
120notices that refer to this License and to the absence of any warranty;
121and give any other recipients of the Program a copy of this License
122along with the Program.
123
124You may charge a fee for the physical act of transferring a copy, and
125you may at your option offer warranty protection in exchange for a fee.
126
127 2. You may modify your copy or copies of the Program or any portion
128of it, thus forming a work based on the Program, and copy and
129distribute such modifications or work under the terms of Section 1
130above, provided that you also meet all of these conditions:
131
132 a) You must cause the modified files to carry prominent notices
133 stating that you changed the files and the date of any change.
134
135 b) You must cause any work that you distribute or publish, that in
136 whole or in part contains or is derived from the Program or any
137 part thereof, to be licensed as a whole at no charge to all third
138 parties under the terms of this License.
139
140 c) If the modified program normally reads commands interactively
141 when run, you must cause it, when started running for such
142 interactive use in the most ordinary way, to print or display an
143 announcement including an appropriate copyright notice and a
144 notice that there is no warranty (or else, saying that you provide
145 a warranty) and that users may redistribute the program under
146 these conditions, and telling the user how to view a copy of this
147 License. (Exception: if the Program itself is interactive but
148 does not normally print such an announcement, your work based on
149 the Program is not required to print an announcement.)
150
151These requirements apply to the modified work as a whole. If
152identifiable sections of that work are not derived from the Program,
153and can be reasonably considered independent and separate works in
154themselves, then this License, and its terms, do not apply to those
155sections when you distribute them as separate works. But when you
156distribute the same sections as part of a whole which is a work based
157on the Program, the distribution of the whole must be on the terms of
158this License, whose permissions for other licensees extend to the
159entire whole, and thus to each and every part regardless of who wrote it.
160
161Thus, it is not the intent of this section to claim rights or contest
162your rights to work written entirely by you; rather, the intent is to
163exercise the right to control the distribution of derivative or
164collective works based on the Program.
165
166In addition, mere aggregation of another work not based on the Program
167with the Program (or with a work based on the Program) on a volume of
168a storage or distribution medium does not bring the other work under
169the scope of this License.
170
171 3. You may copy and distribute the Program (or a work based on it,
172under Section 2) in object code or executable form under the terms of
173Sections 1 and 2 above provided that you also do one of the following:
174
175 a) Accompany it with the complete corresponding machine-readable
176 source code, which must be distributed under the terms of Sections
177 1 and 2 above on a medium customarily used for software interchange; or,
178
179 b) Accompany it with a written offer, valid for at least three
180 years, to give any third party, for a charge no more than your
181 cost of physically performing source distribution, a complete
182 machine-readable copy of the corresponding source code, to be
183 distributed under the terms of Sections 1 and 2 above on a medium
184 customarily used for software interchange; or,
185
186 c) Accompany it with the information you received as to the offer
187 to distribute corresponding source code. (This alternative is
188 allowed only for noncommercial distribution and only if you
189 received the program in object code or executable form with such
190 an offer, in accord with Subsection b above.)
191
192The source code for a work means the preferred form of the work for
193making modifications to it. For an executable work, complete source
194code means all the source code for all modules it contains, plus any
195associated interface definition files, plus the scripts used to
196control compilation and installation of the executable. However, as a
197special exception, the source code distributed need not include
198anything that is normally distributed (in either source or binary
199form) with the major components (compiler, kernel, and so on) of the
200operating system on which the executable runs, unless that component
201itself accompanies the executable.
202
203If distribution of executable or object code is made by offering
204access to copy from a designated place, then offering equivalent
205access to copy the source code from the same place counts as
206distribution of the source code, even though third parties are not
207compelled to copy the source along with the object code.
208
209 4. You may not copy, modify, sublicense, or distribute the Program
210except as expressly provided under this License. Any attempt
211otherwise to copy, modify, sublicense or distribute the Program is
212void, and will automatically terminate your rights under this License.
213However, parties who have received copies, or rights, from you under
214this License will not have their licenses terminated so long as such
215parties remain in full compliance.
216
217 5. You are not required to accept this License, since you have not
218signed it. However, nothing else grants you permission to modify or
219distribute the Program or its derivative works. These actions are
220prohibited by law if you do not accept this License. Therefore, by
221modifying or distributing the Program (or any work based on the
222Program), you indicate your acceptance of this License to do so, and
223all its terms and conditions for copying, distributing or modifying
224the Program or works based on it.
225
226 6. Each time you redistribute the Program (or any work based on the
227Program), the recipient automatically receives a license from the
228original licensor to copy, distribute or modify the Program subject to
229these terms and conditions. You may not impose any further
230restrictions on the recipients' exercise of the rights granted herein.
231You are not responsible for enforcing compliance by third parties to
232this License.
233
234 7. If, as a consequence of a court judgment or allegation of patent
235infringement or for any other reason (not limited to patent issues),
236conditions are imposed on you (whether by court order, agreement or
237otherwise) that contradict the conditions of this License, they do not
238excuse you from the conditions of this License. If you cannot
239distribute so as to satisfy simultaneously your obligations under this
240License and any other pertinent obligations, then as a consequence you
241may not distribute the Program at all. For example, if a patent
242license would not permit royalty-free redistribution of the Program by
243all those who receive copies directly or indirectly through you, then
244the only way you could satisfy both it and this License would be to
245refrain entirely from distribution of the Program.
246
247If any portion of this section is held invalid or unenforceable under
248any particular circumstance, the balance of the section is intended to
249apply and the section as a whole is intended to apply in other
250circumstances.
251
252It is not the purpose of this section to induce you to infringe any
253patents or other property right claims or to contest validity of any
254such claims; this section has the sole purpose of protecting the
255integrity of the free software distribution system, which is
256implemented by public license practices. Many people have made
257generous contributions to the wide range of software distributed
258through that system in reliance on consistent application of that
259system; it is up to the author/donor to decide if he or she is willing
260to distribute software through any other system and a licensee cannot
261impose that choice.
262
263This section is intended to make thoroughly clear what is believed to
264be a consequence of the rest of this License.
265
266 8. If the distribution and/or use of the Program is restricted in
267certain countries either by patents or by copyrighted interfaces, the
268original copyright holder who places the Program under this License
269may add an explicit geographical distribution limitation excluding
270those countries, so that distribution is permitted only in or among
271countries not thus excluded. In such case, this License incorporates
272the limitation as if written in the body of this License.
273
274 9. The Free Software Foundation may publish revised and/or new versions
275of the General Public License from time to time. Such new versions will
276be similar in spirit to the present version, but may differ in detail to
277address new problems or concerns.
278
279Each version is given a distinguishing version number. If the Program
280specifies a version number of this License which applies to it and "any
281later version", you have the option of following the terms and conditions
282either of that version or of any later version published by the Free
283Software Foundation. If the Program does not specify a version number of
284this License, you may choose any version ever published by the Free Software
285Foundation.
286
287 10. If you wish to incorporate parts of the Program into other free
288programs whose distribution conditions are different, write to the author
289to ask for permission. For software which is copyrighted by the Free
290Software Foundation, write to the Free Software Foundation; we sometimes
291make exceptions for this. Our decision will be guided by the two goals
292of preserving the free status of all derivatives of our free software and
293of promoting the sharing and reuse of software generally.
294
295 NO WARRANTY
296
297 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
298FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
299OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
300PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
301OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
302MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
303TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
304PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
305REPAIR OR CORRECTION.
306
307 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
308WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
309REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
310INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
311OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
312TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
313YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
314PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
315POSSIBILITY OF SUCH DAMAGES.
316
317 END OF TERMS AND CONDITIONS
318
319 How to Apply These Terms to Your New Programs
320
321 If you develop a new program, and you want it to be of the greatest
322possible use to the public, the best way to achieve this is to make it
323free software which everyone can redistribute and change under these terms.
324
325 To do so, attach the following notices to the program. It is safest
326to attach them to the start of each source file to most effectively
327convey the exclusion of warranty; and each file should have at least
328the "copyright" line and a pointer to where the full notice is found.
329
330 <one line to give the program's name and a brief idea of what it does.>
331 Copyright (C) <year> <name of author>
332
333 This program is free software; you can redistribute it and/or modify
334 it under the terms of the GNU General Public License as published by
335 the Free Software Foundation; either version 2 of the License, or
336 (at your option) any later version.
337
338 This program is distributed in the hope that it will be useful,
339 but WITHOUT ANY WARRANTY; without even the implied warranty of
340 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
341 GNU General Public License for more details.
342
343 You should have received a copy of the GNU General Public License
344 along with this program; if not, write to the Free Software
345 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
346
347
348Also add information on how to contact you by electronic and paper mail.
349
350If the program is interactive, make it output a short notice like this
351when it starts in an interactive mode:
352
353 Gnomovision version 69, Copyright (C) year name of author
354 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
355 This is free software, and you are welcome to redistribute it
356 under certain conditions; type `show c' for details.
357
358The hypothetical commands `show w' and `show c' should show the appropriate
359parts of the General Public License. Of course, the commands you use may
360be called something other than `show w' and `show c'; they could even be
361mouse-clicks or menu items--whatever suits your program.
362
363You should also get your employer (if you work as a programmer) or your
364school, if any, to sign a "copyright disclaimer" for the program, if
365necessary. Here is a sample; alter the names:
366
367 Yoyodyne, Inc., hereby disclaims all copyright interest in the program
368 `Gnomovision' (which makes passes at compilers) written by James Hacker.
369
370 <signature of Ty Coon>, 1 April 1989
371 Ty Coon, President of Vice
29 372
30Please send patches, suggestions, insults, and bribes to <andersee@debian.org>. 373This General Public License does not permit incorporating your program into
374proprietary programs. If your program is a subroutine library, you may
375consider it more useful to permit linking proprietary applications with the
376library. If this is what you want to do, use the GNU Library General
377Public License instead of this License.
31 378
diff --git a/Makefile b/Makefile
index 29a6cb0df..d84bf027d 100644
--- a/Makefile
+++ b/Makefile
@@ -17,7 +17,7 @@
17 17
18 18
19PROG=busybox 19PROG=busybox
20VERSION=0.35 20VERSION=0.36
21BUILDTIME=$(shell date "+%Y%m%d-%H%M") 21BUILDTIME=$(shell date "+%Y%m%d-%H%M")
22 22
23# Comment out the following to make a debuggable build 23# Comment out the following to make a debuggable build
@@ -107,6 +107,9 @@ install: busybox
107whichversion: 107whichversion:
108 @echo $(VERSION) 108 @echo $(VERSION)
109 109
110
111dist: release
112
110release: distclean 113release: distclean
111 (cd .. ; cp -a busybox busybox-$(VERSION); tar -cvzf busybox-$(VERSION).tar.gz busybox-$(VERSION)) 114 (cd .. ; rm -rf busybox-$(VERSION) ; cp -a busybox busybox-$(VERSION); rm -rf busybox-$(VERSION)/CVS busybox-$(VERSION)/.cvsignore ; tar -cvzf busybox-$(VERSION).tar.gz busybox-$(VERSION))
112 115
diff --git a/README b/README
index f4d642f15..663a5d604 100644
--- a/README
+++ b/README
@@ -1,26 +1,26 @@
1Please see the LICENSE file for copyright information. 1Please see the LICENSE file for copyright information.
2 2
3Busybox is a multicall binary used to provide a minimal subset of 3BusyBox is a suite of "tiny" Unix utilities in a multi-call binary. It
4POSIX style commands and specialized functions. 4provides a pretty complete POSIX environment in a very small package.
5Just add a kernel, "ash" (Keith Almquists tiny Bourne shell clone), and
6an editor such as "elvis-tiny" or "ae", and you have a working system.
7Busybox was begun to support the Debian Rescue/Install disks, but it
8also makes an excellent environment for any small or embedded system.
5 9
6It is geared toward the very small, i.e. boot floppies, embedded- 10As of version 0.20 there is a version number. : ) Also as of version
7systems, etc. Specifically it is used in the Debian Rescue/Install 110.20, BB is now modularized to easily allow you to build of only the
8system (which caused the original busybox to be made), the Linux Router 12BB parts you need, thereby reducing binary size. To turn off unwanted
9Project, and others. 13Busybox components, simply edit the file busybox.def.h and comment out
14the parts you do not need using C++ style (//) comments.
10 15
11As of version 0.20 there is a version number. : ) 16After the build is complete a busybox.links file is generated which is
12Also as of version 0.20, BB is modularized to allow an easy build of 17then used by 'make install' to create symlinks to the busybox binary
13only the BB parts you need, to reduce binary size. 18for all compiled in functions. By default, 'make install' will place
19the symlink forest into `pwd`/busybox_install unless you have defined
20the PREFIX environment variable.
14 21
15Edit the file busybox.def.h and comment out the parts you do not need 22Please feed suggestions, bug reports, insults, and bribes back to:
16using C++ comments (//) 23 Erik Andersen
24 <andersen@lineo.com>
25 <andersee@deban.org>
17 26
18After the build is complete a busybox.links file is generated to allow
19you to easily make the sym/hard links to the busybox binary.
20
21Note the modular system is Makefile based, and purposely very
22simplistic. It does no dependency checking. That is left for you
23to figure out by trial and error.
24
25Please feed patches back to:
26 Erik Andersen <andersee@deban.org>
diff --git a/busybox.spec b/busybox.spec
index e3fbb6d47..4a3ef6579 100644
--- a/busybox.spec
+++ b/busybox.spec
@@ -1,5 +1,5 @@
1Name: busybox 1Name: busybox
2Version: 0.35 2Version: 0.36
3Release: 1 3Release: 1
4Group: System/Utilities 4Group: System/Utilities
5Summary: BusyBox is a tiny suite of Unix utilities in a multi-call binary. 5Summary: BusyBox is a tiny suite of Unix utilities in a multi-call binary.
diff --git a/chmod_chown_chgrp.c b/chmod_chown_chgrp.c
index e9704fff8..c9ea39bf5 100644
--- a/chmod_chown_chgrp.c
+++ b/chmod_chown_chgrp.c
@@ -31,7 +31,7 @@ static uid_t uid=-1;
31static gid_t gid=-1; 31static gid_t gid=-1;
32static int whichApp; 32static int whichApp;
33static char* invocationName=NULL; 33static char* invocationName=NULL;
34static mode_t mode=0644; 34static char* theMode=NULL;
35 35
36 36
37#define CHGRP_APP 1 37#define CHGRP_APP 1
@@ -61,7 +61,12 @@ static int fileAction(const char *fileName, struct stat* statbuf)
61 } 61 }
62 break; 62 break;
63 case CHMOD_APP: 63 case CHMOD_APP:
64 if (chmod(fileName, mode) == 0) 64 /* Parse the specified modes */
65 if ( parse_mode(theMode, &(statbuf->st_mode)) == FALSE ) {
66 fprintf(stderr, "%s: Unknown mode: %s\n", invocationName, theMode);
67 exit( FALSE);
68 }
69 if (chmod(fileName, statbuf->st_mode) == 0)
65 return( TRUE); 70 return( TRUE);
66 break; 71 break;
67 } 72 }
@@ -100,12 +105,7 @@ int chmod_chown_chgrp_main(int argc, char **argv)
100 } 105 }
101 106
102 if ( whichApp == CHMOD_APP ) { 107 if ( whichApp == CHMOD_APP ) {
103 /* Find the specified modes */ 108 theMode=*argv;
104 mode = 0;
105 if ( parse_mode(*argv, &mode) == FALSE ) {
106 fprintf(stderr, "%s: Unknown mode: %s\n", invocationName, *argv);
107 exit( FALSE);
108 }
109 } else { 109 } else {
110 110
111 /* Find the selected group */ 111 /* Find the selected group */
diff --git a/coreutils/mkdir.c b/coreutils/mkdir.c
index 4c7ebed6a..28315cad6 100644
--- a/coreutils/mkdir.c
+++ b/coreutils/mkdir.c
@@ -34,7 +34,7 @@ static const char mkdir_usage[] = "Usage: mkdir [OPTION] DIRECTORY...\n\n"
34 34
35 35
36static int parentFlag = FALSE; 36static int parentFlag = FALSE;
37static mode_t mode = 777; 37static mode_t mode = 0777;
38 38
39 39
40extern int mkdir_main(int argc, char **argv) 40extern int mkdir_main(int argc, char **argv)
diff --git a/examples/busybox.spec b/examples/busybox.spec
index e3fbb6d47..4a3ef6579 100644
--- a/examples/busybox.spec
+++ b/examples/busybox.spec
@@ -1,5 +1,5 @@
1Name: busybox 1Name: busybox
2Version: 0.35 2Version: 0.36
3Release: 1 3Release: 1
4Group: System/Utilities 4Group: System/Utilities
5Summary: BusyBox is a tiny suite of Unix utilities in a multi-call binary. 5Summary: BusyBox is a tiny suite of Unix utilities in a multi-call binary.
diff --git a/init.c b/init.c
index a3e8d6700..f6e9eff97 100644
--- a/init.c
+++ b/init.c
@@ -41,7 +41,7 @@
41#include <sys/vt.h> /* for vt_stat */ 41#include <sys/vt.h> /* for vt_stat */
42#include <sys/ioctl.h> 42#include <sys/ioctl.h>
43 43
44#define VT_CONSOLE "/dev/console" /* Logical system console */ 44#define DEV_CONSOLE "/dev/console" /* Logical system console */
45#define VT_PRIMARY "/dev/tty1" /* Primary virtual console */ 45#define VT_PRIMARY "/dev/tty1" /* Primary virtual console */
46#define VT_SECONDARY "/dev/tty2" /* Virtual console */ 46#define VT_SECONDARY "/dev/tty2" /* Virtual console */
47#define VT_LOG "/dev/tty3" /* Virtual console */ 47#define VT_LOG "/dev/tty3" /* Virtual console */
@@ -53,7 +53,7 @@
53 53
54#define LOG 0x1 54#define LOG 0x1
55#define CONSOLE 0x2 55#define CONSOLE 0x2
56static char *console = VT_CONSOLE; 56static char *console = DEV_CONSOLE;
57static char *second_console = VT_SECONDARY; 57static char *second_console = VT_SECONDARY;
58static char *log = VT_LOG; 58static char *log = VT_LOG;
59static int kernel_version = 0; 59static int kernel_version = 0;
@@ -109,7 +109,8 @@ void message(int device, char *fmt, ...)
109 va_end(arguments); 109 va_end(arguments);
110 } 110 }
111 if (device & CONSOLE) { 111 if (device & CONSOLE) {
112 if ((fd = device_open(console, O_WRONLY|O_NOCTTY|O_NDELAY)) >= 0) { 112 /* Always send console messages to /dev/console so people will see them. */
113 if ((fd = device_open(DEV_CONSOLE, O_WRONLY|O_NOCTTY|O_NDELAY)) >= 0) {
113 va_start(arguments, fmt); 114 va_start(arguments, fmt);
114 vdprintf(fd, fmt, arguments); 115 vdprintf(fd, fmt, arguments);
115 va_end(arguments); 116 va_end(arguments);
@@ -217,7 +218,7 @@ static void console_init()
217 /* this is linux virtual tty */ 218 /* this is linux virtual tty */
218 snprintf( the_console, sizeof the_console, "/dev/tty%d", vt.v_active ); 219 snprintf( the_console, sizeof the_console, "/dev/tty%d", vt.v_active );
219 } else { 220 } else {
220 console = VT_CONSOLE; 221 console = DEV_CONSOLE;
221 tried_devcons++; 222 tried_devcons++;
222 } 223 }
223 } 224 }
@@ -226,7 +227,7 @@ static void console_init()
226 /* Can't open selected console -- try /dev/console */ 227 /* Can't open selected console -- try /dev/console */
227 if (!tried_devcons) { 228 if (!tried_devcons) {
228 tried_devcons++; 229 tried_devcons++;
229 console = VT_CONSOLE; 230 console = DEV_CONSOLE;
230 continue; 231 continue;
231 } 232 }
232 /* Can't open selected console -- try vt1 */ 233 /* Can't open selected console -- try vt1 */
diff --git a/init/init.c b/init/init.c
index a3e8d6700..f6e9eff97 100644
--- a/init/init.c
+++ b/init/init.c
@@ -41,7 +41,7 @@
41#include <sys/vt.h> /* for vt_stat */ 41#include <sys/vt.h> /* for vt_stat */
42#include <sys/ioctl.h> 42#include <sys/ioctl.h>
43 43
44#define VT_CONSOLE "/dev/console" /* Logical system console */ 44#define DEV_CONSOLE "/dev/console" /* Logical system console */
45#define VT_PRIMARY "/dev/tty1" /* Primary virtual console */ 45#define VT_PRIMARY "/dev/tty1" /* Primary virtual console */
46#define VT_SECONDARY "/dev/tty2" /* Virtual console */ 46#define VT_SECONDARY "/dev/tty2" /* Virtual console */
47#define VT_LOG "/dev/tty3" /* Virtual console */ 47#define VT_LOG "/dev/tty3" /* Virtual console */
@@ -53,7 +53,7 @@
53 53
54#define LOG 0x1 54#define LOG 0x1
55#define CONSOLE 0x2 55#define CONSOLE 0x2
56static char *console = VT_CONSOLE; 56static char *console = DEV_CONSOLE;
57static char *second_console = VT_SECONDARY; 57static char *second_console = VT_SECONDARY;
58static char *log = VT_LOG; 58static char *log = VT_LOG;
59static int kernel_version = 0; 59static int kernel_version = 0;
@@ -109,7 +109,8 @@ void message(int device, char *fmt, ...)
109 va_end(arguments); 109 va_end(arguments);
110 } 110 }
111 if (device & CONSOLE) { 111 if (device & CONSOLE) {
112 if ((fd = device_open(console, O_WRONLY|O_NOCTTY|O_NDELAY)) >= 0) { 112 /* Always send console messages to /dev/console so people will see them. */
113 if ((fd = device_open(DEV_CONSOLE, O_WRONLY|O_NOCTTY|O_NDELAY)) >= 0) {
113 va_start(arguments, fmt); 114 va_start(arguments, fmt);
114 vdprintf(fd, fmt, arguments); 115 vdprintf(fd, fmt, arguments);
115 va_end(arguments); 116 va_end(arguments);
@@ -217,7 +218,7 @@ static void console_init()
217 /* this is linux virtual tty */ 218 /* this is linux virtual tty */
218 snprintf( the_console, sizeof the_console, "/dev/tty%d", vt.v_active ); 219 snprintf( the_console, sizeof the_console, "/dev/tty%d", vt.v_active );
219 } else { 220 } else {
220 console = VT_CONSOLE; 221 console = DEV_CONSOLE;
221 tried_devcons++; 222 tried_devcons++;
222 } 223 }
223 } 224 }
@@ -226,7 +227,7 @@ static void console_init()
226 /* Can't open selected console -- try /dev/console */ 227 /* Can't open selected console -- try /dev/console */
227 if (!tried_devcons) { 228 if (!tried_devcons) {
228 tried_devcons++; 229 tried_devcons++;
229 console = VT_CONSOLE; 230 console = DEV_CONSOLE;
230 continue; 231 continue;
231 } 232 }
232 /* Can't open selected console -- try vt1 */ 233 /* Can't open selected console -- try vt1 */
diff --git a/mkdir.c b/mkdir.c
index 4c7ebed6a..28315cad6 100644
--- a/mkdir.c
+++ b/mkdir.c
@@ -34,7 +34,7 @@ static const char mkdir_usage[] = "Usage: mkdir [OPTION] DIRECTORY...\n\n"
34 34
35 35
36static int parentFlag = FALSE; 36static int parentFlag = FALSE;
37static mode_t mode = 777; 37static mode_t mode = 0777;
38 38
39 39
40extern int mkdir_main(int argc, char **argv) 40extern int mkdir_main(int argc, char **argv)