packages feed

binembed-example-0.1: main_c.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#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;
}