diff --git a/include/golem.cpp b/include/golem.cpp index 3f25f1c9e..8ac84da8f 100755 --- a/include/golem.cpp +++ b/include/golem.cpp @@ -224,17 +224,16 @@ bool TGolem_mask::file_handler(TMask_field& f, KEY k) strcpy(fs.name, "*.*"); strcpy(fs.creator, "GOLEM"); - xvt_fsys_save_dir(); + DIRECTORY dir; xvt_fsys_get_dir(&dir); FL_STATUS ok = xvt_dm_post_file_open(&fs, "Selezionare il file ..."); + xvt_fsys_set_dir(&dir); + if (ok == FL_OK) { - xvt_fsys_restore_dir(); - TFilename file; xvt_fsys_convert_dir_to_str(&fs.dir, file.get_buffer(), file.size()); file.add(fs.name); - file.ext(fs.type); - f.set(file); + m.set(S_FILE, file); k = K_TAB; } } @@ -468,9 +467,12 @@ bool TGolem_field::autosave(TRelation& r) TToken_string new_value(get(), '\n'); if (new_value != _old_value) { - TFilename golem_path; - TDir dir; dir.get(r.lfile().num()); + TDir dir; + const int logicnum = r.lfile().num(); + dir.get(logicnum, _nolock, _nordir, _sysdirop); const long ditta = dir.is_com() ? 0 : prefix().get_codditta(); + + TFilename golem_path; golem_path = firm2dir(ditta); golem_path.add("golem"); if (!fexist(golem_path)) @@ -492,15 +494,16 @@ bool TGolem_field::autosave(TRelation& r) if (old_file != new_file) { - const was_stored = old_row.get_char(2) <= ' '; - const is_stored = new_row.get_char(2) <= ' '; + const was_stored = old_row.get_char(2) <= ' ' && + golem_path.compare(old_file, golem_path.len(), TRUE) == 0; + const tobe_stored = new_row.get_char(2) <= ' '; if (was_stored && fexist(old_file)) ::remove(old_file); - if (is_stored && !new_file.blank()) + if (tobe_stored && !new_file.blank()) { char ext[_MAX_EXT]; _splitpath(new_file, NULL, NULL, NULL, ext); - old_file.temp(golem_path, ext); + old_file.temp(golem_path, ext); fcopy(new_file, old_file); new_row.add(old_file, 0); @@ -513,7 +516,7 @@ bool TGolem_field::autosave(TRelation& r) } } } - _old_value = new_value; + set(_old_value = new_value); } } return TEditable_field::autosave(r);