218 {
220
221 unsigned char c;
222
223 char *arg = NULL;
224
225 char *config_name = NULL;
226 char *cache_name = NULL;
227
228 char *from = "in";
229 char *to = "out";
230
231 unsigned char from_forced = 0;
232 unsigned char to_forced = 0;
233
234 char *lfrom = NULL;
235 char *lto = NULL;
236
238
239 int ldetect = 0;
240 int ldetect_all = 0;
241 int ldetect_force = 0;
242
243 unsigned long timeout = 0;
244 char offline = 0;
245
246 int option_index = 0;
247 while ((c = getopt_long(argc, argv, "yhe:f:l:t:", long_options, &option_index)) != (unsigned char)-1) {
248 switch (c) {
249 case 0:
250 break;
253 exit(0);
254 break;
256 config_name = optarg;
257 break;
259 cache_name = optarg;
261 from_forced = 1;
262 from = optarg;
263 break;
265 to_forced = 1;
266 to = optarg;
267 break;
269 efrom = optarg;
270 break;
272 eto = optarg;
273 break;
275 lfrom = optarg;
276
277
278
279
280 if (!ldetect_force) {
281 ldetect = 0;
282 ldetect_force = 1;
283 }
284
285 break;
287 lto = optarg;
288 break;
290 if (!optarg)
292 else if (!strcasecmp(optarg, "full"))
294 else if (!strcasecmp(optarg, "skip_parent"))
296 else if (!strcasecmp(optarg, "skip_related"))
298 else if (!strcasecmp(optarg, "english"))
300 else if (!strcasecmp(optarg, "transliterate"))
302 else if (!strcasecmp(optarg, "off"))
304 else {
305 fprintf(stderr, "*** Unknown translation mode: %s\n\n", optarg);
307 exit(0);
308 }
309
310 if (!ldetect_force) {
311 if (!strcasecmp(optarg, "off"))
312 ldetect = 0;
313 else
314 ldetect = 1;
315 }
316 break;
318 if (!optarg)
320 else if (!strcasecmp(optarg, "off"))
321 cache = 0;
322 else if (!strcasecmp(optarg, "use"))
324 else if (!strcasecmp(optarg, "add"))
326 else if (!strcasecmp(optarg, "replace"))
328 else {
329 fprintf(stderr, "*** Unknown caching mode: %s\n\n", optarg);
331 exit(0);
332 }
333 break;
335 ldetect_force = 1;
336
337 if (!optarg) ldetect = 1;
338 else if (!strcasecmp(optarg, "off")) {
339 ldetect = 0;
340 ldetect_force = 1;
341 } else if (!strcasecmp(optarg, "on")) {
342 ldetect = 1;
343 ldetect_all = 0;
344 ldetect_force = 1;
345 } else if (!strcasecmp(optarg, "all")) {
346 ldetect = 1;
347 ldetect_all = 1;
348 ldetect_force = 1;
349 }
350 break;
352 timeout = atoi(optarg);
353 break;
355 offline = 1;
356 break;
358 process_subdirs = 0;
359 break;
361 ask = 0;
362 break;
363 default:
365 exit(0);
366 }
367 }
368
369 if (optind < argc) {
370 if ((optind + 1) < argc) {
371 fprintf(stderr, "*** Invalid non-option arguments:\n");
372 for (;optind < argc;optind++) {
373 puts(argv[optind]);
374 }
375 fprintf(stderr, "\n\n");
377 exit(0);
378 }
379 arg = argv[optind];
380 }
381
384 if (!from_forced) from = "fs";
385 if (!to_forced) to = "fs";
386 break;
387 default:
388 ;
389 }
390
391 setlocale(LC_ALL, "");
392
393
394
398
400
401 if (config_name)
rccLoad(NULL, config_name);
402
403
405
408
409 if (ldetect) {
411 if (ldetect_all) {
413 }
414 }
415
416
417 if ((lfrom)||(lto)) {
418
420 }
421
422#ifdef RCC_OPTION_OFFLINE
423 if (offline)
425#endif
426
427 if (from) {
431 fprintf(stderr, "*** Invalid source class (%s) specified\n", from);
432 exit(1);
433 }
434 }
435 if (to) {
439 fprintf(stderr, "*** Invalid target class (%s) specified\n", to);
440 exit(1);
441 }
442 }
443
446
447 if (lfrom) {
451 fprintf(stderr, "*** Invalid source language (%s) specified\n", lfrom);
452 exit(1);
453 }
454 } else source_language_id = current_language_id;
455
456 if (lto) {
460 fprintf(stderr, "*** Invalid target language (%s) specified\n", lto);
461 exit(1);
462 }
463 } else target_language_id = current_language_id;
464
465 if (source_language_id == target_language_id) {
466 language_id = source_language_id;
467
468 if (language_id != current_language_id) {
471 fprintf(stderr,
"*** Unable to set the specified language (%s)\n",
rccGetLanguageName(NULL, language_id));
472 exit(1);
473 }
474 } else {
475
477 if (current_language_id != english_language_id) {
478 language_id = english_language_id;
480 }
481
484 fprintf(stderr,
"*** Default language (%s) is not configured\n",
rccGetLanguageName(NULL, current_language_id));
485 exit(1);
486 }
487 }
488 }
489
490 } else {
492
493
496 fprintf(stderr,
"*** Unable to set source language (%s)\n",
rccGetLanguageName(NULL, source_language_id));
497 exit(1);
498 }
501 fprintf(stderr,
"*** Unable to set target language (%s)\n",
rccGetLanguageName(NULL, target_language_id));
502 exit(1);
503 }
504 }
505
509 break;
512 break;
514 fprintf(stderr, "*** Mode (FILE) is not supported in current version\n");
515 break;
517 fprintf(stderr, "*** Mode (FILELIST) is not supported in current version\n");
518 break;
519 }
520
521
523
524 return 0;
525}
@ RCC_OPTION_OFFLINE
Definition librcc.h:468
@ RCC_OPTION_TRANSLATE
Definition librcc.h:466
@ RCC_OPTION_LEARNING_MODE
Definition librcc.h:460
@ RCC_OPTION_AUTODETECT_LANGUAGE
Definition librcc.h:465
@ RCC_OPTION_TIMEOUT
Definition librcc.h:467
@ RCC_OPTION_CONFIGURED_LANGUAGES_ONLY
Definition librcc.h:463
int rccInitDefaultContext(const char *locale_variable, unsigned int max_languages, unsigned int max_classes, rcc_class_ptr defclasses, rcc_init_flags flags)
const char * rccGetCurrentLanguageName(rcc_context ctx)
#define RCC_OPTION_LEARNING_FLAG_LEARN
Definition librcc.h:445
const char * rccGetLanguageName(rcc_context ctx, rcc_language_id language_id)
@ RCC_OPTION_TRANSLATE_TO_ENGLISH
Definition librcc.h:450
@ RCC_OPTION_TRANSLATE_OFF
Definition librcc.h:448
@ RCC_OPTION_TRANSLATE_SKIP_RELATED
Definition librcc.h:451
@ RCC_OPTION_TRANSLATE_FULL
Definition librcc.h:453
@ RCC_OPTION_TRANSLATE_TRANSLITERATE
Definition librcc.h:449
int rccLoad(rcc_context ctx, const char *name)
int rccSetLanguage(rcc_context ctx, rcc_language_id language_id)
int rccSetOption(rcc_context ctx, rcc_option option, rcc_option_value value)
int rccInitDb4(rcc_context ctx, const char *name, rcc_db4_flags flags)
#define RCC_OPTION_LEARNING_FLAG_USE
Definition librcc.h:441
rcc_language_id rccGetCurrentLanguage(rcc_context ctx)
unsigned char rcc_language_id
Definition librcc.h:43
rcc_language_id rccGetLanguageByName(rcc_context ctx, const char *name)
int mode
Definition rcc-recode.c:60
rcc_class_id GetClass(const char *name)
Definition rcc-recode.c:195
#define RCC_OPTION_TRANSLATE_SKIP_PARENT
Definition rcc-recode.c:50
void Usage(int argc, char *argv[])
Definition rcc-recode.c:107
int Stdin(const char *arg)
Definition rcc-recode.c:528