mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Merge branch 'fix-mkdir-each' into 'replay-branch-name'
Fix mkdir-each functions See merge request KartKrew/Kart!510
This commit is contained in:
commit
e54a4c27d3
1 changed files with 36 additions and 44 deletions
80
src/m_misc.c
80
src/m_misc.c
|
|
@ -2555,26 +2555,25 @@ const char *M_FileError(FILE *fp)
|
|||
|
||||
/** Return the number of parts of this path.
|
||||
*/
|
||||
int M_PathParts(const char *path)
|
||||
int M_PathParts(const char *p)
|
||||
{
|
||||
int n;
|
||||
const char *p;
|
||||
const char *t;
|
||||
if (path == NULL)
|
||||
int parts = 0;
|
||||
|
||||
if (p == NULL)
|
||||
return 0;
|
||||
for (n = 0, p = path ;; ++n)
|
||||
|
||||
#ifdef _WIN32
|
||||
if (!strncmp(&p[1], ":\\", 2))
|
||||
p += 3;
|
||||
#endif
|
||||
|
||||
while (*(p += strspn(p, PATHSEP)))
|
||||
{
|
||||
t = p;
|
||||
if (( p = strchr(p, PATHSEP[0]) ))
|
||||
p += strspn(p, PATHSEP);
|
||||
else
|
||||
{
|
||||
if (*t)/* there is something after the final delimiter */
|
||||
n++;
|
||||
break;
|
||||
}
|
||||
parts++;
|
||||
p += strcspn(p, PATHSEP);
|
||||
}
|
||||
return n;
|
||||
|
||||
return parts;
|
||||
}
|
||||
|
||||
/** Check whether a path is an absolute path.
|
||||
|
|
@ -2592,50 +2591,43 @@ boolean M_IsPathAbsolute(const char *path)
|
|||
*/
|
||||
void M_MkdirEachUntil(const char *cpath, int start, int end, int mode)
|
||||
{
|
||||
char path[MAX_WADPATH];
|
||||
char path[256];
|
||||
char *p;
|
||||
char *t;
|
||||
int n;
|
||||
int c;
|
||||
|
||||
if (end > 0 && end <= start)
|
||||
return;
|
||||
|
||||
strlcpy(path, cpath, sizeof path);
|
||||
|
||||
#ifdef _WIN32
|
||||
if (strncmp(&path[1], ":\\", 2) == 0)
|
||||
if (!strncmp(&path[1], ":\\", 2))
|
||||
p = &path[3];
|
||||
else
|
||||
#endif
|
||||
p = path;
|
||||
|
||||
if (end > 0)
|
||||
end -= start;
|
||||
|
||||
for (; start > 0; --start)
|
||||
while (end != 0 && *(p += strspn(p, PATHSEP)))
|
||||
{
|
||||
p += strspn(p, PATHSEP);
|
||||
if (!( p = strchr(p, PATHSEP[0]) ))
|
||||
return;
|
||||
}
|
||||
p += strspn(p, PATHSEP);
|
||||
for (;;)
|
||||
{
|
||||
if (end > 0 && !--end)
|
||||
break;
|
||||
n = strcspn(p, PATHSEP);
|
||||
|
||||
t = p;
|
||||
if (( p = strchr(p, PATHSEP[0]) ))
|
||||
{
|
||||
*p = '\0';
|
||||
I_mkdir(path, mode);
|
||||
*p = PATHSEP[0];
|
||||
p += strspn(p, PATHSEP);
|
||||
}
|
||||
if (start > 0)
|
||||
start--;
|
||||
else
|
||||
{
|
||||
if (*t)
|
||||
I_mkdir(path, mode);
|
||||
break;
|
||||
c = p[n];
|
||||
p[n] = '\0';
|
||||
|
||||
I_mkdir(path, mode);
|
||||
|
||||
p[n] = c;
|
||||
}
|
||||
|
||||
p += n;
|
||||
|
||||
if (end > 0)
|
||||
end--;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2697,4 +2689,4 @@ const char * M_Ftrim (double f)
|
|||
dig[i + 1] = '\0';
|
||||
return &dig[1];/* skip the 0 */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue