#include #include #include #include "Example.h" #define SEP "/" void printEmbedded(char const *path, struct binembed_node const *node) { int pathLength = 0; char *pathBuffer = 0; for (; node->type != binembed_none; ++node) { switch (node->type) { case binembed_file: pathLength = strlen(path) + strlen(SEP) + strlen(node->name); pathBuffer = malloc(pathLength + 1); if (! pathBuffer) { exit(1); } sprintf(pathBuffer, "%s%s%s", path, SEP, node->name); printf("\n\n%s\n", pathBuffer); for (int i = 0; i < pathLength; ++i) { printf("-"); } printf("\n\n{{{\n"); struct binembed_file const *f = node->content.file; fflush(stdout); if (1 != fwrite(f->data, f->size, 1, stdout)) { exit(1); } fflush(stdout); printf("}}}\n"); free(pathBuffer); pathBuffer = 0; break; case binembed_dir: pathLength = strlen(path) + strlen(SEP) + strlen(node->name); pathBuffer = malloc(pathLength + 1); if (! pathBuffer) { exit(1); } sprintf(pathBuffer, "%s%s%s", path, SEP, node->name); printEmbedded(pathBuffer, node->content.dir); free(pathBuffer); pathBuffer = 0; break; default: break; } } } int main(int argc, char **argv) { printf("binembed-example\n"); printf("================\n"); printEmbedded("binembed-example", Example); return 0; }