1 /* Wrapper to make installation easier with cross-compiling.
2 *
3 * Copyright 2006 Rob Landley <[email protected]>
4 */
5
6 #include <stdio.h>
7 #include <stdlib.h>
8 #include <string.h>
9 #include <unistd.h>
10 #include "generated/config.h"
11 #include "lib/toyflags.h"
12
13 #define NEWTOY(name, opts, flags) {#name, flags},
14 #define OLDTOY(name, oldname, flags) {#name, flags},
15
16 // Populate toy_list[].
17
18 struct {char *name; int flags;} toy_list[] = {
19 #include "generated/newtoys.h"
20 };
21
22 #undef NEWTOY
23 #undef OLDTOY
24 #define NEWTOY(name,opt,flags) HELP_##name "\0"
25 #if CFG_TOYBOX
26 #define OLDTOY(name,oldname,flags) "\xff" #oldname "\0"
27 #else
28 #define OLDTOY(name, oldname, flags) HELP_##oldname "\0"
29 #endif
30
31 #include "generated/help.h"
32 static char help_data[] =
33 #include "generated/newtoys.h"
34 ;
35
main(int argc,char * argv[])36 int main(int argc, char *argv[])
37 {
38 static char *toy_paths[]={"usr/","bin/","sbin/",0};
39 int i, len = 0;
40
41 if (argc>1 && !strcmp(argv[1], "--help"))
42 exit(sizeof(help_data)!=write(1, help_data, sizeof(help_data)));
43
44 // Output list of applets.
45 for (i=1; i<sizeof(toy_list)/sizeof(*toy_list); i++) {
46 int fl = toy_list[i].flags;
47 if (fl & TOYMASK_LOCATION) {
48 if (argc>1) {
49 int j;
50 for (j=0; toy_paths[j]; j++)
51 if (fl & (1<<j)) len += printf("%s", toy_paths[j]);
52 }
53 len += printf("%s\n",toy_list[i].name);
54 }
55 }
56 return 0;
57 }
58