[C++] 41 FLTK : findコマンド生成アプリ/コンソール版完成

[M1 Mac, Big Sur 11.6.5, FLTK 1.3.8]

findコマンド生成アプリのコンソール版が完成しました。わずか878KBの超軽量ツールです。

仕上げは標準出力のGUIへの反映になりますが、すんなり実装できればありがたいです。

ところで私のコードの書き方は、C/C++界隈ではメジャーらしいK&RスタイルではなくJavaスタイルです。情報密度と可読性を優先しているので、1行1前カッコは禁止がマイルールです。後カッコはブロックの終わりが分かりやすいため、1行表示しています。

void execute_cb(Fl_Widget*, void*){
    stringstream cmd;
    stringstream pre;
    const char* dir;

    onoff_from = from_rbtn->value(); 
    onoff_to = to_rbtn->value();
    onoff_name = name_rbtn->value();
    dir = dir_input->value();

    cmd << "cd " << string(dir) << " && " << "find `pwd` -type file ";

    if (onoff_from == 1){
        const char* from_char = from_input->value();
        string from_str = string(from_char);

        std::cout << "from_str " << from_str << endl;
        string day = from_str.substr(6);
        string month = from_str.substr(4, 2);
        string year = from_str.substr(0, 4);

        int days = GetDays(stoi(year), stoi(month), stoi(day));
        int predays = days - 1;

        std::cout << "days " << days << endl;
        std::cout << "predays " << predays << endl;
        std::cout << day << " " << month << " " << year <<endl;

        preDate = { 0, 0, 0, stoi(day) -1, stoi(month)-1, stoi(year)};
        preDate_t = std::mktime(&preDate);
        preDate2 = localtime(&preDate_t);

        int pre_y = preDate2->tm_year;
        int pre_m = preDate2->tm_mon + 1;
        int pre_d = preDate2->tm_mday;

        std::cout << "pre_y pre_m pre_d " << pre_y << " " << pre_m << " " << pre_d <<endl;

        int day2 = GetDay(pre_y, pre_m, pre_d, predays);

        std::cout << "day2 " << day2 <<endl;

        pre << pre_y;
        pre << setw(2) << setfill('0') << pre_m;
        pre << setw(2) << setfill('0') << day2;
        
        std::cout << pre.str() << endl;
        
        cmd << "-newerct '" << pre.str() << " 23:59' ";
        std::cout << cmd.str() << endl;
    }
    if (onoff_to == 1){
        const char* to_char = to_input->value();
        string to_str = string(to_char);

        cmd << "! -newerct '" << to_str << " 23:59' " ;
        std::cout << cmd.str() << endl;
    }
    if (onoff_name == 1){
        const char* name_char = name_input->value();
        string name_str = string(name_char);

        cmd << "-name '*" << name_str << "*' " ;
    }

    cmd << "! -name '*DS_Store*'" ;
    std::cout << cmd.str() << endl;
    system((cmd.str()).c_str());

    // 件数表示
    cmd << " | wc -l";
    std::cout << cmd.str() << endl;
    system((cmd.str()).c_str());
}