Improve the process for GNU tools
[minix3.git] / minix / commands / service / print.c
blob7f42396ba743918247bf250910712816eb026ce7
2 #include <stdarg.h>
3 #include <assert.h>
4 #include <stdlib.h>
5 #include <stdio.h>
6 #include <string.h>
7 #include <errno.h>
8 #include <pwd.h>
9 #include <unistd.h>
10 #include <limits.h>
11 #include <lib.h>
12 #include <minix/config.h>
13 #include <minix/com.h>
14 #include <minix/const.h>
15 #include <minix/type.h>
16 #include <minix/ipc.h>
17 #include <minix/rs.h>
18 #include <minix/syslib.h>
19 #include <minix/bitmap.h>
20 #include <paths.h>
21 #include <minix/sef.h>
22 #include <minix/dmap.h>
23 #include <sys/types.h>
24 #include <sys/stat.h>
25 #include <configfile.h>
27 #include <machine/archtypes.h>
28 #include <minix/timers.h>
29 #include <err.h>
31 #include "config.h"
32 #include "proto.h"
33 #include "parse.h"
35 #define MAXDEPTH 10
37 static struct {
38 const char *field, *str;
39 } configstack[MAXDEPTH];
41 int depth = 0;
43 void printstack(void)
45 int i;
46 for(i = 0; i < depth; i++)
47 printf("%s %s,", configstack[i].field,
48 configstack[i].str);
51 void print(const char *field, const char *str)
53 printstack();
54 printf("%s %s\n", field, str);
57 void push(const char *field, const char *str)
59 assert(depth < MAXDEPTH);
60 configstack[depth].field = field;
61 configstack[depth].str = str;
62 depth++;
63 printstack();
64 printf("\n");
67 int main(int argc, char **argv)
69 struct rs_config config;
70 const char *label;
71 int id;
73 if(argc != 2) {
74 fprintf(stderr, "usage: %s <config>\n", argv[0]);
75 return 1;
78 memset(&config, 0, sizeof(config));
79 if(!(label = parse_config(NULL, 1, argv[1], &config)))
80 errx(1, "parse_config failed");
82 push(KW_SERVICE, label);
83 if(config.type) push(KW_TYPE, config.type);
85 if(config.descr) push(KW_DESCR, config.descr);
86 if(config.rs_start.rss_nr_pci_id > 0) {
87 printstack();
88 printf("%s %s ", KW_PCI, KW_DEVICE);
89 for(id = 0; id < config.rs_start.rss_nr_pci_id; id++) {
90 printf("%04X:%04X ",
91 config.rs_start.rss_pci_id[id].vid,
92 config.rs_start.rss_pci_id[id].did);
94 printf("\n");