[M1 Mac, Big Sur 11.6.8, clang 13.0.0, FLTK 1.3.8, NO IDE]
前回の続きです。
SFTP補助アプリですが、ファイル名に日本語が含まれる場合はクリップボードへコピーされないことが判明しました。毎度ながら実行ファイルでは問題なく、appファイルでおかしくなります。
解決方法はpbcopyの際のロケール設定です。日本語を全く受け付けないのではなく、文字化けでも構わないのでコピーして欲しかったです。解決の手掛かりになりますので。
AppleScriptで同じトラブルに見舞われた方のブログ記事を参考にしました。まさかpbcopyに変なクセがあるとは思いもよりませんでした。
void cmd_cb(Fl_Widget*, void*) {
string cmd0;
string cmd1;
string cmd;
int onoff_put = put_rbtn->value();
int onoff_dir = dir_rbtn->value();
if (onoff_put == 1){
cmd0 = "put";
} else {
cmd0 = "get";
}
if (onoff_dir == 1){
cmd1 = "-r";
} else {
cmd1 = "";
}
const char* fileName = file_input -> value();
const char* toName = to_input -> value();
cmd = cmd0 + " " + cmd1 + " \"" + string(fileName) + "\" " + string(toName);
cout << "cmd " << cmd << endl;
cmd_input -> value("");
cmd_input -> value(cmd.c_str());
string cmdCopy = "echo '" + cmd + "' | LANG=ja_JP.UTF-8 pbcopy"; // 対応箇所
output_line -> insert(cmdCopy.c_str());
output_line -> insert("\n");
system(cmdCopy.c_str());
}