*** empty log message ***
[h316.git] / pc-tools / ldc2 / src / config.cpp
index a3f14ff8f386812a76e0cd533022a03577a2a331..1a10ac7722e6b860c4ac223ffe30aeee39da7a31 100644 (file)
@@ -26,19 +26,21 @@ int cfg_output_info=0;
 int cfg_output_called=0;
 int cfg_output_exported=0;
 int cfg_output_unsatisfied=0;
-int cfg_splitobjects=0;
-int cfg_splitobjects_numbered=0;
-int cfg_ignoreblock_errors=0;
-int cfg_ignorechecksum_errors=0;
+int cfg_split_objects=0;
+int cfg_split_objects_numbered=0;
+int cfg_ignore_block_errors=0;
+int cfg_ignore_checksum_errors=0;
 int cfg_pause_on_checksum_error=0;
 int cfg_ignore_unknown_block_errors=0;
 int cfg_ignore_object_integrity_errors=0;
 int cfg_list_contents=1;
 int cfg_verbose=0;
+int cfg_quiet=0;
 
-int in_fd=0;  //! File descriptor for data input 
-int out_fd=1; //! File descriptor for text output
+int cfg_version=0;
 
+int in_fd=0;  //! File descriptor for data input 
+int out_fd=2; //! File descriptor for text output
 
 void do_config(int argc, char ** args){
 
@@ -68,19 +70,19 @@ void do_config(int argc, char ** args){
 
   ar.add_option_switch("S","split_objects_numbered",
                       "Split input data into distinct numbered files",
-                      &cfg_splitobjects_numbered,true,true);
+                      &cfg_split_objects_numbered,true,true);
 
   ar.add_option_switch("s","split_objects",
                       "Split input data into distinct object files.",
-                      &cfg_splitobjects,true,true);
+                      &cfg_split_objects,true,true);
   
   ar.add_option_switch("b","ignore_block_errors",
                       "Ignore block integrity errors. This will output broken blocks,too",
-                      &cfg_ignoreblock_errors,true,true);
+                      &cfg_ignore_block_errors,true,true);
 
   ar.add_option_switch("k","ignore_checksum_errors",
                       "Ignore block checksum errors. Errors will be converted to warnings.",
-                      &cfg_ignorechecksum_errors,true,true);
+                      &cfg_ignore_checksum_errors,true,true);
 
   ar.add_option_switch("p","pause_on_checksum_error",
                       "Wait for user input on checksum error.",
@@ -96,8 +98,16 @@ Errors will be converted to warnings.",
                       &cfg_ignore_object_integrity_errors,true,true);
 
   ar.add_option_switch("v","verbose",
-                      "Be a bit more verbose.",
+                      "Be a bit more verbose. This overrides -q.",
                       &cfg_verbose,true,true);
+
+  ar.add_option_switch("q","quiet",
+                      "Be quiet. All warning messages are suppressed.",
+                      &cfg_quiet,true,true);
+
+  ar.add_option_switch("V","version",
+                      "Output version information and exit.",
+                      &cfg_version,false,true);
   
   ar.add_option_value("i","in_file",
                      "specify input file",
@@ -126,62 +136,72 @@ Errors will be converted to warnings.",
   // If there's a config file mentioned in the environment, take it!
   char * env_ldc_config=getenv("LDC_CONFIG");
   if(env_ldc_config){
-    fprintf(stderr,"Using config file: \"%s\"\n",env_ldc_config);
-    if(dump_vector_err(ar.read_file(env_ldc_config))){
-      dump_vector_err(ar.get_help());
+    if (cfg_verbose) fprintf(stderr,"Using config file: \"%s\"\n",env_ldc_config);
+    if(dump_vector_fp(ar.read_file(env_ldc_config),stderr)){
+      dump_vector_fp(ar.get_help(),stderr);
       exit(1);
     }
   }
 
   // Process command line first time
-  if(dump_vector_err(ar.read_args(argc,args))){
-    dump_vector_err(ar.get_help());
+  if(dump_vector_fp(ar.read_args(argc,args),stderr)){
+    dump_vector_fp(ar.get_help(),stderr);
     exit(7);
   }
   
   if (cfg_do_help) {
-    dump_vector_err(ar.get_help());
+    dump_vector_fp(ar.get_help(),stderr);
     exit(0);
   }
 
   // If user has a config file, use it.
   if (cfg_config_file_set){
-    fprintf(stderr,"Using config file: \"%s\"\n",cfg_config_file.c_str());
-    if(dump_vector_err(ar.read_file(cfg_config_file))){
-      dump_vector_err(ar.get_help());
+    if (cfg_verbose) 
+      fprintf(stderr,"Using config file: \"%s\"\n",cfg_config_file.c_str());
+    if(dump_vector_fp(ar.read_file(cfg_config_file),stderr)){
+      dump_vector_fp(ar.get_help(),stderr);
       exit(7);
     }
 
     // Process command line a second time to override values from config file.
-    if(dump_vector_err(ar.read_args(argc,args))||cfg_do_help){
-      dump_vector_err(ar.get_help());
+    if(dump_vector_fp(ar.read_args(argc,args),stderr)||cfg_do_help){
+      dump_vector_fp(ar.get_help(),stderr);
       exit(7);
     }
   }
 
   if (cfg_infile_set==1){
-    fprintf(stderr,"Opening file for input: \"%s\"\n",cfg_infile.c_str());
+    if (cfg_verbose) 
+      fprintf(stderr,"Opening file for input: \"%s\"\n",cfg_infile.c_str());
     in_fd=open(cfg_infile.c_str(),O_RDONLY);
     if (in_fd<0){
-      fprintf(stderr,"Error: could not open file \"%s\" for reading!\n",cfg_infile.c_str());
+      fprintf(stderr,"Error: could not open file \"%s\" for reading!\n",
+             cfg_infile.c_str());
       exit (1);
     }
   }
   
   if (cfg_outfile_set==1){
-    fprintf(stderr,"Opening file for output: \"%s\"\n",cfg_outfile.c_str());
-    out_fd=open(cfg_outfile.c_str(),O_WRONLY|O_TRUNC);
+    if (cfg_verbose) 
+      fprintf(stderr,"Opening file for output: \"%s\"\n",cfg_outfile.c_str());
+    out_fd=open(cfg_outfile.c_str(),O_CREAT|O_WRONLY|O_TRUNC,0666);
     if (out_fd<0){
-      fprintf(stderr,"Error: could not open file \"%s\" for writing!\n",cfg_outfile.c_str());
+      fprintf(stderr,"Error: could not open file \"%s\" for writing!\n",
+             cfg_outfile.c_str());
       exit (1);
     }
   }
   
+  // Verbose overrides quiet:
+  if (cfg_verbose)cfg_quiet=0;
+
   // The configuration implications according to /cfg007/
   if (in_fd==0) cfg_pause_on_checksum_error=0;
-  if (cfg_pause_on_checksum_error==1) cfg_ignorechecksum_errors=1;
+  if (cfg_pause_on_checksum_error==1) cfg_ignore_checksum_errors=1;
 
-  if (cfg_output_info||cfg_output_called||cfg_output_exported||cfg_output_unsatisfied)
+  if (cfg_output_info||cfg_output_called||cfg_output_exported||
+      cfg_output_unsatisfied||
+      cfg_split_objects||cfg_split_objects_numbered)
     cfg_list_contents=0;
 }