1 /**
2 * @file m_usage.c
3 *
4 * <JA>
5 * @brief �إ�פ�ɽ������
6 * </JA>
7 *
8 * <EN>
9 * @brief Print help.
10 * </EN>
11 *
12 * @author Akinobu Lee
13 * @date Fri May 13 15:04:34 2005
14 *
15 * $Revision: 1.12 $
16 *
17 */
18 /*
19 * Copyright (c) 1991-2007 Kawahara Lab., Kyoto University
20 * Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology
21 * Copyright (c) 2005-2007 Julius project team, Nagoya Institute of Technology
22 * All rights reserved
23 */
24
25 #include <julius/julius.h>
26
27 /**
28 * <JA>
29 * �إ�פ�ɽ������.
30 *
31 * </JA>
32 * <EN>
33 * Output help document.
34 *
35 * </EN>
36 *
37 * @param fp [in] file pointer to output help
38 *
39 * @callgraph
40 * @callergraph
41 * @ingroup engine
42 *
43 */
44 void
j_output_argument_help(FILE * fp)45 j_output_argument_help(FILE *fp)
46 {
47 Jconf *jconf;
48 #ifdef ENABLE_PLUGIN
49 int id;
50 char buf[64];
51 PLUGIN_ENTRY *p;
52 FUNC_VOID func;
53 #endif
54
55 /* load default values */
56 jconf = j_jconf_new();
57
58 j_put_header(fp);
59 j_put_compile_defs(fp);
60 fprintf(fp, "\nOptions:\n");
61
62 fprintf(fp, "\n--- Global Options -----------------------------------------------\n");
63
64 fprintf(fp, "\n Speech Input:\n");
65 fprintf(fp, " (Can extract only MFCC based features from waveform)\n");
66 fprintf(fp, " [-input devname] input source (default = htkparam)\n");
67 fprintf(fp, " htkparam/mfcfile HTK parameter file\n");
68 fprintf(fp, " file/rawfile waveform file (%s)\n", SUPPORTED_WAVEFILE_FORMAT);
69 #ifdef USE_MIC
70 fprintf(fp, " mic default microphone device\n");
71 # ifdef HAS_ALSA
72 fprintf(fp, " alsa use ALSA interface\n");
73 # endif
74 # ifdef HAS_OSS
75 fprintf(fp, " oss use OSS interface\n");
76 # endif
77 # ifdef HAS_ESD
78 fprintf(fp, " esd use ESounD interface\n");
79 # endif
80 #endif
81 #ifdef USE_NETAUDIO
82 fprintf(fp, " netaudio DatLink/NetAudio server\n");
83 #endif
84 fprintf(fp, " adinnet adinnet client (TCP/IP)\n");
85 fprintf(fp, " stdin standard input\n");
86 #ifdef ENABLE_PLUGIN
87 if (global_plugin_list) {
88 if ((id = plugin_get_id("adin_get_optname")) >= 0) {
89 for(p=global_plugin_list[id];p;p=p->next) {
90 func = (FUNC_VOID) p->func;
91 (*func)(buf, (int)64);
92 fprintf(fp, " %-18s(adin plugin #%d)\n", buf, p->source_id);
93 }
94 }
95 if ((id = plugin_get_id("fvin_get_optname")) >= 0) {
96 for(p=global_plugin_list[id];p;p=p->next) {
97 func = (FUNC_VOID) p->func;
98 (*func)(buf, (int)64);
99 fprintf(fp, " %-18s(feature vector input plugin #%d)\n", buf, p->source_id);
100 }
101 }
102 }
103 #endif
104 fprintf(fp, " [-filelist file] filename of input file list\n");
105 #ifdef USE_NETAUDIO
106 fprintf(fp, " [-NA host:unit] get audio from NetAudio server at host:unit\n");
107 #endif
108 fprintf(fp, " [-adport portnum] adinnet port number to listen (%d)\n", jconf->input.adinnet_port);
109 fprintf(fp, " [-48] enable 48kHz sampling with internal down sampler (OFF)\n");
110 fprintf(fp, " [-zmean/-nozmean] enable/disable DC offset removal (OFF)\n");
111 fprintf(fp, " [-nostrip] disable stripping off zero samples\n");
112 fprintf(fp, " [-record dir] record triggered speech data to dir\n");
113 fprintf(fp, " [-rejectshort msec] reject an input shorter than specified\n");
114 #ifdef POWER_REJECT
115 fprintf(fp, " [-powerthres value] rejection threshold of average power (%.1f)\n", jconf->reject.powerthres);
116 #endif
117
118 fprintf(fp, "\n Speech Detection: (default: on=mic/net off=files)\n");
119 /*fprintf(fp, " [-pausesegment] turn on (force) pause detection\n");*/
120 /*fprintf(fp, " [-nopausesegment] turn off (force) pause detection\n");*/
121 fprintf(fp, " [-cutsilence] turn on (force) skipping long silence\n");
122 fprintf(fp, " [-nocutsilence] turn off (force) skipping long silence\n");
123 fprintf(fp, " [-lv unsignedshort] input level threshold (0-32767) (%d)\n", jconf->detect.level_thres);
124 fprintf(fp, " [-zc zerocrossnum] zerocross num threshold per sec. (%d)\n", jconf->detect.zero_cross_num);
125 fprintf(fp, " [-headmargin msec] header margin length in msec. (%d)\n", jconf->detect.head_margin_msec);
126 fprintf(fp, " [-tailmargin msec] tail margin length in msec. (%d)\n", jconf->detect.tail_margin_msec);
127
128 fprintf(fp, "\n GMM utterance verification:\n");
129 fprintf(fp, " -gmm filename GMM definition file\n");
130 fprintf(fp, " -gmmnum num GMM Gaussian pruning num (%d)\n", jconf->reject.gmm_gprune_num);
131 fprintf(fp, " -gmmreject string comma-separated list of noise model name to reject\n");
132 #ifdef GMM_VAD
133 fprintf(fp, "\n GMM-based VAD:\n");
134 fprintf(fp, " -gmmmargin frames backstep margin on speech trigger (%d)\n", jconf->detect.gmm_margin);
135 fprintf(fp, " -gmmup score up-trigger threshold (%.1f)\n", jconf->detect.gmm_uptrigger_thres);
136 fprintf(fp, " -gmmdown score down-trigger threshold (%.1f)\n", jconf->detect.gmm_downtrigger_thres);
137 #endif
138
139 fprintf(fp, "\n On-the-fly Decoding: (default: on=mic/net off=files)\n");
140 fprintf(fp, " [-realtime] turn on, input streamed with MAP-CMN\n");
141 fprintf(fp, " [-norealtime] turn off, input buffered with sentence CMN\n");
142
143 fprintf(fp, "\n Others:\n");
144 fprintf(fp, " [-C jconffile] load options from jconf file\n");
145 fprintf(fp, " [-quiet] reduce output to only word string\n");
146 fprintf(fp, " [-demo] equal to \"-quiet -progout\"\n");
147 fprintf(fp, " [-debug] (for debug) dump numerous log\n");
148 fprintf(fp, " [-callbackdebug] (for debug) output message per callback\n");
149 fprintf(fp, " [-check (wchmm|trellis)] (for debug) check internal structure\n");
150 fprintf(fp, " [-check triphone] triphone mapping check\n");
151 fprintf(fp, " [-setting] print engine configuration and exit\n");
152 fprintf(fp, " [-help] print this message and exit\n");
153
154 fprintf(fp, "\n--- Instance Declarations ----------------------------------------\n\n");
155
156 fprintf(fp, " [-AM] start a new acoustic model instance\n");
157 fprintf(fp, " [-LM] start a new language model instance\n");
158 fprintf(fp, " [-SR] start a new recognizer (search) instance\n");
159 fprintf(fp, " [-AM_GMM] start an AM feature instance for GMM\n");
160 fprintf(fp, " [-GLOBAL] start a global section\n");
161 fprintf(fp, " [-nosectioncheck] disable option location check\n");
162 fprintf(fp, "\n--- Acoustic Model Options (-AM) ---------------------------------\n");
163
164 fprintf(fp, "\n Acoustic analysis:\n");
165 fprintf(fp, " [-htkconf file] load parameters from the HTK Config file\n");
166 fprintf(fp, " [-smpFreq freq] sample period (Hz) (%ld)\n", jconf->am_root->analysis.para_default.smp_freq);
167 fprintf(fp, " [-smpPeriod period] sample period (100ns) (%ld)\n", jconf->am_root->analysis.para_default.smp_period);
168 fprintf(fp, " [-fsize sample] window size (sample) (%d)\n", jconf->am_root->analysis.para_default.framesize);
169 fprintf(fp, " [-fshift sample] frame shift (sample) (%d)\n", jconf->am_root->analysis.para_default.frameshift);
170 fprintf(fp, " [-preemph] pre-emphasis coef. (%.2f)\n", jconf->am_root->analysis.para_default.preEmph);
171 fprintf(fp, " [-fbank] number of filterbank channels (%d)\n", jconf->am_root->analysis.para_default.fbank_num);
172 fprintf(fp, " [-ceplif] cepstral liftering coef. (%d)\n", jconf->am_root->analysis.para_default.lifter);
173 fprintf(fp, " [-rawe] [-norawe] toggle using raw energy (no)\n");
174 fprintf(fp, " [-enormal] [-noenormal] toggle normalizing log energy (no)\n");
175 fprintf(fp, " [-escale] scaling log energy for enormal (%.1f)\n", jconf->am_root->analysis.para_default.escale);
176 fprintf(fp, " [-silfloor] energy silence floor in dB (%.1f)\n", jconf->am_root->analysis.para_default.silFloor);
177 fprintf(fp, " [-delwin frame] delta windows length (frame) (%d)\n", jconf->am_root->analysis.para_default.delWin);
178 fprintf(fp, " [-accwin frame] accel windows length (frame) (%d)\n", jconf->am_root->analysis.para_default.accWin);
179 fprintf(fp, " [-hifreq freq] freq. of upper band limit, off if <0 (%d)\n", jconf->am_root->analysis.para_default.hipass);
180 fprintf(fp, " [-lofreq freq] freq. of lower band limit, off if <0 (%d)\n", jconf->am_root->analysis.para_default.lopass);
181 fprintf(fp, " [-sscalc] do spectral subtraction (file input only)\n");
182 fprintf(fp, " [-sscalclen msec] length of head silence for SS (msec) (%d)\n", jconf->am_root->frontend.sscalc_len);
183 fprintf(fp, " [-ssload filename] load constant noise spectrum from file for SS\n");
184 fprintf(fp, " [-ssalpha value] alpha coef. for SS (%f)\n", jconf->am_root->frontend.ss_alpha);
185 fprintf(fp, " [-ssfloor value] spectral floor for SS (%f)\n", jconf->am_root->frontend.ss_floor);
186 fprintf(fp, " [-zmeanframe/-nozmeanframe] frame-wise DC removal like HTK(OFF)\n");
187 fprintf(fp, " [-usepower/-nousepower] use power in fbank analysis (OFF)\n");
188 fprintf(fp, " [-cmnload file] load initial CMN param from file on startup\n");
189 fprintf(fp, " [-cmnsave file] save CMN param to file after each input\n");
190 fprintf(fp, " [-cmnnoupdate] not update CMN param while recog. (use with -cmnload)\n");
191 fprintf(fp, " [-cmnmapweight] weight value of initial cm for MAP-CMN (%6.2f)\n", jconf->am_root->analysis.cmn_map_weight);
192 fprintf(fp, " [-cvn] cepstral variance normalisation (%s)\n", jconf->amnow->analysis.para.cvn ? "on" : "off");
193 fprintf(fp, " [-vtln alpha lowcut hicut] enable VTLN (1.0 to disable) (%f)\n", jconf->am_root->analysis.para_default.vtln_alpha);
194
195 fprintf(fp, "\n Acoustic Model:\n");
196 fprintf(fp, " -h hmmdefsfile HMM definition file name\n");
197 fprintf(fp, " [-hlist HMMlistfile] HMMlist filename (must for triphone model)\n");
198 fprintf(fp, " [-iwcd1 methodname] switch IWCD triphone handling on 1st pass\n");
199 fprintf(fp, " best N use N best score (default of n-gram, N=%d)\n", jconf->am_root->iwcdmaxn);
200 fprintf(fp, " max use maximum score\n");
201 fprintf(fp, " avg use average score (default of dfa)\n");
202 fprintf(fp, " [-force_ccd] force to handle IWCD\n");
203 fprintf(fp, " [-no_ccd] don't handle IWCD\n");
204 fprintf(fp, " [-notypecheck] don't check input parameter type\n");
205 fprintf(fp, " [-spmodel HMMname] name of short pause model (\"%s\")\n", SPMODEL_NAME_DEFAULT);
206 fprintf(fp, " [-multipath] switch decoding for multi-path HMM (auto)\n");
207
208 fprintf(fp, "\n Acoustic Model Computation Method:\n");
209 fprintf(fp, " [-gprune methodname] select Gaussian pruning method:\n");
210 #ifdef GPRUNE_DEFAULT_SAFE
211 fprintf(fp, " safe safe pruning (default for TM/PTM)\n");
212 #else
213 fprintf(fp, " safe safe pruning\n");
214 #endif
215 #if GPRUNE_DEFAULT_HEURISTIC
216 fprintf(fp, " heuristic heuristic pruning (default for TM/PTM)\n");
217 #else
218 fprintf(fp, " heuristic heuristic pruning\n");
219 #endif
220 #if GPRUNE_DEFAULT_BEAM
221 fprintf(fp, " beam beam pruning (default for TM/PTM)\n");
222 #else
223 fprintf(fp, " beam beam pruning\n");
224 #endif
225 fprintf(fp, " none no pruning (default for non tmix models)\n");
226 #ifdef ENABLE_PLUGIN
227 if (global_plugin_list) {
228 if ((id = plugin_get_id("calcmix_get_optname")) >= 0) {
229 for(p=global_plugin_list[id];p;p=p->next) {
230 func = (FUNC_VOID) p->func;
231 (*func)(buf, (int)64);
232 fprintf(fp, " %-14s(calculation plugin #%d)\n", buf, p->source_id);
233 }
234 }
235 }
236 #endif
237 fprintf(fp, " [-tmix gaussnum] Gaussian num threshold per mixture for pruning (%d)\n", jconf->am_root->mixnum_thres);
238 fprintf(fp, " [-gshmm hmmdefs] monophone hmmdefs for GS\n");
239 fprintf(fp, " [-gsnum N] N-best state will be selected (%d)\n", jconf->am_root->gs_statenum);
240
241 fprintf(fp, "\n--- Language Model Options (-LM) ---------------------------------\n");
242
243 fprintf(fp, "\n N-gram:\n");
244 fprintf(fp, " -d file.bingram n-gram file in Julius binary format\n");
245 fprintf(fp, " -nlr file.arpa forward n-gram file in ARPA format\n");
246 fprintf(fp, " -nrl file.arpa backward n-gram file in ARPA format\n");
247 fprintf(fp, " [-lmp float float] weight and penalty (tri: %.1f %.1f mono: %.1f %1.f)\n", DEFAULT_LM_WEIGHT_TRI_PASS1, DEFAULT_LM_PENALTY_TRI_PASS1, DEFAULT_LM_WEIGHT_MONO_PASS1, DEFAULT_LM_PENALTY_MONO_PASS1);
248 fprintf(fp, " [-lmp2 float float] for 2nd pass (tri: %.1f %.1f mono: %.1f %1.f)\n", DEFAULT_LM_WEIGHT_TRI_PASS2, DEFAULT_LM_PENALTY_TRI_PASS2, DEFAULT_LM_WEIGHT_MONO_PASS2, DEFAULT_LM_PENALTY_MONO_PASS2);
249 fprintf(fp, " [-transp float] penalty for transparent word (%+2.1f)\n", jconf->search_root->lmp.lm_penalty_trans);
250
251 fprintf(fp, "\n DFA Grammar:\n");
252 fprintf(fp, " -dfa file.dfa DFA grammar file\n");
253 fprintf(fp, " -gram file[,file2...] (list of) grammar prefix(es)\n");
254 fprintf(fp, " -gramlist filename filename of grammar list\n");
255 fprintf(fp, " [-penalty1 float] word insertion penalty (1st pass) (%.1f)\n", jconf->search_root->lmp.penalty1);
256 fprintf(fp, " [-penalty2 float] word insertion penalty (2nd pass) (%.1f)\n", jconf->search_root->lmp.penalty2);
257
258 fprintf(fp, "\n Word Dictionary for N-gram and DFA:\n");
259 fprintf(fp, " -v dictfile dictionary file name\n");
260 fprintf(fp, " [-silhead wordname] (n-gram) beginning-of-sentence word (%s)\n", BEGIN_WORD_DEFAULT);
261 fprintf(fp, " [-siltail wordname] (n-gram) end-of-sentence word (%s)\n", END_WORD_DEFAULT);
262 fprintf(fp, " [-mapunk wordname] (n-gram) map unknown words to this (%s)\n", UNK_WORD_DEFAULT);
263 fprintf(fp, " [-forcedict] ignore error entry and keep running\n");
264 fprintf(fp, " [-iwspword] (n-gram) add short-pause word for inter-word CD sp\n");
265 fprintf(fp, " [-iwspentry entry] (n-gram) word entry for \"-iwspword\" (%s)\n", IWSPENTRY_DEFAULT);
266
267 fprintf(fp, "\n Isolated Word Recognition:\n");
268 fprintf(fp, " -w file[,file2...] (list of) wordlist file name(s)\n");
269 fprintf(fp, " -wlist filename file that contains list of wordlists\n");
270 fprintf(fp, " -wsil head tail sp name of silence/pause model\n");
271 fprintf(fp, " head - BOS silence model name (%s)\n", jconf->lm_root->wordrecog_head_silence_model_name);
272 fprintf(fp, " tail - EOS silence model name (%s)\n", jconf->lm_root->wordrecog_tail_silence_model_name);
273 fprintf(fp, " sp - their name as context or \"NULL\" (%s)\n", (jconf->lm_root->wordrecog_silence_context_name[0] == '\0') ? "NULL" : jconf->lm_root->wordrecog_silence_context_name);
274 #ifdef DETERMINE
275 fprintf(fp, " -wed float int thresholds for early word determination\n");
276 fprintf(fp, " float: score threshold (%.1f)\n", jconf->search_root->pass1.determine_score_thres);
277 fprintf(fp, " int: frame duration thres (%d)\n", jconf->search_root->pass1.determine_duration_thres);
278 #endif
279
280 fprintf(fp, "\n--- Recognizer / Search Options (-SR) ----------------------------\n");
281
282
283 fprintf(fp, "\n Search Parameters for the First Pass:\n");
284 fprintf(fp, " [-b beamwidth] beam width (by state num) (guessed)\n");
285 fprintf(fp, " (0: full search, -1: force guess)\n");
286 #ifdef WPAIR
287 # ifdef WPAIR_KEEP_NLIMIT
288 fprintf(fp, " [-nlimit N] keeps only N tokens on each state (%d)\n", jconf->search_root->pass1.wpair_keep_nlimit);
289 # endif
290 #endif
291 #ifdef SEPARATE_BY_UNIGRAM
292 fprintf(fp, " [-sepnum wordnum] (n-gram) # of hi-freq word isolated from tree (%d)\n", jconf->lm_root->separate_wnum);
293 #endif
294 #ifdef HASH_CACHE_IW
295 fprintf(fp, " [-iwcache percent] (n-gram) amount of inter-word LM cache (%3d)\n", jconf->search_root->pass1.iw_cache_rate);
296 #endif
297 fprintf(fp, " [-1pass] do 1st pass only, omit 2nd pass\n");
298 fprintf(fp, " [-inactive] recognition process not active on startup\n");
299
300 fprintf(fp, "\n Search Parameters for the Second Pass:\n");
301 fprintf(fp, " [-b2 hyponum] word envelope beam width (by hypo num) (%d)\n",jconf->search_root->pass2.enveloped_bestfirst_width);
302 fprintf(fp, " [-n N] # of sentence to find (%d)\n", jconf->search_root->pass2.nbest);
303 fprintf(fp, " [-output N] # of sentence to output (%d)\n",jconf->search_root->output.output_hypo_maxnum);
304 #ifdef SCAN_BEAM
305 fprintf(fp, " [-sb score] score beam threshold (by score) (%.1f)\n", jconf->search_root->pass2.scan_beam_thres);
306 #endif
307 fprintf(fp, " [-s hyponum] global stack size of hypotheses (%d)\n", jconf->search_root->pass2.stack_size);
308 fprintf(fp, " [-m hyponum] hypotheses overflow threshold num (%d)\n", jconf->search_root->pass2.hypo_overflow);
309
310 fprintf(fp, " [-lookuprange N] frame lookup range in word expansion (%d)\n", jconf->search_root->pass2.lookup_range);
311 fprintf(fp, " [-looktrellis] (dfa) expand only backtrellis words\n");
312 fprintf(fp, " [-[no]multigramout] (dfa) output per-grammar results\n");
313 fprintf(fp, " [-oldtree] (dfa) use old build_wchmm()\n");
314 #ifdef PASS1_IWCD
315 fprintf(fp, " [-oldiwcd] (dfa) use full lcdset\n");
316 #endif
317 fprintf(fp, " [-iwsp] insert sp for all word end (multipath)(off)\n");
318 fprintf(fp, " [-iwsppenalty] trans. penalty for iwsp (multipath) (%.1f)\n", jconf->am_root->iwsp_penalty);
319
320 fprintf(fp, "\n Short-pause Segmentation:\n");
321 fprintf(fp, " [-spsegment] enable short-pause segmentation\n");
322 fprintf(fp, " [-spdur] length threshold of sp frames (%d)\n", jconf->search_root->successive.sp_frame_duration);
323 #ifdef SPSEGMENT_NAIST
324 fprintf(fp, " [-spmargin] backstep margin on speech trigger (%d)\n", jconf->search_root->successive.sp_margin);
325 fprintf(fp, " [-spdelay] delay on speech trigger (%d)\n", jconf->search_root->successive.sp_delay);
326 #endif
327 fprintf(fp, " [-pausemodels str] comma-delimited list of pause models for segment\n");
328
329 fprintf(fp, "\n Graph Output with graph-oriented search:\n");
330 fprintf(fp, " [-lattice] enable word graph (lattice) output\n");
331 fprintf(fp, " [-confnet] enable confusion network output\n");
332 fprintf(fp, " [-nolattice]][-noconfnet] disable lattice / confnet output\n");
333 fprintf(fp, " [-graphrange N] merge same words in graph (%d)\n", jconf->search_root->graph.graph_merge_neighbor_range);
334 fprintf(fp, " -1: not merge, leave same loc. with diff. score\n");
335 fprintf(fp, " 0: merge same words at same location\n");
336 fprintf(fp, " >0: merge same words around the margin\n");
337 #ifdef GRAPHOUT_DEPTHCUT
338 fprintf(fp, " [-graphcut num] graph cut depth at postprocess (-1: disable)(%d)\n", jconf->search_root->graph.graphout_cut_depth);
339 #endif
340 #ifdef GRAPHOUT_LIMIT_BOUNDARY_LOOP
341 fprintf(fp, " [-graphboundloop num] max. num of boundary adjustment loop (%d)\n", jconf->search_root->graph.graphout_limit_boundary_loop_num);
342 #endif
343 #ifdef GRAPHOUT_SEARCH_DELAY_TERMINATION
344 fprintf(fp, " [-graphsearchdelay] inhibit search termination until 1st sent. found\n");
345 fprintf(fp, " [-nographsearchdelay] disable it (default)\n");
346 #endif
347
348 fprintf(fp, "\n Forced Alignment:\n");
349 fprintf(fp, " [-walign] optionally output word alignments\n");
350 fprintf(fp, " [-palign] optionally output phoneme alignments\n");
351 fprintf(fp, " [-salign] optionally output state alignments\n");
352 #ifdef CONFIDENCE_MEASURE
353 fprintf(fp, "\n Confidence Score:\n");
354 #ifdef CM_MULTIPLE_ALPHA
355 fprintf(fp, " [-cmalpha f t s] CM smoothing factor (from, to, step)\n");
356 #else
357 fprintf(fp, " [-cmalpha value] CM smoothing factor (%f)\n", jconf->search_root->annotate.cm_alpha);
358 #endif
359 #ifdef CM_SEARCH_LIMIT
360 fprintf(fp, " [-cmthres value] CM threshold to cut hypo on 2nd pass (%f)\n", jconf->search_root->annotate.cm_cut_thres);
361 #endif
362 #endif /* CONFIDENCE_MEASURE */
363 fprintf(fp, "\n Message Output:\n");
364 fprintf(fp, " [-fallback1pass] use 1st pass result when search failed\n");
365 fprintf(fp, " [-progout] progressive output in 1st pass\n");
366 fprintf(fp, " [-proginterval] interval of progout in msec (%d)\n", jconf->search_root->output.progout_interval);
367
368 fprintf(fp, "\n-------------------------------------------------\n");
369
370 j_jconf_free(jconf);
371
372 /* output application-side options */
373 useropt_show_desc(fp);
374
375 }
376
377 /* end of file */
378