/* vi: set sw=4 ts=4: */ /* * Copyright (C) 2009 Denys Vlasenko. * * Licensed under GPLv2, see file LICENSE in this source tree. */ #include <unistd.h> #include <stdint.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #include "autoconf.h" #define SKIP_applet_main #define ALIGN1 /* nothing, just to placate applet_tables.h */ #define ALIGN2 /* nothing, just to placate applet_tables.h */ #include "applet_tables.h" /* Since we can't use platform.h, have to do this again by hand: */ #if ENABLE_NOMMU # define BB_MMU 0 # define USE_FOR_NOMMU(...) __VA_ARGS__ # define USE_FOR_MMU(...) #else # define BB_MMU 1 # define USE_FOR_NOMMU(...) # define USE_FOR_MMU(...) __VA_ARGS__ #endif #include "usage.h" #define MAKE_USAGE(aname, usage) { aname, usage }, static struct usage_data { const char *aname; const char *usage; } usage_array[] = { #include "applets.h" }; static int compare_func(const void *a, const void *b) { const struct usage_data *ua = a; const struct usage_data *ub = b; return strcmp(ua->aname, ub->aname); } int main(void) { int col, len2; int i; int num_messages = sizeof(usage_array) / sizeof(usage_array[0]); if (num_messages == 0) return 0; qsort(usage_array, num_messages, sizeof(usage_array[0]), compare_func); col = 0; for (i = 0; i < num_messages; i++) { len2 = strlen(usage_array[i].aname) + 2; if (col >= 76 - len2) { printf(",\n"); col = 0; } if (col == 0) { col = 6; printf("\t"); } else { printf(", "); } printf(usage_array[i].aname); col += len2; } printf("\n\n"); printf("=head1 COMMAND DESCRIPTIONS\n\n"); printf("=over 4\n\n"); for (i = 0; i < num_messages; i++) { if (usage_array[i].aname[0] >= 'a' && usage_array[i].aname[0] <= 'z' && usage_array[i].usage[0] != NOUSAGE_STR[0] ) { printf("=item B<%s>\n\n", usage_array[i].aname); if (usage_array[i].usage[0]) printf("%s %s\n\n", usage_array[i].aname, usage_array[i].usage); else printf("%s\n\n", usage_array[i].aname); } } printf("=back\n\n"); return 0; } /* TODO: we used to make options bold with B<> and output an example too: =item B<cat> cat [B<-u>] [FILE]... Concatenate FILE(s) and print them to stdout Options: -u Use unbuffered i/o (ignored) Example: $ cat /proc/uptime 110716.72 17.67 */