Commit 8253ea93 authored by Lev Walkin's avatar Lev Walkin

command line in preamble

parent 20a7bf48
...@@ -317,7 +317,7 @@ main(int ac, char **av) { ...@@ -317,7 +317,7 @@ main(int ac, char **av) {
* of another language. * of another language.
*/ */
if(asn1_compile(asn, skeletons_dir, asn1_compiler_flags, if(asn1_compile(asn, skeletons_dir, asn1_compiler_flags,
ac + optind, av - optind)) { ac + optind, optind - 1, av - optind)) {
exit(EX_SOFTWARE); exit(EX_SOFTWARE);
} }
......
...@@ -6,16 +6,17 @@ ...@@ -6,16 +6,17 @@
#include "asn1c_save.h" #include "asn1c_save.h"
#include "asn1c_out.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_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 asn1c_copy_over(arg_t *arg, char *path);
static int identical_files(const char *fname1, const char *fname2); static int identical_files(const char *fname1, const char *fname2);
static int generate_pdu_collection_file(arg_t *arg); static int generate_pdu_collection_file(arg_t *arg);
static int generate_preamble(arg_t *, FILE *, int argc, int optc, char **argv);
int int
asn1c_save_compiled_output(arg_t *arg, const char *datadir, 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 *deps = 0;
asn1c_fdeps_t *dlist; asn1c_fdeps_t *dlist;
asn1p_module_t *mod; asn1p_module_t *mod;
...@@ -32,7 +33,8 @@ asn1c_save_compiled_output(arg_t *arg, const char *datadir, ...@@ -32,7 +33,8 @@ asn1c_save_compiled_output(arg_t *arg, const char *datadir,
TQ_FOR(arg->expr, &(mod->members), next) { TQ_FOR(arg->expr, &(mod->members), next) {
if(asn1_lang_map[arg->expr->meta_type] if(asn1_lang_map[arg->expr->meta_type]
[arg->expr->expr_type].type_cb) { [arg->expr->expr_type].type_cb) {
if(asn1c_dump_streams(arg, deps)) if(asn1c_dump_streams(arg, deps,
argc, optc, argv))
return -1; return -1;
} }
} }
...@@ -153,11 +155,11 @@ asn1c_save_compiled_output(arg_t *arg, const char *datadir, ...@@ -153,11 +155,11 @@ asn1c_save_compiled_output(arg_t *arg, const char *datadir,
* Dump the streams. * Dump the streams.
*/ */
static int 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) { if(arg->flags & A1C_PRINT_COMPILED) {
return asn1c_print_streams(arg); return asn1c_print_streams(arg);
} else { } 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) { ...@@ -185,7 +187,7 @@ asn1c_print_streams(arg_t *arg) {
} }
static int 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; asn1p_expr_t *expr = arg->expr;
compiler_streams_t *cs = expr->data; compiler_streams_t *cs = expr->data;
out_chunk_t *ot; out_chunk_t *ot;
...@@ -210,24 +212,8 @@ asn1c_save_streams(arg_t *arg, asn1c_fdeps_t *deps) { ...@@ -210,24 +212,8 @@ asn1c_save_streams(arg_t *arg, asn1c_fdeps_t *deps) {
return -1; return -1;
} }
fprintf(fp_c, generate_preamble(arg, fp_c, argc, optc, argv);
"/*\n" generate_preamble(arg, fp_h, argc, optc, argv);
" * 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
);
header_id = asn1c_make_identifier(0, expr->Identifier, NULL); header_id = asn1c_make_identifier(0, expr->Identifier, NULL);
fprintf(fp_h, fprintf(fp_h,
...@@ -316,6 +302,26 @@ asn1c_save_streams(arg_t *arg, asn1c_fdeps_t *deps) { ...@@ -316,6 +302,26 @@ asn1c_save_streams(arg_t *arg, asn1c_fdeps_t *deps) {
return 0; return 0;
} }
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 static int
identical_files(const char *fname1, const char *fname2) { identical_files(const char *fname1, const char *fname2) {
char buf[2][4096]; char buf[2][4096];
......
...@@ -2,6 +2,6 @@ ...@@ -2,6 +2,6 @@
#define _ASN1C_SAVE_H_ #define _ASN1C_SAVE_H_
int asn1c_save_compiled_output(arg_t *arg, const char *datadir, 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_ */ #endif /* _ASN1C_SAVE_H_ */
...@@ -9,7 +9,7 @@ static int asn1c_attach_streams(asn1p_expr_t *expr); ...@@ -9,7 +9,7 @@ static int asn1c_attach_streams(asn1p_expr_t *expr);
int int
asn1_compile(asn1p_t *asn, const char *datadir, enum asn1c_flags flags, 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_s;
arg_t *arg = &arg_s; arg_t *arg = &arg_s;
asn1p_module_t *mod; asn1p_module_t *mod;
...@@ -58,7 +58,7 @@ asn1_compile(asn1p_t *asn, const char *datadir, enum asn1c_flags flags, ...@@ -58,7 +58,7 @@ asn1_compile(asn1p_t *asn, const char *datadir, enum asn1c_flags flags,
/* /*
* Save or print out the compiled result. * 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 -1;
return 0; return 0;
......
...@@ -72,6 +72,6 @@ enum asn1c_flags { ...@@ -72,6 +72,6 @@ enum asn1c_flags {
* Compile the ASN.1 specification. * Compile the ASN.1 specification.
*/ */
int asn1_compile(asn1p_t *asn, const char *datadir, enum asn1c_flags, 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 */ #endif /* ASN1_COMPILER_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment