Fix for big endian machines
[oweals/busybox.git] / docs / new-applet-HOWTO.txt
index 638526a0cad023a21b8aa81c066481644b09b48d..7cae30b457c4b81d7da2b2c49d9ec6fe2140245a 100644 (file)
@@ -6,7 +6,7 @@ This document details the steps you must take to add a new applet to BusyBox.
 Credits:
 Matt Kraai - initial writeup
 Mark Whitley - the remix
 Credits:
 Matt Kraai - initial writeup
 Mark Whitley - the remix
-
+Thomas Lundquist - Added stuff for the new directory layout.
 
 Initial Write
 -------------
 
 Initial Write
 -------------
@@ -70,51 +70,60 @@ you _write_ your applet) please read through the style guide in the docs
 directory and make your program compliant.
 
 
 directory and make your program compliant.
 
 
-Some Words on utility.c
------------------------
+Some Words on libbb
+-------------------
 
 As you are writing your applet, please be aware of the body of pre-existing
 
 As you are writing your applet, please be aware of the body of pre-existing
-useful functions in utility.c. Use these instead of reinventing the wheel.
-
-If you use functions from utility.c, you may need to add to the preprocessor
-conditionals in that file, to make sure the routines you need are included.
-So, since your mu implementation used safe_read(), append "|| define BB_MU" to
-the #if instruction that precedes the safe_read() function in utility.c .
+useful functions in libbb. Use these instead of reinventing the wheel.
 
 Additionally, if you have any useful, general-purpose functions in your
 program that could be useful in another program, consider putting them in
 
 Additionally, if you have any useful, general-purpose functions in your
 program that could be useful in another program, consider putting them in
-utility.c.
+libbb.
+
+
+Placement / Directory
+---------------------
+
+Find the appropriate directory for your new applet.
+
+Add the applet to the applet directory Makefile:
+
+obj-$(CONFIG_MU)               += mu.o
+
+Add the applet to the applet directory config.in:
+
+bool 'mu'          CONFIG_MU
 
 
 Usage String(s)
 ---------------
 
 
 
 Usage String(s)
 ---------------
 
-Next, add usage information for you applet to usage.c. This should look like
-the following:
+Next, add usage information for you applet to include/usage.h. 
+This should look like the following:
 
 
-       #if defined BB_MU
-       const char mu_usage[] =
-               "mu\n"
-       #ifndef BB_FEATURE_TRIVIAL_HELP
-               "\nReturns an indeterminate value.\n"
-       #endif
-               ;
+       #define mu_trivial_usage \
+               "-[abcde] FILES"
+       #define mu_full_usage \
+               "Returns an indeterminate value.\n\n" \
+               "Options:\n" \
+               "\t-a\t\tfirst function\n" \
+               "\t-b\t\tsecond function\n" \
 
 If your program supports flags, the flags should be mentioned on the first
 
 If your program supports flags, the flags should be mentioned on the first
-line (mu -[bcRovma]) and a detailed description of each flag should go in the
-BB_FEATURE_TRIVIAL_HELP section, one flag per line. (Numerous examples of this
-currently exist in utility.c.)
+line (-[abcde]) and a detailed description of each flag should go in the
+mu_full_usage section, one flag per line. (Numerous examples of this
+currently exist in usage.h.)
 
 
 Header Files
 ------------
 
 
 
 Header Files
 ------------
 
-Next, add an entry to applets.h.  Be *sure* to keep the list in alphabetical
-order, or else it will break the binary-search lookup algorithm in busybox.c
-and the Gods of BusyBox smite you. Yea, verily:
+Next, add an entry to include/applets.h.  Be *sure* to keep the list 
+in alphabetical order, or else it will break the binary-search lookup 
+algorithm in busybox.c and the Gods of BusyBox smite you. Yea, verily:
 
        /* all programs above here are alphabetically "less than" 'mu' */
 
        /* all programs above here are alphabetically "less than" 'mu' */
-       #ifdef BB_MU
+       #ifdef CONFIG_MU
                APPLET("mu", mu_main, _BB_DIR_USR_BIN, mu_usage)
        #endif
        /* all programs below here are alphabetically "greater than" 'mu' */
                APPLET("mu", mu_main, _BB_DIR_USR_BIN, mu_usage)
        #endif
        /* all programs below here are alphabetically "greater than" 'mu' */
@@ -122,7 +131,7 @@ and the Gods of BusyBox smite you. Yea, verily:
 
 Finally, add a define for your applet to Config.h:
 
 
 Finally, add a define for your applet to Config.h:
 
-       #define BB_MU
+       #define CONFIG_MU
 
 
 Documentation
 
 
 Documentation
@@ -131,13 +140,15 @@ Documentation
 If you're feeling especially nice, you should also document your applet in the
 docs directory (but nobody ever does that).
 
 If you're feeling especially nice, you should also document your applet in the
 docs directory (but nobody ever does that).
 
+Adding some text to docs/Configure.help is a nice start.
+
 
 The Grand Announcement
 ----------------------
 
 Then create a diff -urN of the files you added (<applet>.c, usage.c,
 applets.h, Config.h) and send it to the mailing list:
 
 The Grand Announcement
 ----------------------
 
 Then create a diff -urN of the files you added (<applet>.c, usage.c,
 applets.h, Config.h) and send it to the mailing list:
-busybox@opensource.lineo.com. Sending patches as attachments is preferred, but
+busybox@busybox.net. Sending patches as attachments is preferred, but
 not required.
 
 
 not required.