diff options
Diffstat (limited to 'src/asn1Decoding.c')
-rw-r--r-- | src/asn1Decoding.c | 56 |
1 files changed, 48 insertions, 8 deletions
diff --git a/src/asn1Decoding.c b/src/asn1Decoding.c index 65456bf..b864768 100644 --- a/src/asn1Decoding.c +++ b/src/asn1Decoding.c @@ -25,14 +25,15 @@ #include <stdlib.h> #include <unistd.h> #include <getopt.h> +#include <sys/types.h> +#include <sys/stat.h> #include <libtasn1.h> -#include <progname.h> -#include <version-etc.h> -#include <read-file.h> #include "benchmark.h" +#define program_name "asn1Decoding" + static int decode (asn1_node definitions, const char *typeName, void *der, int der_len, int benchmark, int strict); @@ -62,11 +63,51 @@ described in ASN.1 DEFINITIONS file, and print decoded structures.\n\ -t, --no-time-strict use strict DER decoding but not in time fields\n\ -h, --help display this help and exit\n\ -v, --version output version information and exit\n"); - emit_bug_reporting_address (); + printf ("Report bugs to "PACKAGE_BUGREPORT); } exit (status); } +static char *read_binary_file(const char *file, size_t *l) +{ + FILE *fp; + struct stat st; + char *out; + + if (stat(file, &st) == -1) + { + fprintf(stderr, "Error reading file size!\n"); + exit(1); + } + + fp = fopen(file, "rb"); + if (fp == NULL) + { + fprintf(stderr, "Error reading file!\n"); + exit(1); + } + + out = malloc(st.st_size+1); + if (out == NULL) + { + fprintf(stderr, "Memory error!\n"); + exit(1); + } + + *l = fread(out, 1, st.st_size, fp); + if (*l != st.st_size) + { + fprintf(stderr, "Error reading contents (got: %ld, expected %ld)!\n", + (long)*l, (long)st.st_size); + exit(1); + } + + out[*l] = 0; + + fclose(fp); + return out; +} + int main (int argc, char *argv[]) { @@ -92,8 +133,6 @@ main (int argc, char *argv[]) int flags = 0, debug = 0; /* FILE *outputFile; */ - set_program_name (argv[0]); - opterr = 0; /* disable error messages from getopt */ while (1) @@ -123,8 +162,9 @@ main (int argc, char *argv[]) flags |= ASN1_DECODE_FLAG_ALLOW_INCORRECT_TIME; break; case 'v': /* VERSION */ - version_etc (stdout, program_name, PACKAGE, VERSION, - "Fabio Fiorina", NULL); + printf(program_name" "PACKAGE" " VERSION"\n"); + printf("Copyright (C) 2017-2019 Free Software Foundation, Inc.\n\n"); + printf("Written by Fabio Fiorina\n"); exit (0); break; case '?': /* UNKNOW OPTION */ |