diff options
Diffstat (limited to 'g-ir-extract-deps.c')
-rw-r--r-- | g-ir-extract-deps.c | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/g-ir-extract-deps.c b/g-ir-extract-deps.c deleted file mode 100644 index f0cf725..0000000 --- a/g-ir-extract-deps.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - extract the dependencies string from a GObject Introspection 1.0 typelib file - and print it on stdout -*/ - -#include <stdio.h> -#include <stdint.h> -#include <stdlib.h> - -#define G_IR_MAGIC "GOBJ\nMETADATA\r\n\032" - -int main(int argc, char ** argv) -{ - FILE * typelib; - char * magic; - uint32_t deps_offset; - char * deps; - - if (argc < 2) - { - fprintf(stderr, "too few arguments\n"); - exit(1); - } - - typelib = fopen(argv[1], "r"); - if (typelib == NULL) - { - fprintf(stderr, "failed to open %s\n", argv[1]); - exit(1); - } - magic = malloc(16); - deps = malloc(8192); - if ((magic == NULL) || (deps == NULL)) - { - fprintf(stderr, "failed to allocate memory\n"); - exit(1); - } - if (fread(magic, 16, 1, typelib) < 1) - { - fprintf(stderr, "failed to read magic from typelib\n"); - exit(1); - } - if (strcmp(magic, G_IR_MAGIC)) - { - fprintf(stderr, "magic mismatch, not a typelib?\n"); - exit(1); - } - - fseek(typelib, 36, SEEK_SET); - if (fread(&deps_offset, 4, 1, typelib) < 1) - { - fprintf(stderr, "failed to read deps offset from typelib\n"); - exit(1); - } - if (deps_offset > 0) - { - fseek(typelib, deps_offset, SEEK_SET); - if (fscanf(typelib, "%8191s", deps) < 1) - { - fprintf(stderr, "failed to read deps from typelib\n"); - exit(1); - } - - printf("%s\n", deps); - } - - free(deps); - free(magic); - fclose(typelib); - - return 0; -} |