diff options
| author | maxim nikonov <maxim.nikonov@hqo.co> | 2026-02-06 02:33:41 +0500 |
|---|---|---|
| committer | maxim nikonov <maxim.nikonov@hqo.co> | 2026-02-06 02:33:41 +0500 |
| commit | 43e0a37906afabb0b3b091b8d3eac9a910cae50c (patch) | |
| tree | d2a037c2bf0dc395fddb08e32ebfcf2795503b7c /fluid/proj/mergeback.cxx | |
| parent | 4ce4967c33d56e4b56d85d11fe0e0be91e159f5d (diff) | |
wip
Diffstat (limited to 'fluid/proj/mergeback.cxx')
| -rw-r--r-- | fluid/proj/mergeback.cxx | 42 |
1 files changed, 27 insertions, 15 deletions
diff --git a/fluid/proj/mergeback.cxx b/fluid/proj/mergeback.cxx index 016732795..d19893042 100644 --- a/fluid/proj/mergeback.cxx +++ b/fluid/proj/mergeback.cxx @@ -114,7 +114,7 @@ int merge_back(Project &proj, const std::string &s, const std::string &p, Mergeb /** Allocate and initialize MergeBack class. */ Mergeback::Mergeback(Project &proj) : proj_(proj), - code(nullptr), + code(0), line_no(0), tag_error(0), num_changed_code(0), @@ -227,7 +227,7 @@ int Mergeback::ask_user_to_merge(const std::string &code_filename, const std::st msg += "\n\nClick Cancel to abort the MergeBack operation.\n" "Click Merge to merge all code changes back into\n" "the open project."; - int c = fl_choice(msg.c_str(), "Cancel", "Merge", nullptr, + int c = fl_choice(msg.c_str(), "Cancel", "Merge", 0, code_filename.c_str(), proj_filename.c_str(), num_changed_code, num_uid_not_found, num_changed_structure, num_possible_override); @@ -324,12 +324,12 @@ void Mergeback::print_trichar32(FILE *out, uint32_t value) { /** Check if a line contains the special MergeBack tag \param[in] line A line of NUL terminated text. - \return a pointer to the character after the tag, or nullptr if not found + \return a pointer to the character after the tag, or 0 if not found */ const char *Mergeback::find_mergeback_tag(const char *line) { const char *tag = strstr(line, "//fl "); if (tag) return tag + strlen("//fl "); - return nullptr; + return 0; } /** @@ -601,7 +601,7 @@ int Mergeback::merge_back(const std::string &s, const std::string &p, Task task) } } while (0); fclose(code); - code = nullptr; + code = 0; return ret; } @@ -639,8 +639,17 @@ int mergeback_code_files(Project &proj, Mergeback::Feedback feedback) return 0; } - std::string proj_filename = proj.projectfile_path() + proj.projectfile_name(); - std::string code_filename; + char proj_filename[FL_PATH_MAX]; + char code_filename[FL_PATH_MAX]; + char path_buf[FL_PATH_MAX]; + char name_buf[FL_PATH_MAX]; + int i, n; + + proj.projectfile_path(path_buf, FL_PATH_MAX); + const char *pname = proj.projectfile_name(); + snprintf(proj_filename, FL_PATH_MAX, "%s%s", path_buf, pname ? pname : ""); + + code_filename[0] = '\0'; #if 1 if (!Fluid.batch_mode) { // Depending on the workflow in interactive mode, an external copy of @@ -649,16 +658,19 @@ int mergeback_code_files(Project &proj, Mergeback::Feedback feedback) // matching a project, and uses that location instead. // TODO: this is not working as expected yet. Fl_Preferences build_records(Fl_Preferences::USER_L, "fltk.org", "fluid-build"); - Fl_Preferences path(build_records, proj_filename.c_str()); - int i, n = (int)proj_filename.size(); + n = (int)strlen(proj_filename); for (i=0; i<n; i++) if (proj_filename[i]=='\\') proj_filename[i] = '/'; + Fl_Preferences pathpref(build_records, proj_filename); char *code_fn_ptr = 0; - path.get("code", code_fn_ptr, ""); - if (code_fn_ptr) { code_filename = code_fn_ptr; free(code_fn_ptr); } + pathpref.get("code", code_fn_ptr, ""); + if (code_fn_ptr) { strlcpy(code_filename, code_fn_ptr, FL_PATH_MAX); free(code_fn_ptr); } } #endif - if (code_filename.empty()) - code_filename = proj.codefile_path() + proj.codefile_name(); + if (code_filename[0] == '\0') { + proj.codefile_path(path_buf, FL_PATH_MAX); + proj.codefile_name(name_buf, FL_PATH_MAX); + snprintf(code_filename, FL_PATH_MAX, "%s%s", path_buf, name_buf); + } if (!Fluid.batch_mode) proj.enter_project_dir(); int c = merge_back(proj, code_filename, proj_filename, FLD_MERGEBACK_TASK_INTERACTIVE); if (c>0) { @@ -673,7 +685,7 @@ int mergeback_code_files(Project &proj, Mergeback::Feedback feedback) if (c==0) fl_message("Comparing\n \"%s\"\nto\n \"%s\"\n\n" "MergeBack found no external modifications\n" "in the source code.", - code_filename.c_str(), proj_filename.c_str()); + code_filename, proj_filename); if (c==-2) fl_message("No corresponding source code file found."); } recursion_lock = false; @@ -695,7 +707,7 @@ static void deferred_mergeback_handler(void*) { static int app_event_handler(int event) { if (event == FL_APP_ACTIVATE) { - Fl::add_idle(deferred_mergeback_handler, nullptr); + Fl::add_idle(deferred_mergeback_handler, 0); } return 0; } |
