From 7415bffa22305a2d339bdc0c79633f0e5796e820 Mon Sep 17 00:00:00 2001 From: Lev Walkin Date: Mon, 16 Aug 2004 11:38:13 +0000 Subject: -t option and minor changes --- asn1c/Makefile.am | 3 +++ asn1c/Makefile.in | 15 +++++++++------ asn1c/asn1c.c | 29 ++++++++++++++++++++--------- 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/asn1c/Makefile.am b/asn1c/Makefile.am index 2363c189..b9128ae8 100644 --- a/asn1c/Makefile.am +++ b/asn1c/Makefile.am @@ -7,6 +7,7 @@ AM_CPPFLAGS = \ -I${top_srcdir}/libasn1parser \ -I${top_srcdir}/libasn1print \ -I${top_srcdir}/libasn1fix \ + -I${top_srcdir}/skeletons \ -DDATADIR=\"${pkgdatadir}\" LDADD = \ @@ -15,6 +16,8 @@ LDADD = \ ${top_builddir}/libasn1print/libasn1print.la \ ${top_builddir}/libasn1compiler/libasn1compiler.la +asn1c_SOURCES = asn1c.c decoder.c decoder.h + bin_PROGRAMS = asn1c dist_man1_MANS = asn1c.1 diff --git a/asn1c/Makefile.in b/asn1c/Makefile.in index 6369a4a3..b07dc6f0 100644 --- a/asn1c/Makefile.in +++ b/asn1c/Makefile.in @@ -14,7 +14,7 @@ @SET_MAKE@ -SOURCES = asn1c.c +SOURCES = $(asn1c_SOURCES) srcdir = @srcdir@ top_srcdir = @top_srcdir@ @@ -53,8 +53,8 @@ CONFIG_CLEAN_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) PROGRAMS = $(bin_PROGRAMS) -asn1c_SOURCES = asn1c.c -asn1c_OBJECTS = asn1c.$(OBJEXT) +am_asn1c_OBJECTS = asn1c.$(OBJEXT) decoder.$(OBJEXT) +asn1c_OBJECTS = $(am_asn1c_OBJECTS) asn1c_LDADD = $(LDADD) asn1c_DEPENDENCIES = ${top_builddir}/libasn1parser/libasn1parser.la \ ${top_builddir}/libasn1fix/libasn1fix.la \ @@ -63,7 +63,7 @@ asn1c_DEPENDENCIES = ${top_builddir}/libasn1parser/libasn1parser.la \ DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles -@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/asn1c.Po +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/asn1c.Po ./$(DEPDIR)/decoder.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) \ @@ -72,8 +72,8 @@ LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) \ CCLD = $(CC) LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = asn1c.c -DIST_SOURCES = asn1c.c +SOURCES = $(asn1c_SOURCES) +DIST_SOURCES = $(asn1c_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-exec-recursive install-info-recursive \ @@ -204,6 +204,7 @@ AM_CPPFLAGS = \ -I${top_srcdir}/libasn1parser \ -I${top_srcdir}/libasn1print \ -I${top_srcdir}/libasn1fix \ + -I${top_srcdir}/skeletons \ -DDATADIR=\"${pkgdatadir}\" LDADD = \ @@ -212,6 +213,7 @@ LDADD = \ ${top_builddir}/libasn1print/libasn1print.la \ ${top_builddir}/libasn1compiler/libasn1compiler.la +asn1c_SOURCES = asn1c.c decoder.c decoder.h dist_man1_MANS = asn1c.1 check_SCRIPTS = check-parsing.sh TESTS = check-parsing.sh @@ -289,6 +291,7 @@ distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asn1c.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/decoder.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ diff --git a/asn1c/asn1c.c b/asn1c/asn1c.c index 0fd40dbc..6ebebe0d 100644 --- a/asn1c/asn1c.c +++ b/asn1c/asn1c.c @@ -19,14 +19,16 @@ #include /* Portable basename(3) and dirname(3) */ +#include "decoder.h" /* -t: decode TL[V?] string */ + static void usage(char *av0); /* Print the Usage screen and exit(EX_USAGE) */ int main(int ac, char **av) { - enum asn1p_flags asn1_parser_flags = A1P_NOFLAGS; - enum asn1f_flags asn1_fixer_flags = A1F_NOFLAGS; - enum asn1c_flags asn1_compiler_flags = A1C_NOFLAGS; - enum asn1print_flags_e print_arg__flags = APF_NOFLAGS; + enum asn1p_flags asn1_parser_flags = A1P_NOFLAGS; + enum asn1f_flags asn1_fixer_flags = A1F_NOFLAGS; + enum asn1c_flags asn1_compiler_flags= A1C_NOFLAGS; + enum asn1print_flags asn1_print_flags = APF_NOFLAGS; int print_arg__print_out = 0; /* Don't compile, just print parsed */ int print_arg__fix_n_print = 0; /* Fix and print */ int warnings_as_errors = 0; /* Treat warnings as errors */ @@ -39,7 +41,7 @@ main(int ac, char **av) { /* * Process command-line options. */ - while((ch = getopt(ac, av, "EFf:LPRS:W:")) != -1) + while((ch = getopt(ac, av, "EFf:LPRS:t:W:")) != -1) switch(ch) { case 'E': print_arg__print_out = 1; @@ -62,13 +64,16 @@ main(int ac, char **av) { char *known_type = optarg + 18; ret = asn1f_make_known_external_type(known_type); assert(ret == 0 || errno == EEXIST); + } else if(strcmp(optarg, "undoc") == 0) { + /* Enable undocumented operation */ + asn1_print_flags |= APF_FULL_CONSTRAINTS; } else { fprintf(stderr, "-f%s: Invalid argument\n", optarg); exit(EX_USAGE); } break; case 'L': - print_arg__flags |= APF_LINE_COMMENTS; + asn1_print_flags |= APF_LINE_COMMENTS; break; case 'P': asn1_compiler_flags |= A1C_PRINT_COMPILED; @@ -79,6 +84,10 @@ main(int ac, char **av) { case 'S': skeletons_dir = optarg; break; + case 't': + if(decode_tlv_from_string(optarg)) + exit(EX_DATAERR); + exit(0); case 'W': if(strcmp(optarg, "error") == 0) { warnings_as_errors = 1; @@ -151,10 +160,10 @@ main(int ac, char **av) { } /* - * Dump the parsed ASN.1 tree if -E specified and -F is not given. + * Dump the parsed ASN.1 tree if -E specified and -F is NOT given. */ if(print_arg__print_out && !print_arg__fix_n_print) { - if(asn1print(asn, print_arg__flags)) + if(asn1print(asn, asn1_print_flags)) exit(EX_SOFTWARE); return 0; } @@ -181,7 +190,7 @@ main(int ac, char **av) { * Dump the parsed ASN.1 tree if -E specified and -F is given. */ if(print_arg__print_out && print_arg__fix_n_print) { - if(asn1print(asn, print_arg__flags)) + if(asn1print(asn, asn1_print_flags)) exit(EX_SOFTWARE); return 0; } @@ -248,6 +257,8 @@ usage(char *av0) { "\t \t(Default is \"%s\")\n" "\t-R \tRestrict output (tables only, no support code)\n" "\n" + "\t-t \tDecode the given tag[/length] sequence\n" + "\n" "\t-ftypes88\tUse only ASN.1:1988 embedded types\n" /* "\t-fconstr90\tUse only ASN.1:1990 constructs (not available)\n" -- cgit v1.2.3