diff options
Diffstat (limited to 'src/asn1Parser.c')
-rw-r--r-- | src/asn1Parser.c | 195 |
1 files changed, 0 insertions, 195 deletions
diff --git a/src/asn1Parser.c b/src/asn1Parser.c deleted file mode 100644 index 475bfc9..0000000 --- a/src/asn1Parser.c +++ /dev/null @@ -1,195 +0,0 @@ -/* asn1Parser.c -- program to parse a file with ASN1 definitions - * Copyright (C) 2002-2014 Free Software Foundation, Inc. - * - * This file is part of LIBTASN1. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -#include <config.h> - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <unistd.h> -#include <getopt.h> - -#include <libtasn1.h> - -#include <progname.h> -#include <version-etc.h> - -/* This feature is available in gcc versions 2.5 and later. */ -#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) -#define ATTR_NO_RETRUN -#else -#define ATTR_NO_RETRUN __attribute__ ((__noreturn__)) -#endif - -ATTR_NO_RETRUN static void -usage (int status) -{ - if (status != EXIT_SUCCESS) - fprintf (stderr, "Try `%s --help' for more information.\n", program_name); - else - { - printf ("\ -Usage: %s [OPTION] FILE\n", program_name); - printf ("\ -Read FILE with ASN.1 definitions and generate\n\ -a C array that is used with libtasn1 functions.\n\ -\n"); - printf ("\ -Mandatory arguments to long options are mandatory for short options too.\n\ - -c, --check checks the syntax only\n\ - -o, --output=FILE output file\n\ - -n, --name=NAME array name\n\ - -h, --help display this help and exit\n\ - -v, --version output version information and exit\n"); - emit_bug_reporting_address (); - } - exit (status); -} - -int -main (int argc, char *argv[]) -{ - static const struct option long_options[] = { - {"help", no_argument, 0, 'h'}, - {"version", no_argument, 0, 'v'}, - {"check", no_argument, 0, 'c'}, - {"output", required_argument, 0, 'o'}, - {"name", required_argument, 0, 'n'}, - {0, 0, 0, 0} - }; - int option_index = 0; - int option_result; - char *outputFileName = NULL; - char *inputFileName = NULL; - char *vectorName = NULL; - int checkSyntaxOnly = 0; - asn1_node pointer = NULL; - char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; - int parse_result = ASN1_SUCCESS; - - set_program_name (argv[0]); - - opterr = 0; /* disable error messages from getopt */ - - while (1) - { - - option_result = - getopt_long (argc, argv, "hvco:n:", long_options, &option_index); - - if (option_result == -1) - break; - - switch (option_result) - { - case 0: - fprintf (stderr, "option %s", long_options[option_index].name); - if (optarg) - fprintf (stderr, " with arg %s", optarg); - putc ('\n', stderr); - break; - case 'h': /* HELP */ - free (outputFileName); - free (vectorName); - usage (EXIT_SUCCESS); - break; - case 'v': /* VERSION */ - version_etc (stdout, program_name, PACKAGE, VERSION, - "Fabio Fiorina", NULL); - free (outputFileName); - free (vectorName); - exit (0); - break; - case 'c': /* CHECK SYNTAX */ - checkSyntaxOnly = 1; - break; - case 'o': /* OUTPUT */ - outputFileName = (char *) malloc (strlen (optarg) + 1); - strcpy (outputFileName, optarg); - break; - case 'n': /* VECTOR NAME */ - vectorName = (char *) malloc (strlen (optarg) + 1); - strcpy (vectorName, optarg); - break; - case '?': /* UNKNOW OPTION */ - fprintf (stderr, - "asn1Parser: option '%s' not recognized or without argument.\n\n", - argv[optind - 1]); - free (outputFileName); - free (vectorName); - usage (EXIT_FAILURE); - break; - default: - fprintf (stderr, - "asn1Parser: ?? getopt returned character code Ox%x ??\n", - (unsigned)option_result); - } - - } - - if (optind == argc) - { - free (outputFileName); - free (vectorName); - usage (EXIT_SUCCESS); - } - else - { - inputFileName = (char *) malloc (strlen (argv[optind]) + 1); - strcpy (inputFileName, argv[optind]); - } - - if (checkSyntaxOnly == 1) - { - parse_result = - asn1_parser2tree (inputFileName, &pointer, errorDescription); - asn1_delete_structure (&pointer); - } - else /* C VECTOR CREATION */ - parse_result = asn1_parser2array (inputFileName, - outputFileName, vectorName, - errorDescription); - - switch (parse_result) - { - case ASN1_SUCCESS: - fputs ("Done.\n", stderr); - break; - case ASN1_FILE_NOT_FOUND: - fprintf (stderr, "asn1Parser: file %s was not found\n", inputFileName); - break; - case ASN1_SYNTAX_ERROR: - case ASN1_IDENTIFIER_NOT_FOUND: - case ASN1_NAME_TOO_LONG: - fprintf (stderr, "asn1Parser: %s\n", errorDescription); - break; - default: - fprintf (stderr, "libtasn1 ERROR: %s\n", asn1_strerror (parse_result)); - } - - - free (inputFileName); - free (outputFileName); - free (vectorName); - - if (parse_result != ASN1_SUCCESS) - exit (1); - exit (0); -} |