Commit Graph

36 Commits

Author SHA1 Message Date
Nicolas Williams
24543c4a31 asn1: Improve option handling; help msg
- Giving asn1_compile the name of an ASN.1 module w/o the ".asn1" stem
   will cause the compiler to add the ".asn1" stem, and it will cause
   the compiler to look for a ".opt" file as well.

 - The default C module name substring derivation from the .asn1 file
   name is improved.

 - There is now a --gen-name=NAME option for specifying the C module
   name substring.  This is useful for specifying that in a .opt file.

 - More options now have helpful usage messages.

This will allow simplification of lib/asn1/Makefile.am's invocations of
asn1_compile.

We may well end up requiring the automatic .opt file finding feature
when we eventualy add support for parsing multiple modules in a single
invocation for better support of IMPORTs.
2021-01-13 20:17:58 -06:00
Nicolas Williams
83d4c6ddb5 asn1: Circular types and Topo. sort declarations
Many external ASN.1 modules that we have imported over time define types
like this:

  Foo ::= SEQUENCE { bar Bar }
  Bar ::= SEQUENCE { aMember INTEGER }

and before this change one had to re-order the definitions so that the
one for `Bar` came first.  No more.

We can now have out of order definitions in ASN.1 modules and the
compiler will topologically sort output C type declarations so that one
no longer has to manually sort types in ASN.1 modules when importing
them.

Besides that, it is now possible to create circular data types using
OPTIONAL since we generate such fields as pointers (which can then be
pointers to incomplete struct declarations):

  Circular ::= SEQUENCE {
          name UTF8String,
          next Circular OPTIONAL
  }

Circular types aren't necessarily useful, but they have been used in the
past.  E.g., the rpc.mountd protocol uses a circular type as a linked
list -- it should just have used an array, of course, as that's
semantically equivalent but more space efficient in its encoding, but
the point is that such types exist out there.
2021-01-13 20:17:58 -06:00
Nicolas Williams
07d4b1fc74 asn1: Add compiler --enum-prefix=PREFIX option
C enum labels have to be globally unique.  ASN.1 module ENUMERATED and
INTEGER types with named values are not globally unique.  This means
that ASN.1 integer type value names and enumerations can cause conflicts
when compiled to C.

This new option allows the user to specify a prefix to apply to such
names.  Then this:

    Foo ::= ENUMERATED { v1 (0) }

can generate:

    typedef enum Foo {
      prefix_v1 = 0,
    } Foo;

instead of

    typedef enum Foo {
      v1 = 0,
    } Foo;

which is very likely to conflict.

TBD: Add option to use the type name as the prefix?
2021-01-13 20:17:58 -06:00
Love Hornquist Astrand
060474df16 quel 64bit warnings, fixup implicit encoding for template, fix spelling 2013-06-03 21:46:20 -07:00
Roland C. Dowdeswell
cc47c8fa7b Turn on -Wextra -Wno-sign-compare -Wno-unused-paramter and fix issues.
We turn on a few extra warnings and fix the fallout that occurs
when building with --enable-developer.  Note that we get different
warnings on different machines and so this will be a work in
progress.  So far, we have built on NetBSD/amd64 5.99.64 (which
uses gcc 4.5.3) and Ubuntu 10.04.3 LTS (which uses gcc 4.4.3).

Notably, we fixed

	1.  a lot of missing structure initialisers,

	2.  unchecked return values for functions that glibc
	    marks as __attribute__((warn-unused-result)),

	3.  made minor modifications to slc and asn1_compile
	    which can generate code which generates warnings,
	    and

	4.  a few stragglers here and there.

We turned off the extended warnings for many programs in appl/ as
they are nearing the end of their useful lifetime, e.g.  rsh, rcp,
popper, ftp and telnet.

Interestingly, glibc's strncmp() macro needed to be worked around
whereas the function calls did not.

