diff --git a/libasn1compiler/asn1c_save.c b/libasn1compiler/asn1c_save.c
index d54777f..3fed83d 100644
--- a/libasn1compiler/asn1c_save.c
+++ b/libasn1compiler/asn1c_save.c
@@ -6,13 +6,13 @@
 #include "asn1c_save.h"
 #include "asn1c_out.h"
 
-static int asn1c_dump_streams(arg_t *arg, asn1c_fdeps_t *, int, int, char **);
+static int asn1c_dump_streams(arg_t *arg, asn1c_fdeps_t *, int, char **);
 static int asn1c_print_streams(arg_t *arg);
-static int asn1c_save_streams(arg_t *arg, asn1c_fdeps_t *, int, int, char **);
+static int asn1c_save_streams(arg_t *arg, asn1c_fdeps_t *, 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);
+static int generate_preamble(arg_t *, FILE *, int optc, char **argv);
 
 int
 asn1c_save_compiled_output(arg_t *arg, const char *datadir,
@@ -33,8 +33,7 @@
 		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,
-						argc, optc, argv))
+				if(asn1c_dump_streams(arg, deps, optc, argv))
 					return -1;
 			}
 		}
@@ -155,11 +154,11 @@
  * Dump the streams.
  */
 static int
-asn1c_dump_streams(arg_t *arg, asn1c_fdeps_t *deps, int argc, int optc, char **argv)  {
+asn1c_dump_streams(arg_t *arg, asn1c_fdeps_t *deps, int optc, char **argv)  {
 	if(arg->flags & A1C_PRINT_COMPILED) {
 		return asn1c_print_streams(arg);
 	} else {
-		return asn1c_save_streams(arg, deps, argc, optc, argv);
+		return asn1c_save_streams(arg, deps, optc, argv);
 	}
 }
 
@@ -187,7 +186,7 @@
 }
 
 static int
-asn1c_save_streams(arg_t *arg, asn1c_fdeps_t *deps, int argc, int optc, char **argv) {
+asn1c_save_streams(arg_t *arg, asn1c_fdeps_t *deps, int optc, char **argv) {
 	asn1p_expr_t *expr = arg->expr;
 	compiler_streams_t *cs = expr->data;
 	out_chunk_t *ot;
@@ -212,8 +211,8 @@
 		return -1;
 	}
 
-	generate_preamble(arg, fp_c, argc, optc, argv);
-	generate_preamble(arg, fp_h, argc, optc, argv);
+	generate_preamble(arg, fp_c, optc, argv);
+	generate_preamble(arg, fp_h, optc, argv);
 
 	header_id = asn1c_make_identifier(0, expr, NULL);
 	fprintf(fp_h,
@@ -303,7 +302,7 @@
 }
 
 static int
-generate_preamble(arg_t *arg, FILE *fp, int argc, int optc, char **argv) {
+generate_preamble(arg_t *arg, FILE *fp, int optc, char **argv) {
 	fprintf(fp,
 	"/*\n"
 	" * Generated by asn1c-" VERSION " (http://lionet.info/asn1c)\n"
