41 std::string usage =
"Converts FST and container types.\n\n Usage: ";
43 usage +=
" [in.far [out.far]]\n";
45 SET_FLAGS(usage.c_str(), &argc, &argv,
true);
56 const std::string in_name =
57 argc > 1 && std::strcmp(argv[1],
"-") != 0 ? argv[1] :
"";
58 const std::string out_name =
59 argc > 2 && std::strcmp(argv[2],
"-") != 0 ? argv[2] :
"";
63 LOG(ERROR) <<
"Unknown --far_type " << FST_FLAGS_far_type;
67 std::unique_ptr<FarReaderClass> reader(FarReaderClass::Open(in_name));
68 if (!reader)
return 1;
74 const auto arc_type = reader->ArcType();
75 if (arc_type.empty())
return 1;
77 std::unique_ptr<FarWriterClass> writer(
79 if (!writer)
return 1;
82 s::Convert(*reader, *writer, FST_FLAGS_fst_type);
84 if (reader->Error()) {
85 FSTERROR() <<
"Error reading FAR: " << in_name;
88 if (writer->Error()) {
89 FSTERROR() <<
"Error writing FAR: " << out_name;
void ShowUsage(bool long_usage=true)
int farconvert_main(int argc, char **argv)
void ExpandArgs(int argc, char **argv, int *argcp, char ***argvp)
#define SET_FLAGS(usage, argc, argv, rmflags)
bool GetFarType(std::string_view str, FarType *far_type)
void Create(const std::vector< std::string > &sources, FarWriterClass &writer, const int32_t generate_keys, const std::string &key_prefix, const std::string &key_suffix)
void Convert(FarReaderClass &reader, FarWriterClass &writer, std::string_view fst_type)