Changeset 1765 in MondoRescue for branches/2.2.5/mindi-busybox/docs/new-applet-HOWTO.txt
- Timestamp:
- Nov 4, 2007, 3:16:40 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.2.5/mindi-busybox/docs/new-applet-HOWTO.txt
r821 r1765 7 7 Matt Kraai - initial writeup 8 8 Mark Whitley - the remix 9 Thomas Lundquist - Added stuff for the new directory layout. 9 Thomas Lundquist - Trying to keep it updated. 10 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. 10 13 11 14 Initial Write … … 17 20 And be sure to put it in <applet>.c. Usage does not have to be taken care of by 18 21 your applet. 19 Make sure to #include " busybox.h" as the first include file in your applet so22 Make sure to #include "libbb.h" as the first include file in your applet so 20 23 the bb_config.h and appropriate platform specific files are included properly. 21 24 22 25 For a new applet mu, here is the code that would go in mu.c: 26 27 (busybox.h already includes most usual header files. You do not need 28 #include <stdio.h> etc...) 29 23 30 24 31 ----begin example code------ … … 33 40 */ 34 41 35 #include " busybox.h"36 #include <other.h>42 #include "libbb.h" 43 #include "other.h" 37 44 45 int mu_main(int argc, char **argv); 38 46 int mu_main(int argc, char **argv) 39 47 { … … 41 49 char mu; 42 50 43 fd = bb_xopen("/dev/random", O_RDONLY);51 fd = xopen("/dev/random", O_RDONLY); 44 52 45 53 if ((n = safe_read(fd, &mu, 1)) < 1) … … 69 77 applet that could be useful in other applets, consider putting them in libbb. 70 78 79 And it may be possible that some of the other applets uses functions you 80 could use. If so, you have to rip the function out of the applet and make 81 a libbb function out of it. 82 83 Adding a libbb function: 84 ------------------------ 85 86 Make a new file named <function_name>.c 87 88 ----start example code------ 89 90 #include "libbb.h" 91 #include "other.h" 92 93 int function(char *a) 94 { 95 return *a; 96 } 97 98 ----end example code------ 99 100 Add <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. 103 104 You should also try to find a suitable place in include/libbb.h for 105 the function declaration. If not, add it somewhere anyway, with or without 106 ifdefs to include or not. 107 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. 110 71 111 72 112 Placement / Directory … … 78 118 sorted alphabetically. 79 119 80 Add the applet to Makefile.inin the chosen directory:120 Add the applet to Kbuild in the chosen directory: 81 121 82 obj-$(CONFIG_MU) += mu.o122 lib-$(CONFIG_MU) += mu.o 83 123 84 124 Add the applet to Config.in in the chosen directory: … … 119 159 algorithm in busybox.c and the Gods of BusyBox smite you. Yea, verily: 120 160 161 Be sure to read the top of applets.h before adding your applet. 162 121 163 /* all programs above here are alphabetically "less than" 'mu' */ 122 #ifdef CONFIG_MU 123 APPLET("mu", mu_main, _BB_DIR_USR_BIN, mu_usage) 124 #endif 164 USE_MU(APPLET(mu, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) 125 165 /* all programs below here are alphabetically "greater than" 'mu' */ 126 127 128 Documentation129 -------------130 131 If you're feeling especially nice, you should also document your applet in the132 docs directory (but nobody ever does that).133 134 Adding some text to docs/Configure.help is a nice start.135 166 136 167 … … 138 169 ---------------------- 139 170 140 Then create a diff -urN of the files you added and/or modified. Typically:141 <appletdir>/<applet>.c142 include/usage.c 143 include/applets.h144 <appletdir>/Makefile.in145 <appletdir>/config.in171 Then create a diff by adding the new files with svn (remember your libbb files) 172 svn add <where you put it>/mu.c 173 eventually also: 174 svn add libbb/function.c 175 then 176 svn diff 146 177 and send it to the mailing list: 147 178 busybox@busybox.net
Note:
See TracChangeset
for help on using the changeset viewer.