Gestiti i files che possono essere comuni nel cambio ditta

git-svn-id: svn://10.65.10.50/trunk@543 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1994-11-07 11:48:25 +00:00
parent fc011addc8
commit 4b6762a947

View File

@ -37,7 +37,7 @@ TPrefix::~TPrefix()
} }
HIDDEN int closeall(bool changestudy, TBit_array& excl) HIDDEN int closeall(bool changestudy, TBit_array& excl, TBit_array& toclose)
{ {
if (!openf) return 0; if (!openf) return 0;
@ -52,7 +52,7 @@ HIDDEN int closeall(bool changestudy, TBit_array& excl)
{ {
isfdptr isfd = openf[i]; isfdptr isfd = openf[i];
d.get(i + 1, _nolock, _nordir, _sysdirop); d.get(i + 1, _nolock, _nordir, _sysdirop);
if (changestudy || d.name()[0] != '%') if (toclose[i + 1] || changestudy || d.name()[0] != '%')
{ {
excl.set(i, isfd->f.LockMode == _excllock); excl.set(i, isfd->f.LockMode == _excllock);
CClose(&isfd->f); CClose(&isfd->f);
@ -64,7 +64,7 @@ HIDDEN int closeall(bool changestudy, TBit_array& excl)
} }
HIDDEN void openall(bool changestudy, TBit_array& excl, int oldmax) HIDDEN void openall(bool changestudy, TBit_array& excl, int oldmax, TBit_array& toopen)
{ {
if (!openf) return ; if (!openf) return ;
@ -87,7 +87,7 @@ HIDDEN void openall(bool changestudy, TBit_array& excl, int oldmax)
{ {
isfdptr isfd = openf[i]; isfdptr isfd = openf[i];
d.get(i + 1, _nolock, _nordir, _sysdirop); d.get(i + 1, _nolock, _nordir, _sysdirop);
if (changestudy || d.name()[0] != '%') if (toopen[i + 1] || changestudy || d.name()[0] != '%')
{ {
isfd->ft = d.name()[0] == '%' ? _comdir : _nordir; isfd->ft = d.name()[0] == '%' ? _comdir : _nordir;
d.get(i + 1, _nolock, (TDirtype) isfd->ft); d.get(i + 1, _nolock, (TDirtype) isfd->ft);
@ -123,12 +123,16 @@ void TPrefix::set(const char* name, bool force, TFilelock mode)
if (!force && !test(name)) return; if (!force && !test(name)) return;
TBit_array excl; TBit_array excl, comfiles;
int max = 0; int max = 0;
comfiles.set(LF_PCON);
comfiles.set(LF_CLIFO);
comfiles.set(LF_CAUSALI);
comfiles.set(LF_RCAUSALI);
if (_prefix != ".") if (_prefix != ".")
{ {
max = closeall(FALSE, excl); max = closeall(FALSE, excl, comfiles);
CCloseDir(NORDIR); CCloseDir(NORDIR);
CCloseDir(COMDIR); CCloseDir(COMDIR);
CCloseRecDir(NORDIR); CCloseRecDir(NORDIR);
@ -163,7 +167,7 @@ void TPrefix::set(const char* name, bool force, TFilelock mode)
CGetFile(LF_DIR, &d, _nolock, NORDIR); CGetFile(LF_DIR, &d, _nolock, NORDIR);
_filelevel = d.Flags; _filelevel = d.Flags;
openall(FALSE, excl, max); openall(FALSE, excl, max, comfiles);
} }
} }