aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLev Walkin <vlm@lionet.info>2006-03-17 01:47:57 +0000
committerLev Walkin <vlm@lionet.info>2006-03-17 01:47:57 +0000
commit8253ea93aaa6ccc26643adb3e9a2d7b126bc69eb (patch)
tree47ef29bee99d9054b3674ecdcfb5522053e751bc
parent20a7bf48e857fe0e93d5da1a9f494bfdf12bd8df (diff)
command line in preamble
-rw-r--r--asn1c/asn1c.c2
-rw-r--r--libasn1compiler/asn1c_save.c56
-rw-r--r--libasn1compiler/asn1c_save.h2
-rw-r--r--libasn1compiler/asn1compiler.c4
-rw-r--r--libasn1compiler/asn1compiler.h2
5 files changed, 36 insertions, 30 deletions
diff --git a/asn1c/asn1c.c b/asn1c/asn1c.c
index 030bdfd4..6e22ac11 100644
--- a/asn1c/asn1c.c
+++ b/asn1c/asn1c.c
@@ -317,7 +317,7 @@ main(int ac, char **av) {
* of another language.
*/
if(asn1_compile(asn, skeletons_dir, asn1_compiler_flags,
- ac + optind, av - optind)) {
+ ac + optind, optind - 1, av - optind)) {
exit(EX_SOFTWARE);
}
diff --git a/libasn1compiler/asn1c_save.c b/libasn1compiler/asn1c_save.c
index 194dabd1..226c2a8b 100644
--- a/libasn1compiler/asn1c_save.c
+++ b/libasn1compiler/asn1c_save.c
@@ -6,16 +6,17 @@
#include "asn1c_save.h"
#include "asn1c_out.h"
-static int asn1c_dump_streams(arg_t *arg, asn1c_fdeps_t *);
+static int asn1c_dump_streams(arg_t *arg, asn1c_fdeps_t *, int, int, char **);
static int asn1c_print_streams(arg_t *arg);
-static int asn1c_save_streams(arg_t *arg, asn1c_fdeps_t *);
+static int asn1c_save_streams(arg_t *arg, asn1c_fdeps_t *, int, int, char **);
static int asn1c_copy_over(arg_t *arg, char *path);
static int identical_files(const char *fname1, const char *fname2);
static int generate_pdu_collection_file(arg_t *arg);
+static int generate_preamble(arg_t *, FILE *, int argc, int optc, char **argv);
int
asn1c_save_compiled_output(arg_t *arg, const char *datadir,
- int argc, char **argv) {
+ int argc, int optc, char **argv) {
asn1c_fdeps_t *deps = 0;
asn1c_fdeps_t *dlist;
asn1p_module_t *mod;
@@ -32,7 +33,8 @@ asn1c_save_compiled_output(arg_t *arg, const char *datadir,
TQ_FOR(arg->expr, &(mod->members), next) {
if(asn1_lang_map[arg->expr->meta_type]
[arg->expr->expr_type].type_cb) {
- if(asn1c_dump_streams(arg, deps))
+ if(asn1c_dump_streams(arg, deps,
+ argc, optc, argv))
return -1;
}
}
@@ -153,11 +155,11 @@ asn1c_save_compiled_output(arg_t *arg, const char *datadir,
* Dump the streams.
*/
static int
-asn1c_dump_streams(arg_t *arg, asn1c_fdeps_t *deps) {
+asn1c_dump_streams(arg_t *arg, asn1c_fdeps_t *deps, int argc, int optc, char **argv) {
if(arg->flags & A1C_PRINT_COMPILED) {
return asn1c_print_streams(arg);
} else {
- return asn1c_save_streams(arg, deps);
+ return asn1c_save_streams(arg, deps, argc, optc, argv);
}
}
@@ -185,7 +187,7 @@ asn1c_print_streams(arg_t *arg) {
}
static int
-asn1c_save_streams(arg_t *arg, asn1c_fdeps_t *deps) {
+asn1c_save_streams(arg_t *arg, asn1c_fdeps_t *deps, int argc, int optc, char **argv) {
asn1p_expr_t *expr = arg->expr;
compiler_streams_t *cs = expr->data;
out_chunk_t *ot;
@@ -210,24 +212,8 @@ asn1c_save_streams(arg_t *arg, asn1c_fdeps_t *deps) {
return -1;
}
- fprintf(fp_c,
- "/*\n"
- " * Generated by asn1c-" VERSION " (http://lionet.info/asn1c)\n"
- " * From ASN.1 module \"%s\"\n"
- " * \tfound in \"%s\"\n"
- " */\n\n",
- expr->module->ModuleName,
- expr->module->source_file_name
- );
- fprintf(fp_h,
- "/*\n"
- " * Generated by asn1c-" VERSION " (http://lionet.info/asn1c)\n"
- " * From ASN.1 module \"%s\"\n"
- " * \tfound in \"%s\"\n"
- " */\n\n",
- expr->module->ModuleName,
- expr->module->source_file_name
- );
+ generate_preamble(arg, fp_c, argc, optc, argv);
+ generate_preamble(arg, fp_h, argc, optc, argv);
header_id = asn1c_make_identifier(0, expr->Identifier, NULL);
fprintf(fp_h,
@@ -317,6 +303,26 @@ asn1c_save_streams(arg_t *arg, asn1c_fdeps_t *deps) {
}
static int
+generate_preamble(arg_t *arg, FILE *fp, int argc, int optc, char **argv) {
+ fprintf(fp,
+ "/*\n"
+ " * Generated by asn1c-" VERSION " (http://lionet.info/asn1c)\n"
+ " * From ASN.1 module \"%s\"\n"
+ " * \tfound in \"%s\"\n",
+ arg->expr->module->ModuleName,
+ arg->expr->module->source_file_name);
+ if(optc > 1) {
+ int i;
+ fprintf(fp, " * \t`asn1c ");
+ for(i = 1; i < optc; i++)
+ fprintf(fp, "%s%s", i>1?" ":"", argv[i]);
+ fprintf(fp, "`\n");
+ }
+ fprintf(fp, " */\n\n");
+ return 0;
+}
+
+static int
identical_files(const char *fname1, const char *fname2) {
char buf[2][4096];
FILE *fp1, *fp2;
diff --git a/libasn1compiler/asn1c_save.h b/libasn1compiler/asn1c_save.h
index 26c36a34..d7382f49 100644
--- a/libasn1compiler/asn1c_save.h
+++ b/libasn1compiler/asn1c_save.h
@@ -2,6 +2,6 @@
#define _ASN1C_SAVE_H_
int asn1c_save_compiled_output(arg_t *arg, const char *datadir,
- int argc, char **argv);
+ int argc, int optc, char **argv);
#endif /* _ASN1C_SAVE_H_ */
diff --git a/libasn1compiler/asn1compiler.c b/libasn1compiler/asn1compiler.c
index e38ce8d9..408db2f1 100644
--- a/libasn1compiler/asn1compiler.c
+++ b/libasn1compiler/asn1compiler.c
@@ -9,7 +9,7 @@ static int asn1c_attach_streams(asn1p_expr_t *expr);
int
asn1_compile(asn1p_t *asn, const char *datadir, enum asn1c_flags flags,
- int argc, char **argv) {
+ int argc, int optc, char **argv) {
arg_t arg_s;
arg_t *arg = &arg_s;
asn1p_module_t *mod;
@@ -58,7 +58,7 @@ asn1_compile(asn1p_t *asn, const char *datadir, enum asn1c_flags flags,
/*
* Save or print out the compiled result.
*/
- if(asn1c_save_compiled_output(arg, datadir, argc, argv))
+ if(asn1c_save_compiled_output(arg, datadir, argc, optc, argv))
return -1;
return 0;
diff --git a/libasn1compiler/asn1compiler.h b/libasn1compiler/asn1compiler.h
index e33628f8..39352f99 100644
--- a/libasn1compiler/asn1compiler.h
+++ b/libasn1compiler/asn1compiler.h
@@ -72,6 +72,6 @@ enum asn1c_flags {
* Compile the ASN.1 specification.
*/
int asn1_compile(asn1p_t *asn, const char *datadir, enum asn1c_flags,
- int argc, char **argv);
+ int argc, int optc, char **argv);
#endif /* ASN1_COMPILER_H */