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:
parent
f1bbd8b097
commit
d9a95aa969
@ -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';
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user