1*35c0a8c4SKyle Evans /*- 2*35c0a8c4SKyle Evans * Copyright (c) 2024 Kyle Evans <kevans@FreeBSD.org> 3*35c0a8c4SKyle Evans * 4*35c0a8c4SKyle Evans * SPDX-License-Identifier: BSD-2-Clause 5*35c0a8c4SKyle Evans */ 6*35c0a8c4SKyle Evans 7*35c0a8c4SKyle Evans #include <err.h> 8*35c0a8c4SKyle Evans #include <stdio.h> 9*35c0a8c4SKyle Evans 10*35c0a8c4SKyle Evans #include <libder.h> 11*35c0a8c4SKyle Evans 12*35c0a8c4SKyle Evans int 13*35c0a8c4SKyle Evans main(int argc, char *argv[]) 14*35c0a8c4SKyle Evans { 15*35c0a8c4SKyle Evans FILE *fp; 16*35c0a8c4SKyle Evans struct libder_ctx *ctx; 17*35c0a8c4SKyle Evans struct libder_object *root; 18*35c0a8c4SKyle Evans size_t rootsz; 19*35c0a8c4SKyle Evans bool first = true; 20*35c0a8c4SKyle Evans 21*35c0a8c4SKyle Evans if (argc < 2) { 22*35c0a8c4SKyle Evans fprintf(stderr, "usage: %s file [file...]\n", argv[0]); 23*35c0a8c4SKyle Evans return (1); 24*35c0a8c4SKyle Evans } 25*35c0a8c4SKyle Evans 26*35c0a8c4SKyle Evans ctx = libder_open(); 27*35c0a8c4SKyle Evans libder_set_verbose(ctx, 2); 28*35c0a8c4SKyle Evans for (int i = 1; i < argc; i++) { 29*35c0a8c4SKyle Evans fp = fopen(argv[i], "rb"); 30*35c0a8c4SKyle Evans if (fp == NULL) { 31*35c0a8c4SKyle Evans warn("%s", argv[i]); 32*35c0a8c4SKyle Evans continue; 33*35c0a8c4SKyle Evans } 34*35c0a8c4SKyle Evans 35*35c0a8c4SKyle Evans if (!first) 36*35c0a8c4SKyle Evans fprintf(stderr, "\n"); 37*35c0a8c4SKyle Evans fprintf(stdout, "[%s]\n", argv[i]); 38*35c0a8c4SKyle Evans root = libder_read_file(ctx, fp, &rootsz); 39*35c0a8c4SKyle Evans if (root != NULL) { 40*35c0a8c4SKyle Evans libder_obj_dump(root, stdout); 41*35c0a8c4SKyle Evans libder_obj_free(root); 42*35c0a8c4SKyle Evans root = NULL; 43*35c0a8c4SKyle Evans } 44*35c0a8c4SKyle Evans 45*35c0a8c4SKyle Evans first = false; 46*35c0a8c4SKyle Evans fclose(fp); 47*35c0a8c4SKyle Evans } 48*35c0a8c4SKyle Evans 49*35c0a8c4SKyle Evans libder_close(ctx); 50*35c0a8c4SKyle Evans 51*35c0a8c4SKyle Evans return (0); 52*35c0a8c4SKyle Evans } 53