mirror of
git://projects.qi-hardware.com/gmenu2x.git
synced 2024-11-29 13:54:05 +02:00
menu.cpp: Don't use stat() to know if a FS entry is a directory
The pointer returned by readdir() already informs us of the type of the FS entry.
This commit is contained in:
parent
16d66d0dbc
commit
3dc12d06ea
16
src/menu.cpp
16
src/menu.cpp
@ -61,27 +61,23 @@ uint Menu::firstDispRow() {
|
||||
void Menu::readSections(std::string parentDir)
|
||||
{
|
||||
DIR *dirp;
|
||||
struct stat st;
|
||||
struct dirent *dptr;
|
||||
|
||||
dirp = opendir(parentDir.c_str());
|
||||
if (!dirp) return;
|
||||
|
||||
while ((dptr = readdir(dirp))) {
|
||||
int statret;
|
||||
if (dptr->d_name[0]=='.') continue;
|
||||
if (dptr->d_name[0] == '.' || dptr->d_type != DT_DIR)
|
||||
continue;
|
||||
|
||||
string filepath = parentDir + "/" + dptr->d_name;
|
||||
statret = stat(filepath.c_str(), &st);
|
||||
if (!S_ISDIR(st.st_mode)) continue;
|
||||
if (statret != -1) {
|
||||
|
||||
if (find(sections.begin(), sections.end(), (string)dptr->d_name) == sections.end()) {
|
||||
sections.push_back((string)dptr->d_name);
|
||||
vector<Link*> ll;
|
||||
links.push_back(ll);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
closedir(dirp);
|
||||
}
|
||||
@ -425,17 +421,13 @@ void Menu::setLinkIndex(int i) {
|
||||
void Menu::readLinksOfSection(std::string path, std::vector<std::string> &linkfiles)
|
||||
{
|
||||
DIR *dirp;
|
||||
struct stat st;
|
||||
struct dirent *dptr;
|
||||
|
||||
if ((dirp = opendir(path.c_str())) == NULL) return;
|
||||
|
||||
while ((dptr = readdir(dirp))) {
|
||||
if (dptr->d_name[0] == '.') continue;
|
||||
if (dptr->d_type != DT_REG) continue;
|
||||
string filepath = path + "/" + dptr->d_name;
|
||||
int statret = stat(filepath.c_str(), &st);
|
||||
if (S_ISDIR(st.st_mode)) continue;
|
||||
if (statret != -1)
|
||||
linkfiles.push_back(filepath);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user