Changeset 2725 in MondoRescue for branches/2.2.9/mindi-busybox/docs


Ignore:
Timestamp:
Feb 25, 2011, 9:26:54 PM (13 years ago)
Author:
Bruno Cornec
Message:
  • Update mindi-busybox to 1.18.3 to avoid problems with the tar command which is now failing on recent versions with busybox 1.7.3
Location:
branches/2.2.9/mindi-busybox/docs
Files:
10 added
8 edited

Legend:

Unmodified
Added
Removed
  • branches/2.2.9/mindi-busybox/docs/busybox_footer.pod

    r1765 r2725  
    3434listed here so you can obtain your bit of eternal glory.  If you should be
    3535listed here, or the description of what you have done needs more detail, or is
    36 incorect, please send in an update.
     36incorrect, please send in an update.
    3737
    3838
     
    4040
    4141Emanuele Aina <emanuele.aina@tiscali.it>
    42     run-parts
     42    run-parts
    4343
    4444=for html <br>
     
    9898Jordan Crouse <jordan@cosmicpenguin.net>
    9999
    100     ipcalc
     100    ipcalc
    101101
    102102=for html <br>
     
    147147Stephan Linz <linz@li-pro.net>
    148148
    149     ipcalc, Red Hat equivalence
     149    ipcalc, Red Hat equivalence
    150150
    151151=for html <br>
     
    159159Glenn McGrath <bug1@iinet.net.au>
    160160
    161     Common unarchving code and unarchiving applets, ifupdown, ftpgetput,
     161    Common unarchiving code and unarchiving applets, ifupdown, ftpgetput,
    162162    nameif, sed, patch, fold, install, uudecode.
    163163    Various bugfixes, review and apply numerous patches.
     
    251251Tito Ragusa <farmatito@tiscali.it>
    252252
    253     devfsd and size optimizations in strings, openvt and deallocvt.
     253    devfsd and size optimizations in strings, openvt and deallocvt.
     254
     255=for html <br>
     256
     257Paul Fox <pgf@foxharp.boston.ma.us>
     258
     259    vi editing mode for ash, various other patches/fixes
     260
     261=for html <br>
     262
     263Roberto A. Foglietta <me@roberto.foglietta.name>
     264
     265    port: dnsd
     266
     267=for html <br>
     268
     269Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
     270
     271    misc
     272
     273=for html <br>
     274
     275Mike Frysinger <vapier@gentoo.org>
     276
     277    initial e2fsprogs, printenv, setarch, sum, misc
     278
     279=for html <br>
     280
     281Jie Zhang <jie.zhang@analog.com>
     282
     283    fixed two bugs in msh and hush (exitcode of killed processes)
    254284
    255285=cut
    256 
  • branches/2.2.9/mindi-busybox/docs/busybox_header.pod

    r1765 r2725  
    77=head1 SYNTAX
    88
    9  BusyBox <function> [arguments...]  # or
     9 busybox <applet> [arguments...]  # or
    1010
    11  <function> [arguments...]      # if symlinked
     11 <applet> [arguments...]      # if symlinked
    1212
    1313=head1 DESCRIPTION
     
    4646is just a single BusyBox binary, but that single binary acts like a large
    4747number of utilities.  This allows BusyBox to be smaller since all the built-in
    48 utility programs (we call them applets) can share code for many common operations.
     48utility programs (we call them applets) can share code for many common
     49operations.
    4950
    5051You can also invoke BusyBox by issuing a command as an argument on the
     
    7374=head1 COMMON OPTIONS
    7475
    75 Most BusyBox commands support the B<--help> argument to provide a terse runtime
     76Most BusyBox applets support the B<--help> argument to provide a terse runtime
    7677description of their behavior.  If the CONFIG_FEATURE_VERBOSE_USAGE option has
    7778been enabled, more detailed usage information will also be available.
     
    7980=head1 COMMANDS
    8081
    81 Currently defined functions include:
    82 
     82Currently available applets include:
  • branches/2.2.9/mindi-busybox/docs/contributing.txt

    r821 r2725  
    1818
    1919
    20 Checkout the Latest Code from CVS
    21 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     20Checkout the Latest Code
     21~~~~~~~~~~~~~~~~~~~~~~~~
    2222
    2323This is a necessary first step. Please do not try to work with the last
     
    2626Don't make your work obsolete before you start!
    2727
    28 For information on how to check out Busybox from CVS, please look at the
     28For information on how to check out Busybox development tree, please look at the
    2929following links:
    3030
    31     http://busybox.net/cvs_anon.html
    32     http://busybox.net/cvs_howto.html
     31    http://busybox.net/source.html
    3332
    3433
     
    8887   filesystem under the sun. (fsck_minix.c and mkfs_minix.c are living on
    8988   borrowed time.) There are far too many of these tools out there.  Use
    90    the upstream version. Not everything has to be part of Busybox.
    91 
    92  - Any partitioning tools: Partitioning a device is typically done once and
    93    only once, and tools which do this generally do not need to reside on the
    94    target device (esp a flash device). If you need a partitioning tool, grab
    95    one (such as fdisk, sfdisk, or cfdisk from util-linux) and use that, but
    96    don't try to merge it into busybox. These are nasty and complex and we
    97    don't want to maintain them.
     89   the upstream version.  Rationale: bugs in these tools can destroy
     90   vast amounts of data.  Keeping up with filesystem format development
     91   is impractical (especially in the area of keeping fsck tool safe
     92   and up-to-date).
    9893
    9994 - Any disk, device, or media-specific tools: Use the -utils or -tools package
     
    10398   independent. Do not send us tools that cannot be used across multiple
    10499   platforms / arches.
    105 
    106  - Any daemons that are not essential to basic system operation. To date, only
    107    syslogd and klogd meet this requirement. We do not need a web server, an
    108    ftp daemon, a dhcp server, a mail transport agent or a dns resolver. If you
    109    need one of those, you are welcome to ask the folks on the mailing list for
    110    recommendations, but please don't bloat up Busybox with any of these.
    111100
    112101
     
    136125
    137126    $ date
    138     llegal instruction
     127    Illegal instruction
    139128
    140129    I am using Debian unstable, kernel version 2.4.19-rmk1 on an Netwinder,
    141     and the latest uClibc from CVS.  Thanks for the wonderful program!
     130    and the latest uClibc from CVS.
    142131
    143132    -Diligent
     
    200189These are dirty jobs, but somebody's gotta do 'em.
    201190
    202  - Converting applets to use getopt() for option processing. Type 'find -name
    203    '*.c'|grep -L getopt' to get a listing of the applets that currently don't
    204    use getopt. If a .c file processes no options, it should have a line that
    205    reads: /* no options, no getopt */ somewhere in the file.
    206 
    207  - Replace any "naked" calls to malloc, calloc, realloc, str[n]dup, fopen with
    208    the x* equivalents found in libbb/xfuncs.c.
    209 
    210191 - Security audits:
    211192   http://www.securityfocus.com/popups/forums/secprog/intro.shtml
     
    236217Other useful links:
    237218
    238  - the comp.lang.c FAQ: http://web.onetelnet.ch/~twolf/tw/c/index.html#Sources
     219 - the comp.lang.c FAQ: http://home.datacomm.ch/t_wolf/tw/c/index.html#Sources
    239220
    240221
     
    249230~~~~~~~~~~~~~~
    250231
    251 If you've got anonymous CVS access set up, making a patch is simple. Just make
    252 sure you're in the busybox/ directory and type 'cvs diff -bwu > mychanges.patch'.
     232If you've got anonymous Git access set up, making a patch is simple. Just make
     233sure you're in the busybox/ directory and type:
     234
     235    git diff -b -w > mychanges.patch
     236
    253237You can send the resulting .patch file to the mailing list with a description
    254238of what it does. (But not before you test it! See the next section for some
     
    258242Also, feel free to help test other people's patches and reply to them with
    259243comments. You can apply a patch by saving it into your busybox/ directory and
    260 typing 'patch < mychanges.patch'. Then you can recompile, see if it runs, test
    261 if it works as advertised, and post your findings to the mailing list.
     244typing:
     245
     246    patch -p1 < mychanges.patch
     247
     248Then you can recompile, see if it runs, test if it works as advertised, and
     249post your findings to the mailing list.
    262250
    263251NOTE: Please do not include extraneous or irrelevant changes in your patches.
     
    272260
    273261It's considered good form to test your new feature before you submit a patch
    274 to the mailing list, and especially before you commit a change to CVS. Here
     262to the mailing list, and especially before you push a change to Git. Here
    275263are some guidelines on how to test your changes.
    276264
     
    368356
    369357We've made strident efforts to put a useful "collaboration" infrastructure in
    370 place in the form of mailing lists, the bug tracking system, and CVS. Please
     358place in the form of mailing lists, the bug tracking system, and Git. Please
    371359use these resources.
    372360
     
    393381
    394382
    395 Committing Changes to CVS
    396 -------------------------
     383Pushing Changes to Git
     384----------------------
    397385
    398386If you submit several patches that demonstrate that you are a skilled and wise
    399 coder, you may be invited to become a committer, thus enabling you to commit
    400 changes directly to CVS. This is nice because you don't have to wait for
    401 someone else to commit your change for you, you can just do it yourself.
     387coder, you may be invited to become a committer, thus enabling you to push
     388changes directly to Git. This is nice because you don't have to wait for
     389someone else to push your change for you, you can just do it yourself.
    402390
    403391But note that this is a privilege that comes with some responsibilities. You
    404 should test your changes before you commit them. You should also talk to an
     392should test your changes before you push them. You should also talk to an
    405393applet maintainer before you make any kind of sweeping changes to somebody
    406394else's code. Big changes should still go to the mailing list first. Remember,
    407395being wise, polite, and discreet is more important than being clever.
    408396
    409 
    410 When To Commit
    411 ~~~~~~~~~~~~~~
    412 
    413 Generally, you should feel free to commit a change if:
     397For more information on Git push access, see:
     398
     399    http://busybox.net/developer.html
     400
     401
     402When To Push
     403~~~~~~~~~~~~
     404
     405Generally, you should feel free to push a change if:
    414406
    415407 - Your changes are small and don't touch many files
     
    418410 - It's obviously the Right Thing
    419411
    420 The more of the above are true, the better it is to just commit a change
    421 directly to CVS.
    422 
    423 
    424 When Not To Commit
    425 ~~~~~~~~~~~~~~~~~~
    426 
    427 Even if you have commit rights, you should probably still post a patch to the
     412The more of the above are true, the better it is to just push a change
     413directly to Git.
     414
     415
     416When Not To Push
     417~~~~~~~~~~~~~~~~
     418
     419Even if you have push access, you should probably still post a patch to the
    428420mailing list if:
    429421
     
    434426
    435427The more of the above are true, the better it is to post a patch to the
    436 mailing list instead of committing.
     428mailing list instead of pushing.
    437429
    438430
     
    446438good-natured bunch and will work with you to help get your patches into shape
    447439or help you make contributions.
    448 
    449 
  • branches/2.2.9/mindi-busybox/docs/keep_data_small.txt

    r1765 r2725  
    6060
    6161One example how to reduce global data usage is in
    62 archival/libunarchive/decompress_unzip.c:
     62archival/libarchive/decompress_unzip.c:
    6363
    6464/* This is somewhat complex-looking arrangement, but it allows
     
    100100ptr_to_globals is declared as constant pointer.
    101101This helps gcc understand that it won't change, resulting in noticeably
    102 smaller code. In order to assign it, use PTR_TO_GLOBALS macro:
    103 
    104     PTR_TO_GLOBALS = xzalloc(sizeof(G));
     102smaller code. In order to assign it, use SET_PTR_TO_GLOBALS macro:
     103
     104    SET_PTR_TO_GLOBALS(xzalloc(sizeof(G)));
    105105
    106106Typically it is done in <applet>_main().
     
    144144one of above methods is not worth the resulting code obfuscation.
    145145If you have less than ~300 bytes of global data - don't bother.
     146
     147
     148        Finding non-shared duplicated strings
     149
     150strings busybox | sort | uniq -c | sort -nr
    146151
    147152
     
    215220 634416    2736   23856  661008   a1610 busybox
    216221 632580    2672   22944  658196   a0b14 busybox_noalign
     222
     223
     224
     225        Keeping code small
     226
     227Set CONFIG_EXTRA_CFLAGS="-fno-inline-functions-called-once",
     228produce "make bloatcheck", see the biggest auto-inlined functions.
     229Now, set CONFIG_EXTRA_CFLAGS back to "", but add NOINLINE
     230to some of these functions. In 1.16.x timeframe, the results were
     231(annotated "make bloatcheck" output):
     232
     233function             old     new   delta
     234expand_vars_to_list    -    1712   +1712 win
     235lzo1x_optimize         -    1429   +1429 win
     236arith_apply            -    1326   +1326 win
     237read_interfaces        -    1163   +1163 loss, leave w/o NOINLINE
     238logdir_open            -    1148   +1148 win
     239check_deps             -    1148   +1148 loss
     240rewrite                -    1039   +1039 win
     241run_pipe             358    1396   +1038 win
     242write_status_file      -    1029   +1029 almost the same, leave w/o NOINLINE
     243dump_identity          -     987    +987 win
     244mainQSort3             -     921    +921 win
     245parse_one_line         -     916    +916 loss
     246summarize              -     897    +897 almost the same
     247do_shm                 -     884    +884 win
     248cpio_o                 -     863    +863 win
     249subCommand             -     841    +841 loss
     250receive                -     834    +834 loss
     251
     252855 bytes saved in total.
     253
     254scripts/mkdiff_obj_bloat may be useful to automate this process: run
     255"scripts/mkdiff_obj_bloat NORMALLY_BUILT_TREE FORCED_NOINLINE_TREE"
     256and select modules which shrank.
  • branches/2.2.9/mindi-busybox/docs/mdev.txt

    r1765 r2725  
    1616
    1717Here's a typical code snippet from the init script:
     18[0] mount -t proc proc /proc
    1819[1] mount -t sysfs sysfs /sys
    19 [2] echo /bin/mdev > /proc/sys/kernel/hotplug
     20[2] echo /sbin/mdev > /proc/sys/kernel/hotplug
    2021[3] mdev -s
     22
     23Alternatively, without procfs the above becomes:
     24[1] mount -t sysfs sysfs /sys
     25[2] sysctl -w kernel.hotplug=/sbin/mdev
     26[3] mdev -s
     27
    2128
    2229Of course, a more "full" setup would entail executing this before the previous
    2330code snippet:
    24 [4] mount -t tmpfs mdev /dev
     31[4] mount -t tmpfs -o size=64k,mode=0755 tmpfs /dev
    2532[5] mkdir /dev/pts
    2633[6] mount -t devpts devpts /dev/pts
    2734
    2835The simple explanation here is that [1] you need to have /sys mounted before
    29 executing mdev.  Then you [2] instruct the kernel to execute /bin/mdev whenever
     36executing mdev.  Then you [2] instruct the kernel to execute /sbin/mdev whenever
    3037a device is added or removed so that the device node can be created or
    3138destroyed.  Then you [3] seed /dev with all the device nodes that were created
     
    4552
    4653The file has the format:
    47     <device regex> <uid>:<gid> <octal permissions>
     54    <device regex>       <uid>:<gid> <permissions>
     55 or @<maj[,min1[-min2]]> <uid>:<gid> <permissions>
     56
    4857For example:
    49     hd[a-z][0-9]* 0:3 660
     58    hd[a-z][0-9]* 0:3 660
    5059
    5160The config file parsing stops at the first matching line.  If no line is
     
    5463    .* 1:1 777
    5564
     65You can rename/move device nodes by using the next optional field.
     66    <device regex> <uid>:<gid> <permissions> [=path]
     67So if you want to place the device node into a subdirectory, make sure the path
     68has a trailing /.  If you want to rename the device node, just place the name.
     69    hda 0:3 660 =drives/
     70This will move "hda" into the drives/ subdirectory.
     71    hdb 0:3 660 =cdrom
     72This will rename "hdb" to "cdrom".
     73
     74Similarly, ">path" renames/moves the device but it also creates
     75a direct symlink /dev/DEVNAME to the renamed/moved device.
     76
     77You can also prevent creation of device nodes with the 4th field as "!":
     78    tty[a-z]. 0:0 660 !
     79    pty[a-z]. 0:0 660 !
     80
    5681If you also enable support for executing your own commands, then the file has
    5782the format:
    58     <device regex> <uid>:<gid> <octal permissions> [<@|$|*> <command>]
     83    <device regex> <uid>:<gid> <permissions> [=path] [@|$|*<command>]
     84    or
     85    <device regex> <uid>:<gid> <permissions> [>path] [@|$|*<command>]
     86    or
     87    <device regex> <uid>:<gid> <permissions> [!] [@|$|*<command>]
     88
     89For example:
     90---8<---
     91# block devices
     92([hs]d[a-z])        root:disk   660 >disk/%1/0
     93([hs]d[a-z])([0-9]+)    root:disk   660 >disk/%1/%2
     94mmcblk([0-9]+)      root:disk   660 >disk/mmc/%1/0
     95mmcblk([0-9]+)p([0-9]+) root:disk   660 >disk/mmc/%1/%2
     96# network devices
     97(tun|tap)       root:network    660 >net/%1
     98---8<---
     99
    59100The special characters have the meaning:
    60101    @ Run after creating the device.
     
    63104
    64105The command is executed via the system() function (which means you're giving a
    65 command to the shell), so make sure you have a shell installed at /bin/sh.
     106command to the shell), so make sure you have a shell installed at /bin/sh.  You
     107should also keep in mind that the kernel executes hotplug helpers with stdin,
     108stdout, and stderr connected to /dev/null.
    66109
    67110For your convenience, the shell env var $MDEV is set to the device name.  So if
    68 the device 'hdc' was matched, MDEV would be set to "hdc".
     111the device "hdc" was matched, MDEV would be set to "hdc".
    69112
    70113----------
     
    77120filename of the firmware which mdev will load out of /lib/firmware/ and into
    78121the kernel via the sysfs interface.  The exact filename is hardcoded in the
    79 kernel, so look there if you need to want to know what to name the file in
    80 userspace.
     122kernel, so look there if you need to know how to name the file in userspace.
     123
     124------------
     125 SEQUENCING
     126------------
     127
     128Kernel does not serialize hotplug events. It increments SEQNUM environmental
     129variable for each successive hotplug invocation. Normally, mdev doesn't care.
     130This may reorder hotplug and hot-unplug events, with typical symptoms of
     131device nodes sometimes not created as expected.
     132
     133However, if /dev/mdev.seq file is found, mdev will compare its
     134contents with SEQNUM. It will retry up to two seconds, waiting for them
     135to match. If they match exactly (not even trailing '\n' is allowed),
     136or if two seconds pass, mdev runs as usual, then it rewrites /dev/mdev.seq
     137with SEQNUM+1.
     138
     139IOW: this will serialize concurrent mdev invocations.
     140
     141If you want to activate this feature, execute "echo >/dev/mdev.seq" prior to
     142setting mdev to be the hotplug handler. This writes single '\n' to the file.
     143NB: mdev recognizes /dev/mdev.seq consisting of single '\n' character
     144as a special case. IOW: this will not make your first hotplug event
     145to stall for two seconds.
  • branches/2.2.9/mindi-busybox/docs/new-applet-HOWTO.txt

    r1765 r2725  
    99Thomas Lundquist - Trying to keep it updated.
    1010
    11 When doing this you should consider using the latest svn trunk.
    12 This is a good thing if you plan to getting it commited into mainline.
     11When doing this you should consider using the latest git HEAD.
     12This is a good thing if you plan to getting it committed into mainline.
    1313
    1414Initial Write
     
    2020And be sure to put it in <applet>.c. Usage does not have to be taken care of by
    2121your applet.
    22 Make sure to #include "libbb.h" as the first include file in your applet so
    23 the bb_config.h and appropriate platform specific files are included properly.
     22Make sure to #include "libbb.h" as the first include file in your applet.
    2423
    2524For a new applet mu, here is the code that would go in mu.c:
     
    3736 * Copyright (C) [YEAR] by [YOUR NAME] <YOUR EMAIL>
    3837 *
    39  * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
     38 * Licensed under GPLv2, see file LICENSE in this source tree.
    4039 */
    4140
     
    4342#include "other.h"
    4443
    45 int mu_main(int argc, char **argv);
     44int mu_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
    4645int mu_main(int argc, char **argv)
    4746{
    4847    int fd;
     48    ssize_t n;
    4949    char mu;
    5050
     
    9999
    100100Add <function_name>.o in the right alphabetically sorted place
    101 in libbb/Kbuild. You should look at the conditional part of
    102 libbb/Kbuild aswell.
     101in libbb/Kbuild.src. You should look at the conditional part of
     102libbb/Kbuild.src as well.
    103103
    104104You should also try to find a suitable place in include/libbb.h for
     
    106106ifdefs to include or not.
    107107
    108 You can look at libbb/Config.in and try to find out if the function is
    109 tuneable and add it there if it is.
     108You can look at libbb/Config.src and try to find out if the function is
     109tunable and add it there if it is.
    110110
    111111
     
    118118sorted alphabetically.
    119119
    120 Add the applet to Kbuild in the chosen directory:
     120Add the applet to Kbuild.src in the chosen directory:
    121121
    122122lib-$(CONFIG_MU)               += mu.o
    123123
    124 Add the applet to Config.in in the chosen directory:
     124Add the applet to Config.src in the chosen directory:
    125125
    126 config CONFIG_MU
     126config MU
    127127    bool "MU"
    128128    default n
     
    134134---------------
    135135
    136 Next, add usage information for you applet to include/usage.h.
     136Next, add usage information for you applet to include/usage.src.h.
    137137This should look like the following:
    138138
     
    149149line (-[abcde]) and a detailed description of each flag should go in the
    150150mu_full_usage section, one flag per line. (Numerous examples of this
    151 currently exist in usage.h.)
     151currently exist in usage.src.h.)
    152152
    153153
     
    155155------------
    156156
    157 Next, add an entry to include/applets.h.  Be *sure* to keep the list
     157Next, add an entry to include/applets.src.h.  Be *sure* to keep the list
    158158in alphabetical order, or else it will break the binary-search lookup
    159159algorithm in busybox.c and the Gods of BusyBox smite you. Yea, verily:
    160160
    161 Be sure to read the top of applets.h before adding your applet.
     161Be sure to read the top of applets.src.h before adding your applet.
    162162
    163163    /* all programs above here are alphabetically "less than" 'mu' */
    164     USE_MU(APPLET(mu, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
     164    IF_MU(APPLET(mu, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    165165    /* all programs below here are alphabetically "greater than" 'mu' */
    166166
     
    169169----------------------
    170170
    171 Then create a diff by adding the new files with svn (remember your libbb files)
    172     svn add <where you put it>/mu.c
     171Then create a diff by adding the new files to git (remember your libbb files)
     172    git add <where you put it>/mu.c
    173173eventually also:
    174     svn add libbb/function.c
     174    git add libbb/function.c
    175175then
    176     svn diff
     176    git commit
     177    git format-patch HEAD^
    177178and send it to the mailing list:
    178179    busybox@busybox.net
  • branches/2.2.9/mindi-busybox/docs/nofork_noexec.txt

    r1765 r2725  
    33Unix shells traditionally execute some commands internally in the attempt
    44to dramatically speed up execution. It will be slow as hell if for every
    5 "echo blah" shell will fork and exec /bin/echo. For this end, shells
     5"echo blah" shell will fork and exec /bin/echo. To this end, shells
    66have to _reimplement_ these commands internally.
    77
     
    1212
    1313Applet will be subject to NOFORK/NOEXEC tricks if it is marked as such
    14 in applets.h. CONFIG_FEATURE_PREFER_APPLETS is a config option which
     14in applets.h. FEATURE_PREFER_APPLETS is a config option which
    1515globally enables usage of NOFORK/NOEXEC tricks.
     16If it is enabled, FEATURE_SH_STANDALONE can be enabled too,
     17and then shells will use NOFORK/NOEXEC tricks for ordinary commands.
     18NB: shell builtins use these tricks regardless of FEATURE_SH_STANDALONE
     19or FEATURE_PREFER_APPLETS.
    1620
    17 If you want to call a program and wait for it, use spawn_and_wait(argv).
    18 It will check whether argv[0] is an applet name and will optionally
    19 do NOFORK/NOEXEC thing.
     21In C, if you want to call a program and wait for it, use
     22spawn_and_wait(argv), BB_EXECVP(prog,argv) or BB_EXECLP(prog,argv0,...).
     23They check whether program name is an applet name and optionally
     24do NOFORK/NOEXEC thing depending on configuration.
    2025
    21 NOEXEC
     26
     27    NOEXEC
    2228
    2329NOEXEC applet should work correctly if another applet forks and then
     
    3339
    3440NOEXEC applets save only one half of fork+exec overhead.
    35 NOEXEC trick is disabled for NOMMU compile.
     41NOEXEC trick is disabled for NOMMU build.
    3642
    37 NOFORK
     43
     44    NOFORK
    3845
    3946NOFORK applet should work correctly if another applet simply runs
     
    5663  allocation. All other allocations should use malloc[_or_warn]().
    5764  After first allocation, you cannot use any xfuncs.
     65  Otherwise, failing xfunc will return to caller applet
     66  without freeing malloced data!
    5867* All allocated data, opened files, signal handlers, termios settings,
    5968  O_NONBLOCK flags etc should be freed/closed/restored prior to return.
  • branches/2.2.9/mindi-busybox/docs/style-guide.txt

    r1765 r2725  
    253253
    254254 - Enums, macros, and constant variables are occasionally written in all
    255    upper-case with words optionally seperatedy by underscores (i.e. FIFO_TYPE,
     255   upper-case with words optionally separated by underscores (i.e. FIFO_TYPE,
    256256   ISBLKDEV()).
    257257
     
    423423~~~~~~~~~~~~~~~~~~~~~~~~~~
    424424
    425 There's a right way and a wrong way to test for sting equivalence with
     425There's a right way and a wrong way to test for string equivalence with
    426426strcmp():
    427427
Note: See TracChangeset for help on using the changeset viewer.