void rcxml_init(struct rcxml *rc);
void rcxml_parse_xml(struct buf *b);
void rcxml_read(const char *filename);
-void rcxml_set_verbose(void);
+void rcxml_get_nodenames(struct buf *b);
#endif /* RCXML_H */
static bool in_keybind = false;
static bool is_attribute = false;
-static bool verbose = false;
+static bool write_to_nodename_buffer = false;
+static struct buf *nodename_buffer;
static void rstrip(char *buf, const char *pattern)
{
if (!nodename)
return;
rstrip(nodename, ".openbox_config");
- if (verbose) {
+ if (write_to_nodename_buffer) {
if (is_attribute)
- printf("@");
- printf("%s: %s\n", nodename, content);
+ buf_add(nodename_buffer, "@");
+ buf_add(nodename_buffer, nodename);
+ buf_add(nodename_buffer, ": ");
+ buf_add(nodename_buffer, content);
+ buf_add(nodename_buffer, "\n");
}
if (!content)
return;
free(b.buf);
}
-void rcxml_set_verbose(void)
+void rcxml_get_nodenames(struct buf *b)
{
- verbose = true;
+ write_to_nodename_buffer = true;
+ nodename_buffer = b;
}
#include <unistd.h>
#include "rcxml.h"
+#include "buf.h"
struct rcxml rc = { 0 };
int main(int argc, char **argv)
{
+ struct buf b;
+
if (argc != 2) {
fprintf(stderr, "usage: %s <rc.xml file>\n", argv[0]);
exit(EXIT_FAILURE);
}
+ buf_init(&b);
rcxml_init(&rc);
- rcxml_set_verbose();
+ rcxml_get_nodenames(&b);
rcxml_read(argv[1]);
+ printf("%s", b.buf);
+ free(b.buf);
}