Patch level : 4.0 810
Files correlati : xvaga.dll Ricompilazione Demo : [ ] Commento : Bug 0000774 La xvt_fsys_parse_filename non gestisce il path in formato UNC git-svn-id: svn://10.65.10.50/trunk@15756 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
262e6f6cad
commit
389bb15501
@ -1938,10 +1938,14 @@ static FL_STATUS xvt_dm_post_file_ask(FILE_SPEC *fsp, const char *msg, int flags
|
||||
if (selectedname.IsEmpty())
|
||||
return FL_CANCEL;
|
||||
|
||||
wxFileName::SplitPath(selectedname, &path, &name, &extension);
|
||||
strcpy(fsp->dir.path, path);
|
||||
strcpy(fsp->name, MakeFileName(name, extension));
|
||||
strcpy(fsp->type, extension);
|
||||
// wxFileName::SplitPath(selectedname, &path, &name, &extension);
|
||||
// strcpy(fsp->dir.path, path);
|
||||
// strcpy(fsp->name, MakeFileName(name, extension));
|
||||
// strcpy(fsp->type, extension);
|
||||
char pathname[_MAX_PATH];
|
||||
|
||||
xvt_fsys_parse_pathname(selectedname, fsp->dir.path, pathname, fsp->name, fsp->type, NULL);
|
||||
strcat(fsp->dir.path, pathname);
|
||||
|
||||
return FL_OK;
|
||||
}
|
||||
@ -3041,18 +3045,29 @@ BOOLEAN xvt_fsys_parse_pathname(const char *mbs, char *volname, char *dirname, c
|
||||
wxString volume, path, file, ext;
|
||||
wxFileName::SplitPath(mbs, &volume, &path, &file, &ext);
|
||||
if (volname)
|
||||
{
|
||||
if (mbs[0] == '\\' && mbs[1] == '\\')
|
||||
{
|
||||
volume.insert(0, "\\\\");
|
||||
if (path[0] != '\\' && path[0] != '/')
|
||||
volume << '/';
|
||||
path.insert(0, volume);
|
||||
*volname = '\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy(volname, volume);
|
||||
#ifdef WIN32
|
||||
if (volname[0] != '\0' && volname[1] == '\0')
|
||||
strcat(volname, ":");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
if (dirname) strcpy(dirname, path);
|
||||
if (leafroot) strcpy(leafroot, file);
|
||||
if (leafext) strcpy(leafext, ext);
|
||||
if (leafvers) strcpy(leafvers, ""); // TBI put here last change date/time?
|
||||
return TRUE;
|
||||
return true;
|
||||
}
|
||||
|
||||
BOOLEAN xvt_fsys_convert_dir_to_str(DIRECTORY *dirp, char *path, int sz_path)
|
||||
@ -3086,14 +3101,20 @@ BOOLEAN xvt_fsys_convert_str_to_fspec(const char *mbs, FILE_SPEC *fs)
|
||||
BOOLEAN ok = FALSE;
|
||||
if (mbs && *mbs && fs != NULL)
|
||||
{
|
||||
wxString volume, path, file, ext;
|
||||
wxFileName::SplitPath(mbs, &volume, &path, &file, &ext);
|
||||
char path[_MAX_PATH];
|
||||
|
||||
xvt_fsys_convert_str_to_dir(volume+path, &fs->dir);
|
||||
wxStrncpy(fs->type, ext, sizeof(fs->type));
|
||||
wxStrncpy(fs->name, file, SZ_FNAME);
|
||||
xvt_fsys_parse_pathname(mbs, fs->dir.path, path, fs->name, fs->type, NULL);
|
||||
strcat(fs->dir.path, path);
|
||||
|
||||
// wxString volume, path, file, ext;
|
||||
// wxFileName::SplitPath(mbs, &volume, &path, &file, &ext);
|
||||
|
||||
// xvt_fsys_convert_str_to_dir(volume+path, &fs->dir);
|
||||
// wxStrncpy(fs->type, ext, sizeof(fs->type));
|
||||
// wxStrncpy(fs->name, file, SZ_FNAME);
|
||||
wxStrcpy(fs->creator, "CAMPO");
|
||||
ok = !file.IsEmpty();
|
||||
// ok = !file.IsEmpty();
|
||||
ok = fs->name[0] != '\0';
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
@ -3161,13 +3182,20 @@ static unsigned long compute_disk_size(const char* path, bool tot, char unit)
|
||||
{
|
||||
#ifdef WIN32
|
||||
char drive[_MAX_DRIVE + 1];
|
||||
xvt_fsys_parse_pathname(path, drive, NULL, NULL, NULL, NULL);
|
||||
char pathname[_MAX_PATH];
|
||||
|
||||
xvt_fsys_parse_pathname(path, drive, pathname, NULL, NULL, NULL);
|
||||
if (strlen(drive) > 0)
|
||||
strcat(drive, "/");
|
||||
DWORD nSecPerClust, nBytePerSec, nFreeClust, nTotalClust;
|
||||
::GetDiskFreeSpace(drive, &nSecPerClust, &nBytePerSec, &nFreeClust, &nTotalClust);
|
||||
__int64 nBytes = tot ? nTotalClust : nFreeClust;
|
||||
__int64 nBytes = 0;
|
||||
|
||||
if (::GetDiskFreeSpace( *drive ? drive : pathname, &nSecPerClust, &nBytePerSec, &nFreeClust, &nTotalClust) != 0)
|
||||
{
|
||||
nBytes = tot ? nTotalClust : nFreeClust;
|
||||
nBytes *= nSecPerClust;
|
||||
nBytes *= nBytePerSec;
|
||||
}
|
||||
|
||||
#else
|
||||
int64_t nBytes = OsLinux_GetDiskFreeSpace(path);
|
||||
|
Loading…
x
Reference in New Issue
Block a user