You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.2 KiB
68 lines
1.2 KiB
3 years ago
|
#include <cstring>
|
||
|
#include "port.h"
|
||
|
|
||
|
void _splitpath(const char *path, char *drive, char *dir, char *fname, char *ext)
|
||
|
{
|
||
|
char *slash = strrchr((char *)path, SLASH_CHAR);
|
||
|
char *dot = strrchr((char *)path, '.');
|
||
|
|
||
|
*drive = '\0';
|
||
|
|
||
|
if (dot && slash && dot < slash)
|
||
|
{
|
||
|
dot = 0;
|
||
|
}
|
||
|
|
||
|
if (!slash)
|
||
|
{
|
||
|
*dir = '\0';
|
||
|
strcpy(fname, path);
|
||
|
|
||
|
if (dot)
|
||
|
{
|
||
|
fname[dot - path] = '\0';
|
||
|
strcpy(ext, dot + 1);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
*ext = '\0';
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
strcpy(dir, path);
|
||
|
dir[slash - path] = '\0';
|
||
|
strcpy(fname, slash + 1);
|
||
|
|
||
|
if (dot)
|
||
|
{
|
||
|
fname[(dot - slash) - 1] = '\0';
|
||
|
strcpy(ext, dot + 1);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
*ext = '\0';
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void _makepath(char *path, const char *drive, const char *dir, const char *fname, const char *ext)
|
||
|
{
|
||
|
if (dir && *dir)
|
||
|
{
|
||
|
strcpy(path, dir);
|
||
|
strcat(path, "/");
|
||
|
}
|
||
|
else
|
||
|
*path = '\0';
|
||
|
|
||
|
strcat(path, fname);
|
||
|
|
||
|
if (ext && *ext)
|
||
|
{
|
||
|
if (*ext != '.')
|
||
|
strcat(path, ".");
|
||
|
strcat(path, ext);
|
||
|
}
|
||
|
}
|