svn commit: trunk/busybox/miscutils
vda at busybox.net
vda at busybox.net
Sat Jul 5 08:38:42 UTC 2008
Author: vda
Date: 2008-07-05 01:38:41 -0700 (Sat, 05 Jul 2008)
New Revision: 22649
Log:
man: code shrink
function old new delta
man_main 725 765 +40
show_manpage 112 - -112
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 1/0 up/down: 40/-112) Total: -72 bytes
Modified:
trunk/busybox/miscutils/man.c
Changeset:
Modified: trunk/busybox/miscutils/man.c
===================================================================
--- trunk/busybox/miscutils/man.c 2008-07-05 08:20:34 UTC (rev 22648)
+++ trunk/busybox/miscutils/man.c 2008-07-05 08:38:41 UTC (rev 22649)
@@ -23,6 +23,10 @@
*/
+/* Trick gcc to reuse "cat" string. */
+#define STR_catNULmanNUL "cat\0man"
+#define STR_cat "cat\0man"
+
static int run_pipe(const char *unpacker, const char *pager, char *man_filename, int cat)
{
char *cmd;
@@ -61,7 +65,7 @@
return 1;
man_filename[len - 3] = '\0'; /* ".gz" -> "" */
- if (run_pipe("cat", pager, man_filename, cat))
+ if (run_pipe(STR_cat, pager, man_filename, cat))
return 1;
return 0;
@@ -147,28 +151,22 @@
char *next_sect = strchrnul(cur_sect, ':');
int sect_len = next_sect - cur_sect;
char *man_filename;
- int found_here;
+ int cat0man1 = 0;
- /* Search for cat page first */
- man_filename = xasprintf("%.*s/%s%.*s/%s.%.*s" ".bz2",
- path_len, cur_path,
- "cat",
- sect_len, cur_sect,
- *argv,
- sect_len, cur_sect);
- found_here = show_manpage(pager, man_filename, 1);
- free(man_filename);
- if (!found_here) {
+ /* Search for cat, then man page */
+ while (cat0man1 < 2) {
+ int found_here;
man_filename = xasprintf("%.*s/%s%.*s/%s.%.*s" ".bz2",
- path_len, cur_path,
- "man",
- sect_len, cur_sect,
- *argv,
- sect_len, cur_sect);
- found_here = show_manpage(pager, man_filename, 0);
+ path_len, cur_path,
+ STR_catNULmanNUL + cat0man1 * 4,
+ sect_len, cur_sect,
+ *argv,
+ sect_len, cur_sect);
+ found_here = show_manpage(pager, man_filename, cat0man1);
+ found |= found_here;
+ cat0man1 += found_here + 1;
free(man_filename);
}
- found |= found_here;
if (found && !(opt & OPT_a))
goto next_arg;
More information about the busybox-cvs
mailing list