Corretti metodi TDir::name() e TDir::filename(). Ottimizzata la

ricerca dell'estensione in presenza di sottodirettori del
tipo \prassi\p.due\dati


git-svn-id: svn://10.65.10.50/trunk@4628 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
angelo 1997-06-12 15:49:41 +00:00
parent f1bbd8b097
commit d9a95aa969

View File

@ -153,7 +153,18 @@ const char *TDir::name () const
const char *TDir::filename () const
{
strcpy(_files_tmp_string, CAddPref(_dir->SysName));
strcat(_files_tmp_string, ".dbf");
for (int i=strlen(_files_tmp_string); i>0; i--)
{
const char c = _files_tmp_string[i-1];
if (c == '\\' || c == '/')
{
strcat(_files_tmp_string, ".dbf");
break;
}
else
if (c == '.')
break;
}
return _files_tmp_string;
}
@ -161,11 +172,19 @@ void TDir::set_name (const char * name)
{
CHECK(name != NULL, "NULL Filename");
CHECK(strlen(name) < 42, "Name too long");
char * p = strchr(name, '.');
CHECK(p == NULL, "Can't use extension");
if (p)
p = '\0';
strncpy(_dir->SysName, _files_tmp_string, 42);
for (int i=strlen(name); i>0; i--)
{
char c = name[i-1];
if (c == '\\' || c == '/')
break;
else
if (c == '.')
c = '\0';
break;
}
strncpy(_dir->SysName, name, 42);
_dir->SysName[41] = '\0';
}