Magellan Linux

Annotation of /trunk/mkinitrd-magellan/busybox/applets/usage_pod.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1123 - (hide annotations) (download)
Wed Aug 18 21:56:57 2010 UTC (13 years, 9 months ago) by niro
File MIME type: text/plain
File size: 2329 byte(s)
-updated to busybox-1.17.1
1 niro 984 /* vi: set sw=4 ts=4: */
2     /*
3     * Copyright (C) 2009 Denys Vlasenko.
4     *
5     * Licensed under GPLv2, see file LICENSE in this tarball for details.
6     */
7     #include <unistd.h>
8     #include <stdint.h>
9 niro 1123 #include <stdlib.h>
10 niro 984 #include <string.h>
11     #include <stdio.h>
12    
13     #include "autoconf.h"
14    
15     #define SKIP_applet_main
16     #define ALIGN1 /* nothing, just to placate applet_tables.h */
17     #define ALIGN2 /* nothing, just to placate applet_tables.h */
18     #include "applet_tables.h"
19    
20     /* Since we can't use platform.h, have to do this again by hand: */
21     #if ENABLE_NOMMU
22     # define BB_MMU 0
23     # define USE_FOR_NOMMU(...) __VA_ARGS__
24     # define USE_FOR_MMU(...)
25     #else
26     # define BB_MMU 1
27     # define USE_FOR_NOMMU(...)
28     # define USE_FOR_MMU(...) __VA_ARGS__
29     #endif
30    
31     #include "usage.h"
32 niro 1123 #define MAKE_USAGE(aname, usage) { aname, usage },
33     static struct usage_data {
34     const char *aname;
35     const char *usage;
36     } usage_array[] = {
37 niro 984 #include "applets.h"
38 niro 1123 };
39 niro 984
40 niro 1123 static int compare_func(const void *a, const void *b)
41     {
42     const struct usage_data *ua = a;
43     const struct usage_data *ub = b;
44     return strcmp(ua->aname, ub->aname);
45     }
46    
47 niro 984 int main(void)
48     {
49     int col, len2;
50    
51 niro 1123 int i;
52     int num_messages = sizeof(usage_array) / sizeof(usage_array[0]);
53    
54     if (num_messages == 0)
55     return 0;
56    
57     qsort(usage_array,
58     num_messages, sizeof(usage_array[0]),
59     compare_func);
60    
61 niro 984 col = 0;
62 niro 1123 for (i = 0; i < num_messages; i++) {
63     len2 = strlen(usage_array[i].aname) + 2;
64 niro 984 if (col >= 76 - len2) {
65     printf(",\n");
66     col = 0;
67     }
68     if (col == 0) {
69     col = 6;
70     printf("\t");
71     } else {
72     printf(", ");
73     }
74 niro 1123 printf(usage_array[i].aname);
75 niro 984 col += len2;
76     }
77     printf("\n\n");
78    
79     printf("=head1 COMMAND DESCRIPTIONS\n\n");
80     printf("=over 4\n\n");
81    
82 niro 1123 for (i = 0; i < num_messages; i++) {
83     if (usage_array[i].aname[0] >= 'a' && usage_array[i].aname[0] <= 'z'
84     && usage_array[i].usage[0] != NOUSAGE_STR[0]
85 niro 984 ) {
86 niro 1123 printf("=item B<%s>\n\n", usage_array[i].aname);
87     if (usage_array[i].usage[0])
88     printf("%s %s\n\n", usage_array[i].aname, usage_array[i].usage);
89 niro 984 else
90 niro 1123 printf("%s\n\n", usage_array[i].aname);
91 niro 984 }
92     }
93     return 0;
94     }
95    
96     /* TODO: we used to make options bold with B<> and output an example too:
97    
98     =item B<cat>
99    
100     cat [B<-u>] [FILE]...
101    
102     Concatenate FILE(s) and print them to stdout
103    
104     Options:
105     -u Use unbuffered i/o (ignored)
106    
107     Example:
108     $ cat /proc/uptime
109     110716.72 17.67
110    
111     */