We have not yet tried this on 32 bit platforms, so there will be
a few more warnings when we do.
2012-02-20 19:45:41 +00:00
Love Hornquist Astrand
0879b9831a remove trailing whitespace 2011-05-21 11:57:31 -07:00
Love Hornquist Astrand
b939943b07 first stange of asn1 table driven compiler 2009-11-21 10:24:56 -08:00
Love Hornquist Astrand
90ed2b6790 Check result of calloc [CID-181] 2009-07-30 09:44:44 +02:00
Love Hornquist Astrand
3f802d359f Use right variable [CID-181] 2009-07-30 09:41:42 +02:00
Love Hörnquist Åstrand
0e6b5c5c22 remove trailing whitespace
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@25232 ec53bebd-3082-4978-b11e-865c3cabbd6b
2009-05-28 01:17:17 +00:00
Love Hörnquist Åstrand
b29554715f rename dce-stype to support_ber
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24605 ec53bebd-3082-4978-b11e-865c3cabbd6b
2009-02-04 22:08:41 +00:00
Love Hörnquist Åstrand
c779be5138 set len too
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24372 ec53bebd-3082-4978-b11e-865c3cabbd6b
2009-01-25 00:33:19 +00:00
Love Hörnquist Åstrand
86a97737e3 make work
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24368 ec53bebd-3082-4978-b11e-865c3cabbd6b
2009-01-25 00:32:40 +00:00
Love Hörnquist Åstrand
e0c70c6906 make work
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24347 ec53bebd-3082-4978-b11e-865c3cabbd6b
2009-01-25 00:29:08 +00:00
Love Hörnquist Åstrand
e5c70370c9 --option-file
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24346 ec53bebd-3082-4978-b11e-865c3cabbd6b
2009-01-25 00:28:59 +00:00
Love Hörnquist Åstrand
0179e12d54 remove -DHAVE_CONFIG_H, add --one-source-file, rename krb5 and cms to "better" file names
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24337 ec53bebd-3082-4978-b11e-865c3cabbd6b
2009-01-25 00:23:39 +00:00
Love Hörnquist Åstrand
6937d41a02 remove trailing whitespace
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@23815 ec53bebd-3082-4978-b11e-865c3cabbd6b
2008-09-13 09:21:03 +00:00
Love Hörnquist Åstrand
e172367898 switch to utf8 encoding of all files
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@23814 ec53bebd-3082-4978-b11e-865c3cabbd6b
2008-09-13 08:53:55 +00:00
Love Hörnquist Åstrand
cd004f4ff3 fclose file, not string.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@20858 ec53bebd-3082-4978-b11e-865c3cabbd6b
2007-06-03 18:56:41 +00:00
Love Hörnquist Åstrand
2f1cc7b5fd Close asn1 file while done.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@20855 ec53bebd-3082-4978-b11e-865c3cabbd6b
2007-06-03 18:13:41 +00:00
Love Hörnquist Åstrand
bdd32566a1 add --sequence
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@18006 ec53bebd-3082-4978-b11e-865c3cabbd6b
2006-09-05 12:27:29 +00:00
Love Hörnquist Åstrand
c6dc7f253e Const poision.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@15959 ec53bebd-3082-4978-b11e-865c3cabbd6b
2005-08-23 10:50:12 +00:00
Love Hörnquist Åstrand
b838707d0e Commit much improved ASN.1 compiler from joda-choice-branch.
Highlighs for the compiler is support for CHOICE and in general better
support for tags. This compiler support most of what is needed for
PK-INIT, LDAP, X.509, PKCS-12 and many other protocols.


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@15617 ec53bebd-3082-4978-b11e-865c3cabbd6b
2005-07-12 06:27:42 +00:00
Love Hörnquist Åstrand
4eaa507264 rename optind to optidx
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@15441 ec53bebd-3082-4978-b11e-865c3cabbd6b
2005-06-16 20:05:31 +00:00
Love Hörnquist Åstrand
381c3f8b41 const poison
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@14706 ec53bebd-3082-4978-b11e-865c3cabbd6b
2005-03-31 00:37:42 +00:00
Assar Westerlund
67422a6b02 s/[gs]et_progname/[gs]etprogname/
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@9704 ec53bebd-3082-4978-b11e-865c3cabbd6b
2001-02-20 01:44:56 +00:00
Johan Danielsson
c5b916ca6f remove advertising clause
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@7464 ec53bebd-3082-4978-b11e-865c3cabbd6b
1999-12-02 17:05:13 +00:00
Johan Danielsson
1dfddd5226 use getargs
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@5810 ec53bebd-3082-4978-b11e-865c3cabbd6b
1999-04-01 09:00:39 +00:00
Assar Westerlund
8970733922 (main): always set `name'
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@5296 ec53bebd-3082-4978-b11e-865c3cabbd6b
1999-01-30 18:20:38 +00:00
Johan Danielsson
c6a6c25430 argv[2] is basename of the headerfile
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@2477 ec53bebd-3082-4978-b11e-865c3cabbd6b
1997-07-20 00:10:17 +00:00
Johan Danielsson
5a32a5c8e7 Add copyright notice.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@2389 ec53bebd-3082-4978-b11e-865c3cabbd6b
1997-07-16 21:40:05 +00:00
Assar Westerlund
c1439d2cd8 changed asn1_locl.h to gen_locl.h and der_locl.h
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@2328 ec53bebd-3082-4978-b11e-865c3cabbd6b
1997-07-15 20:02:05 +00:00
Assar Westerlund
0b51fffea2 use `err'
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@2273 ec53bebd-3082-4978-b11e-865c3cabbd6b
1997-07-14 11:39:03 +00:00
Johan Danielsson
2f2da77dc3 Fix include file mess.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@1454 ec53bebd-3082-4978-b11e-865c3cabbd6b
1997-03-17 10:40:52 +00:00
Assar Westerlund
93dbc8da93 Id
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@1427 ec53bebd-3082-4978-b11e-865c3cabbd6b
1997-03-14 10:22:48 +00:00
Assar Westerlund
b55aed018f Now uses generated ASN1-code.
kinit should be able to get a initial message from FOO.SE.


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@844 ec53bebd-3082-4978-b11e-865c3cabbd6b
1996-10-13 21:13:38 +00:00