- exit(1);
- }
- } else if( !strcmp(argv[i], "--convert") ) {
- if( argc < 5 || argc > 6 ) {
- fprintf(stderr, "incorrect number of argumets to make conversion\n");
- fprintf(stderr, "try %s --help\n", argv[0]);
- exit(1);
- }
- if( argc > i + 4 )
- convert(argv[i+1], argv[i+2],
- argv[i+3], argv[i+4]);
- else
- convert(argv[i+1], argv[i+2], argv[i+3], "-");
- } else if( !strcmp(argv[i], "--add-email") ) {
+ exit(EXIT_SUCCESS);
+ case OPT_ADD_EMAIL:
+ change_mode(&mode, MODE_ADD_EMAIL);
+ break;
+ case OPT_ADD_EMAIL_QUIET:
+ change_mode(&mode, MODE_ADD_EMAIL_QUIET);
+ break;
+ case 'f':
+ set_filename(&datafile, optarg);
+ alternative_datafile = TRUE;
+ break;
+ case OPT_MUTT_QUERY:
+ query_string = optarg;
+ change_mode(&mode, MODE_QUERY);
+ break;
+ case 'C':
+ set_filename(&rcfile, optarg);
+ alternative_rcfile = TRUE;
+ break;
+ case OPT_CONVERT:
+ change_mode(&mode, MODE_CONVERT);
+ break;
+ case OPT_INFORMAT:
+ set_convert_var(informat);
+ break;
+ case OPT_OUTFORMAT:
+ if(mode != MODE_CONVERT && mode != MODE_QUERY) {
+ fprintf(stderr,
+ _("please use option --outformat after --convert or --mutt-query option\n"));
+ exit(EXIT_FAILURE);
+ }
+ // ascii-name is stored, it's used to traverse
+ // e_filters[] in MODE_CONVERT (see export_file())
+ outformat = optarg;
+ // but in case a query-compatible filter is requested
+ // try to guess right now which one it is, from u_filters[]
+ selected_item_filter = select_output_item_filter(outformat);
+ break;
+ case OPT_OUTFORMAT_STR:
+ strncpy(custom_format, optarg, FORMAT_STRING_LEN);
+ custom_format[FORMAT_STRING_LEN - 1] = 0;
+ break;
+ case OPT_INFILE:
+ set_convert_var(infile);
+ break;
+ case OPT_OUTFILE:
+ set_convert_var(outfile);
+ break;
+ case OPT_FORMATS:
+ print_filters();
+ exit(EXIT_SUCCESS);
+ default:
+ exit(EXIT_FAILURE);
+ }
+ }
+
+ // if the output format requested does not allow filtered querying
+ // (not in u_filter[]) and --convert has not been specified; bailout
+ if(! selected_item_filter.func && mode != MODE_CONVERT) {
+ printf("output format %s not supported or incompatible with --mutt-query\n", outformat);
+ exit(EXIT_FAILURE);
+ }
+ if(! selected_item_filter.func)
+ selected_item_filter = select_output_item_filter("muttq");
+ else if (! strcmp(outformat, "custom")) {
+ if(! *custom_format) {
+ fprintf(stderr, _("Invalid custom format string\n"));
+ exit(EXIT_FAILURE);
+ }
+ parsed_custom_format = (char *)malloc(FORMAT_STRING_LEN * sizeof(char*));
+ custom_format_fields = (enum field_types *)malloc(FORMAT_STRING_MAX_FIELDS * sizeof(enum field_types *));
+ parse_custom_format(custom_format, parsed_custom_format, custom_format_fields);
+ }
+ if(optind < argc) {
+ fprintf(stderr, _("%s: unrecognized arguments on command line\n"),
+ argv[0]);
+ exit(EXIT_FAILURE);
+ }
+
+ switch(mode) {
+ case MODE_ADD_EMAIL: