From 11da9586bed51ceb7394307fe69cb0bf346c73cb Mon Sep 17 00:00:00 2001 From: guy Date: Mon, 27 May 2013 12:04:17 +0000 Subject: [PATCH] Aggiunta funzionme per testare esistenza cartelle (non solo file) git-svn-id: svn://10.65.10.50/branches/R_10_00@22862 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- include/isam.cpp | 29 +++++++++++++++++++++++------ include/prefix.cpp | 10 +++++----- include/recarray.cpp | 2 +- include/utility.cpp | 6 +++--- 4 files changed, 32 insertions(+), 15 deletions(-) diff --git a/include/isam.cpp b/include/isam.cpp index ad66cdbc8..cd7567a4b 100755 --- a/include/isam.cpp +++ b/include/isam.cpp @@ -1501,8 +1501,8 @@ TIsamtempfile::TIsamtempfile(int logicnum, const char* radix, bool create, bool if (!create) { const long sz = fsize(n); - if (sz == 0) - fatal_box("Impossibile aprire il file %s: %s",(const char*)n, (const char*)_strerror(NULL)); + if (sz <= 64) + fatal_box("Impossibile aprire il file %s", (const char*)n); const TDir dir(logicnum); const long len = dir.len(); @@ -1561,11 +1561,28 @@ int TIsamtempfile::open( fatal_box("Can't create temp file '%s' num. %d: Error n. %d", (const char*)filename, num(), err); } } + else + { + TFilename test = filename; test.ext("dbf"); + for (int t = 0; t < 2; t++) + { + test.ext(t == 0 ? "dbf" : "cdx"); + if (!test.exist()) + { + err = -60; + break; + } + } + } + + if (err == NOERR) + { + _isam_handle = prefix().open_isamfile(_logicnum, filename); + TCodeb_handle fhnd = handle(_curr_key = 1); + if (fhnd < 0) + err = get_error(fhnd); + } - _isam_handle = prefix().open_isamfile(_logicnum, filename); - TCodeb_handle fhnd = handle(_curr_key = 1); - if (fhnd < 0) - err = get_error(fhnd); if (err != NOERR) { filename.ext("dbf"); diff --git a/include/prefix.cpp b/include/prefix.cpp index 0d161b5bf..c06c14046 100755 --- a/include/prefix.cpp +++ b/include/prefix.cpp @@ -1092,10 +1092,10 @@ bool TPrefix::test(const char* s) const if (s1.exist()) { if (xvt_fsys_access(s1, 0x2) != 0) - return error_box(FR("Impossibile accedere in lettura/scrittura al file '%s'"), (const char*)s1); + return cantwrite_box(s1); } else - return error_box(FR("Impossibile trovare il file '%s'"), (const char*)s1); + return cantread_box(s1); } return true; @@ -1156,7 +1156,7 @@ const char* TPrefix::get_studio() const bool TPrefix::set_studio(const char* study, long ditta) { TFilename dirtest(study); - if (!dirtest.exist() || dirtest.find(' ') >= 0) + if (!dexist(dirtest) || dirtest.find(' ') >= 0) return false; dirtest.add("com/dir.gen"); @@ -1293,7 +1293,7 @@ bool TPrefix::build_firm_data(long codditta, bool flagcom) exist = s.exist(); } if (exist) - return message_box("Direttorio dati danneggiato, impossibile attivare la ditta %ld", codditta); + return message_box("Cartella dati danneggiata, impossibile attivare la ditta %ld", codditta); if (!yesno_box("Gli archivi della ditta %ld non esistono: si desidera generarli?", codditta)) return false; @@ -1301,7 +1301,7 @@ bool TPrefix::build_firm_data(long codditta, bool flagcom) s = s.path(); s.rtrim(1); if (!s.exist() && !make_dir(s)) - return error_box("Impossibile creare il direttorio della ditta %ld (%s)", + return error_box("Impossibile creare la cartella della ditta %ld (%s)", codditta, (const char*)s); s.add(ndir); diff --git a/include/recarray.cpp b/include/recarray.cpp index d9a3ba1d7..f3f3d7e6d 100755 --- a/include/recarray.cpp +++ b/include/recarray.cpp @@ -217,7 +217,7 @@ int TRecord_array::rec2row(const TRectype& r) const else n = r.get_int(_num); // Non e' detto che sia un int! n -= _offset; - CHECKD(n >= 0 && n < 30000, "Bad line number in record ", n + _offset); + CHECKD(n >= 0 && n <= 99999, "Bad line number in record ", n + _offset); return n; } diff --git a/include/utility.cpp b/include/utility.cpp index 41b05d3e3..3a82539c9 100755 --- a/include/utility.cpp +++ b/include/utility.cpp @@ -150,18 +150,18 @@ bool fcopy( bool fexist( const char* file) // @parm Nome del file di cui contrallare l'esistenza { - return xvt_fsys_file_exists(file) != 0; + return file && *file && xvt_fsys_file_exists(file) != 0; } bool dexist( const char* file) // @parm Nome del file di cui contrallare l'esistenza { - return xvt_fsys_dir_exists(file) != 0; + return file && *file && xvt_fsys_dir_exists(file) != 0; } long fsize(const char* name) { - return xvt_fsys_file_attr(name, XVT_FILE_ATTR_SIZE); + return (name && *name) ? xvt_fsys_file_attr(name, XVT_FILE_ATTR_SIZE) : 0L; } // @doc EXTERNAL