1 #include <ccan/cdump/cdump_parse.h>
2 #include <ccan/talloc/talloc.h>
3 #include <ccan/grab_file/grab_file.h>
11 int main(int argc, char *argv[])
18 errx(1, "Usage: %s <declfile> <defsfile> <sourcefiles>...",
21 declfd = open(argv[1], O_WRONLY|O_CREAT|O_TRUNC, 0600);
23 err(1, "Opening %s", argv[1]);
24 deffd = open(argv[2], O_WRONLY|O_CREAT|O_TRUNC, 0600);
26 err(1, "Opening %s", argv[2]);
28 decls = (char *)"#ifndef OSERVER_CDUMP_DECLS_H\n"
29 "#define OSERVER_CDUMP_DECLS_H\n"
30 "/* Autogenerated by dump_headers. */\n"
31 "#include <ccan/cdump/cdump_internal.h>\n";
32 if (write(declfd, decls, strlen(decls)) != strlen(decls))
33 err(1, "Writing to %s", argv[1]);
35 defs = (char *)"/* Definitions: autogenerated by dump_headers */\n"
36 "#define CDUMP_FAKE 1\n"
37 "#include <ccan/oserver/oserver_types.h>\n"
38 "#include <ccan/oserver/oserver_cdump.h>\n"
39 "#include <stddef.h>\n";
40 if (write(deffd, defs, strlen(defs)) != strlen(defs))
41 err(1, "Writing to %s", argv[2]);
43 for (i = 3; i < argc; i++) {
46 code = grab_file(NULL, argv[i], NULL);
48 err(1, "Reading %s", argv[i]);
49 errmsg = cdump_parse(code, code, &decls, &defs);
51 errx(1, "Parsing %s: %s", argv[1], errmsg);
52 if (write(declfd, decls, strlen(decls)) != strlen(decls))
53 err(1, "Writing to %s", argv[1]);
54 if (write(deffd, defs, strlen(defs)) != strlen(defs))
55 err(1, "Writing to %s", argv[2]);
59 decls = (char *)"#endif /* OSERVER_CDUMP_DECLS_H */\n";
60 if (write(declfd, decls, strlen(decls)) != strlen(decls))
61 err(1, "Writing to %s", argv[1]);