1
0
Fork 0
forked from len0rd/rockbox

Clean up a bit and get switch statement out of loop in walk_path()

It's nicer to look at and it obfuscated a bug where it should have
exited the loop instead of the case (you probably wouldn't observe
the effect very often).

Change-Id: I33f3c72c8bb7e11b9d418f66cf84efc3082a37b4
This commit is contained in:
Michael Sevakis 2014-09-02 15:57:18 -04:00
parent 802e0110db
commit 0a66545487

View file

@ -498,17 +498,16 @@ walk_path(struct pathwalk *walkp, struct pathwalk_component *compp,
if (!(compp->attr & ATTR_DIRECTORY))
return -ENOTDIR;
switch (len)
{
case 1:
case 2:
if (len >= MAX_NAME)
return -ENAMETOOLONG;
/* check for "." and ".." */
if (name[0] == '.')
{
if (len == 1)
break; /* is "." */
continue; /* is "." */
if (name[1] == '.')
if (len == 2 && name[1] == '.')
{
/* is ".." */
struct pathwalk_component *parentp = compp->nextp;
@ -518,15 +517,10 @@ walk_path(struct pathwalk *walkp, struct pathwalk_component *compp,
compp->nextp = freep;
freep = compp;
compp = parentp;
break;
continue;
}
}
/* fallthrough */
default:
if (len >= MAX_NAME)
return -ENAMETOOLONG;
struct pathwalk_component *newp = freep;
if (!newp)
newp = pathwalk_comp_alloc(compp);
@ -541,8 +535,7 @@ walk_path(struct pathwalk *walkp, struct pathwalk_component *compp,
rc = open_path_component(walkp, compp, stream);
if (rc < 0)
break;
}
break; /* return info below */
}
return walk_open_info(walkp, compp, rc, stream);