summaryrefslogtreecommitdiff
path: root/fluid/proj
diff options
context:
space:
mode:
Diffstat (limited to 'fluid/proj')
-rw-r--r--fluid/proj/mergeback.cxx42
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;
}