STORM-477 FIXED Re-implemented LLDir::getNextFileInDir() as an iterator object.
- Replaced all existing usages of LLDir::getNextFileInDir() with the new directory iterator object. - Removed platform specific LLDir::getNextFileInDir() implementation.master
parent
4e150d3271
commit
4af9db7b79
|
|
@ -33,6 +33,7 @@
|
|||
// linden library includes
|
||||
#include "llcontrol.h" // LLControlGroup
|
||||
#include "lldir.h"
|
||||
#include "lldiriterator.h"
|
||||
#include "llerrorcontrol.h"
|
||||
#include "llfloater.h"
|
||||
#include "llfontfreetype.h"
|
||||
|
|
@ -174,7 +175,9 @@ void export_test_floaters()
|
|||
std::string delim = gDirUtilp->getDirDelimiter();
|
||||
std::string xui_dir = get_xui_dir() + "en" + delim;
|
||||
std::string filename;
|
||||
while (gDirUtilp->getNextFileInDir(xui_dir, "floater_test_*.xml", filename))
|
||||
|
||||
LLDirIterator iter(xui_dir, "floater_test_*.xml");
|
||||
while (iter.next(filename))
|
||||
{
|
||||
if (filename.find("_new.xml") != std::string::npos)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@
|
|||
#include "llerrorcontrol.h"
|
||||
#include "llfile.h"
|
||||
#include "lldir.h"
|
||||
#include "lldiriterator.h"
|
||||
#include "llxmlnode.h"
|
||||
#include "lltrans.h"
|
||||
|
||||
|
|
@ -55,6 +56,8 @@ typedef struct _updater_app_state {
|
|||
std::string strings_dirs;
|
||||
std::string strings_file;
|
||||
|
||||
LLDirIterator *image_dir_iter;
|
||||
|
||||
GtkWidget *window;
|
||||
GtkWidget *progress_bar;
|
||||
GtkWidget *image;
|
||||
|
|
@ -108,7 +111,7 @@ bool translate_init(std::string comma_delim_path_list,
|
|||
void updater_app_ui_init(void);
|
||||
void updater_app_quit(UpdaterAppState *app_state);
|
||||
void parse_args_and_init(int argc, char **argv, UpdaterAppState *app_state);
|
||||
std::string next_image_filename(std::string& image_path);
|
||||
std::string next_image_filename(std::string& image_path, LLDirIterator& iter);
|
||||
void display_error(GtkWidget *parent, std::string title, std::string message);
|
||||
BOOL install_package(std::string package_file, std::string destination);
|
||||
BOOL spawn_viewer(UpdaterAppState *app_state);
|
||||
|
|
@ -174,7 +177,7 @@ void updater_app_ui_init(UpdaterAppState *app_state)
|
|||
|
||||
// load the first image
|
||||
app_state->image = gtk_image_new_from_file
|
||||
(next_image_filename(app_state->image_dir).c_str());
|
||||
(next_image_filename(app_state->image_dir, *app_state->image_dir_iter).c_str());
|
||||
gtk_widget_set_size_request(app_state->image, 340, 310);
|
||||
gtk_container_add(GTK_CONTAINER(frame), app_state->image);
|
||||
|
||||
|
|
@ -205,7 +208,7 @@ gboolean rotate_image_cb(gpointer data)
|
|||
llassert(data != NULL);
|
||||
app_state = (UpdaterAppState *) data;
|
||||
|
||||
filename = next_image_filename(app_state->image_dir);
|
||||
filename = next_image_filename(app_state->image_dir, *app_state->image_dir_iter);
|
||||
|
||||
gdk_threads_enter();
|
||||
gtk_image_set_from_file(GTK_IMAGE(app_state->image), filename.c_str());
|
||||
|
|
@ -214,10 +217,10 @@ gboolean rotate_image_cb(gpointer data)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
std::string next_image_filename(std::string& image_path)
|
||||
std::string next_image_filename(std::string& image_path, LLDirIterator& iter)
|
||||
{
|
||||
std::string image_filename;
|
||||
gDirUtilp->getNextFileInDir(image_path, "/*.jpg", image_filename);
|
||||
iter.next(image_filename);
|
||||
return image_path + "/" + image_filename;
|
||||
}
|
||||
|
||||
|
|
@ -741,6 +744,7 @@ void parse_args_and_init(int argc, char **argv, UpdaterAppState *app_state)
|
|||
else if ((!strcmp(argv[i], "--image-dir")) && (++i < argc))
|
||||
{
|
||||
app_state->image_dir = argv[i];
|
||||
app_state->image_dir_iter = new LLDirIterator(argv[i], "/*.jpg");
|
||||
}
|
||||
else if ((!strcmp(argv[i], "--dest")) && (++i < argc))
|
||||
{
|
||||
|
|
@ -825,6 +829,7 @@ int main(int argc, char **argv)
|
|||
}
|
||||
|
||||
bool success = !app_state->failure;
|
||||
delete app_state->image_dir_iter;
|
||||
delete app_state;
|
||||
return success ? 0 : 1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,6 +40,8 @@
|
|||
#include "lltimer.h" // ms_sleep()
|
||||
#include "lluuid.h"
|
||||
|
||||
#include "lldiriterator.h"
|
||||
|
||||
#if LL_WINDOWS
|
||||
#include "lldir_win32.h"
|
||||
LLDir_Win32 gDirUtil;
|
||||
|
|
@ -83,7 +85,9 @@ S32 LLDir::deleteFilesInDir(const std::string &dirname, const std::string &mask)
|
|||
std::string filename;
|
||||
std::string fullpath;
|
||||
S32 result;
|
||||
while (getNextFileInDir(dirname, mask, filename))
|
||||
|
||||
LLDirIterator iter(dirname, mask);
|
||||
while (iter.next(filename))
|
||||
{
|
||||
fullpath = dirname;
|
||||
fullpath += getDirDelimiter();
|
||||
|
|
|
|||
|
|
@ -75,31 +75,6 @@ class LLDir
|
|||
// pure virtual functions
|
||||
virtual U32 countFilesInDir(const std::string &dirname, const std::string &mask) = 0;
|
||||
|
||||
/// Walk the files in a directory, with file pattern matching
|
||||
virtual BOOL getNextFileInDir(const std::string& dirname, ///< directory path - must end in trailing slash!
|
||||
const std::string& mask, ///< file pattern string (use "*" for all)
|
||||
std::string& fname ///< output: found file name
|
||||
) = 0;
|
||||
/**<
|
||||
* @returns true if a file was found, false if the entire directory has been scanned.
|
||||
*
|
||||
* @note that this function is NOT thread safe
|
||||
*
|
||||
* This function may not be used to scan part of a directory, then start a new search of a different
|
||||
* directory, and then restart the first search where it left off; the entire search must run to
|
||||
* completion or be abandoned - there is no restart.
|
||||
*
|
||||
* @bug: See http://jira.secondlife.com/browse/VWR-23697
|
||||
* and/or the tests in test/lldir_test.cpp
|
||||
* This is known to fail with patterns that have both:
|
||||
* a wildcard left of a . and more than one sequential ? right of a .
|
||||
* the pattern foo.??x appears to work
|
||||
* but *.??x or foo?.??x do not
|
||||
*
|
||||
* @todo this really should be rewritten as an iterator object, and the
|
||||
* filtering should be done in a platform-independent way.
|
||||
*/
|
||||
|
||||
virtual std::string getCurPath() = 0;
|
||||
virtual BOOL fileExists(const std::string &filename) const = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -242,68 +242,6 @@ U32 LLDir_Linux::countFilesInDir(const std::string &dirname, const std::string &
|
|||
return (file_count);
|
||||
}
|
||||
|
||||
// get the next file in the directory
|
||||
BOOL LLDir_Linux::getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname)
|
||||
{
|
||||
glob_t g;
|
||||
BOOL result = FALSE;
|
||||
fname = "";
|
||||
|
||||
if(!(dirname == mCurrentDir))
|
||||
{
|
||||
// different dir specified, close old search
|
||||
mCurrentDirIndex = -1;
|
||||
mCurrentDirCount = -1;
|
||||
mCurrentDir = dirname;
|
||||
}
|
||||
|
||||
std::string tmp_str;
|
||||
tmp_str = dirname;
|
||||
tmp_str += mask;
|
||||
|
||||
if(glob(tmp_str.c_str(), GLOB_NOSORT, NULL, &g) == 0)
|
||||
{
|
||||
if(g.gl_pathc > 0)
|
||||
{
|
||||
if((int)g.gl_pathc != mCurrentDirCount)
|
||||
{
|
||||
// Number of matches has changed since the last search, meaning a file has been added or deleted.
|
||||
// Reset the index.
|
||||
mCurrentDirIndex = -1;
|
||||
mCurrentDirCount = g.gl_pathc;
|
||||
}
|
||||
|
||||
mCurrentDirIndex++;
|
||||
|
||||
if(mCurrentDirIndex < (int)g.gl_pathc)
|
||||
{
|
||||
// llinfos << "getNextFileInDir: returning number " << mCurrentDirIndex << ", path is " << g.gl_pathv[mCurrentDirIndex] << llendl;
|
||||
|
||||
// The API wants just the filename, not the full path.
|
||||
//fname = g.gl_pathv[mCurrentDirIndex];
|
||||
|
||||
char *s = strrchr(g.gl_pathv[mCurrentDirIndex], '/');
|
||||
|
||||
if(s == NULL)
|
||||
s = g.gl_pathv[mCurrentDirIndex];
|
||||
else if(s[0] == '/')
|
||||
s++;
|
||||
|
||||
fname = s;
|
||||
|
||||
result = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
globfree(&g);
|
||||
}
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
std::string LLDir_Linux::getCurPath()
|
||||
{
|
||||
char tmp_str[LL_MAX_PATH]; /* Flawfinder: ignore */
|
||||
|
|
|
|||
|
|
@ -43,7 +43,6 @@ public:
|
|||
public:
|
||||
virtual std::string getCurPath();
|
||||
virtual U32 countFilesInDir(const std::string &dirname, const std::string &mask);
|
||||
virtual BOOL getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname);
|
||||
/*virtual*/ BOOL fileExists(const std::string &filename) const;
|
||||
|
||||
/*virtual*/ std::string getLLPluginLauncher();
|
||||
|
|
|
|||
|
|
@ -258,67 +258,6 @@ U32 LLDir_Mac::countFilesInDir(const std::string &dirname, const std::string &ma
|
|||
return (file_count);
|
||||
}
|
||||
|
||||
// get the next file in the directory
|
||||
BOOL LLDir_Mac::getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname)
|
||||
{
|
||||
glob_t g;
|
||||
BOOL result = FALSE;
|
||||
fname = "";
|
||||
|
||||
if(!(dirname == mCurrentDir))
|
||||
{
|
||||
// different dir specified, close old search
|
||||
mCurrentDirIndex = -1;
|
||||
mCurrentDirCount = -1;
|
||||
mCurrentDir = dirname;
|
||||
}
|
||||
|
||||
std::string tmp_str;
|
||||
tmp_str = dirname;
|
||||
tmp_str += mask;
|
||||
|
||||
if(glob(tmp_str.c_str(), GLOB_NOSORT, NULL, &g) == 0)
|
||||
{
|
||||
if(g.gl_pathc > 0)
|
||||
{
|
||||
if(g.gl_pathc != mCurrentDirCount)
|
||||
{
|
||||
// Number of matches has changed since the last search, meaning a file has been added or deleted.
|
||||
// Reset the index.
|
||||
mCurrentDirIndex = -1;
|
||||
mCurrentDirCount = g.gl_pathc;
|
||||
}
|
||||
|
||||
mCurrentDirIndex++;
|
||||
|
||||
if(mCurrentDirIndex < g.gl_pathc)
|
||||
{
|
||||
// llinfos << "getNextFileInDir: returning number " << mCurrentDirIndex << ", path is " << g.gl_pathv[mCurrentDirIndex] << llendl;
|
||||
|
||||
// The API wants just the filename, not the full path.
|
||||
//fname = g.gl_pathv[mCurrentDirIndex];
|
||||
|
||||
char *s = strrchr(g.gl_pathv[mCurrentDirIndex], '/');
|
||||
|
||||
if(s == NULL)
|
||||
s = g.gl_pathv[mCurrentDirIndex];
|
||||
else if(s[0] == '/')
|
||||
s++;
|
||||
|
||||
fname = s;
|
||||
|
||||
result = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
globfree(&g);
|
||||
}
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
|
||||
S32 LLDir_Mac::deleteFilesInDir(const std::string &dirname, const std::string &mask)
|
||||
{
|
||||
glob_t g;
|
||||
|
|
|
|||
|
|
@ -43,7 +43,6 @@ public:
|
|||
virtual S32 deleteFilesInDir(const std::string &dirname, const std::string &mask);
|
||||
virtual std::string getCurPath();
|
||||
virtual U32 countFilesInDir(const std::string &dirname, const std::string &mask);
|
||||
virtual BOOL getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname);
|
||||
virtual BOOL fileExists(const std::string &filename) const;
|
||||
|
||||
/*virtual*/ std::string getLLPluginLauncher();
|
||||
|
|
|
|||
|
|
@ -260,68 +260,6 @@ U32 LLDir_Solaris::countFilesInDir(const std::string &dirname, const std::string
|
|||
return (file_count);
|
||||
}
|
||||
|
||||
// get the next file in the directory
|
||||
BOOL LLDir_Solaris::getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname)
|
||||
{
|
||||
glob_t g;
|
||||
BOOL result = FALSE;
|
||||
fname = "";
|
||||
|
||||
if(!(dirname == mCurrentDir))
|
||||
{
|
||||
// different dir specified, close old search
|
||||
mCurrentDirIndex = -1;
|
||||
mCurrentDirCount = -1;
|
||||
mCurrentDir = dirname;
|
||||
}
|
||||
|
||||
std::string tmp_str;
|
||||
tmp_str = dirname;
|
||||
tmp_str += mask;
|
||||
|
||||
if(glob(tmp_str.c_str(), GLOB_NOSORT, NULL, &g) == 0)
|
||||
{
|
||||
if(g.gl_pathc > 0)
|
||||
{
|
||||
if((int)g.gl_pathc != mCurrentDirCount)
|
||||
{
|
||||
// Number of matches has changed since the last search, meaning a file has been added or deleted.
|
||||
// Reset the index.
|
||||
mCurrentDirIndex = -1;
|
||||
mCurrentDirCount = g.gl_pathc;
|
||||
}
|
||||
|
||||
mCurrentDirIndex++;
|
||||
|
||||
if(mCurrentDirIndex < (int)g.gl_pathc)
|
||||
{
|
||||
// llinfos << "getNextFileInDir: returning number " << mCurrentDirIndex << ", path is " << g.gl_pathv[mCurrentDirIndex] << llendl;
|
||||
|
||||
// The API wants just the filename, not the full path.
|
||||
//fname = g.gl_pathv[mCurrentDirIndex];
|
||||
|
||||
char *s = strrchr(g.gl_pathv[mCurrentDirIndex], '/');
|
||||
|
||||
if(s == NULL)
|
||||
s = g.gl_pathv[mCurrentDirIndex];
|
||||
else if(s[0] == '/')
|
||||
s++;
|
||||
|
||||
fname = s;
|
||||
|
||||
result = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
globfree(&g);
|
||||
}
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
std::string LLDir_Solaris::getCurPath()
|
||||
{
|
||||
char tmp_str[LL_MAX_PATH]; /* Flawfinder: ignore */
|
||||
|
|
|
|||
|
|
@ -43,7 +43,6 @@ public:
|
|||
public:
|
||||
virtual std::string getCurPath();
|
||||
virtual U32 countFilesInDir(const std::string &dirname, const std::string &mask);
|
||||
virtual BOOL getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname);
|
||||
/*virtual*/ BOOL fileExists(const std::string &filename) const;
|
||||
|
||||
private:
|
||||
|
|
|
|||
|
|
@ -236,67 +236,6 @@ U32 LLDir_Win32::countFilesInDir(const std::string &dirname, const std::string &
|
|||
return (file_count);
|
||||
}
|
||||
|
||||
|
||||
// get the next file in the directory
|
||||
BOOL LLDir_Win32::getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname)
|
||||
{
|
||||
BOOL fileFound = FALSE;
|
||||
fname = "";
|
||||
|
||||
WIN32_FIND_DATAW FileData;
|
||||
llutf16string pathname = utf8str_to_utf16str(dirname) + utf8str_to_utf16str(mask);
|
||||
|
||||
if (pathname != mCurrentDir)
|
||||
{
|
||||
// different dir specified, close old search
|
||||
if (mCurrentDir[0])
|
||||
{
|
||||
FindClose(mDirSearch_h);
|
||||
}
|
||||
mCurrentDir = pathname;
|
||||
|
||||
// and open new one
|
||||
// Check error opening Directory structure
|
||||
if ((mDirSearch_h = FindFirstFile(pathname.c_str(), &FileData)) != INVALID_HANDLE_VALUE)
|
||||
{
|
||||
fileFound = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
// Loop to skip over the current (.) and parent (..) directory entries
|
||||
// (apparently returned in Win7 but not XP)
|
||||
do
|
||||
{
|
||||
if ( fileFound
|
||||
&& ( (lstrcmp(FileData.cFileName, (LPCTSTR)TEXT(".")) == 0)
|
||||
||(lstrcmp(FileData.cFileName, (LPCTSTR)TEXT("..")) == 0)
|
||||
)
|
||||
)
|
||||
{
|
||||
fileFound = FALSE;
|
||||
}
|
||||
} while ( mDirSearch_h != INVALID_HANDLE_VALUE
|
||||
&& !fileFound
|
||||
&& (fileFound = FindNextFile(mDirSearch_h, &FileData)
|
||||
)
|
||||
);
|
||||
|
||||
if (!fileFound && GetLastError() == ERROR_NO_MORE_FILES)
|
||||
{
|
||||
// No more files, so reset to beginning of directory
|
||||
FindClose(mDirSearch_h);
|
||||
mCurrentDir[0] = '\000';
|
||||
}
|
||||
|
||||
if (fileFound)
|
||||
{
|
||||
// convert from TCHAR to char
|
||||
fname = utf16str_to_utf8str(FileData.cFileName);
|
||||
}
|
||||
|
||||
return fileFound;
|
||||
}
|
||||
|
||||
std::string LLDir_Win32::getCurPath()
|
||||
{
|
||||
WCHAR w_str[MAX_PATH];
|
||||
|
|
|
|||
|
|
@ -40,15 +40,12 @@ public:
|
|||
|
||||
/*virtual*/ std::string getCurPath();
|
||||
/*virtual*/ U32 countFilesInDir(const std::string &dirname, const std::string &mask);
|
||||
/*virtual*/ BOOL getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname);
|
||||
/*virtual*/ BOOL fileExists(const std::string &filename) const;
|
||||
|
||||
/*virtual*/ std::string getLLPluginLauncher();
|
||||
/*virtual*/ std::string getLLPluginFilename(std::string base_name);
|
||||
|
||||
private:
|
||||
BOOL LLDir_Win32::getNextFileInDir(const llutf16string &dirname, const std::string &mask, std::string &fname);
|
||||
|
||||
void* mDirSearch_h;
|
||||
llutf16string mCurrentDir;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -89,6 +89,7 @@
|
|||
|
||||
// Linden library includes
|
||||
#include "llavatarnamecache.h"
|
||||
#include "lldiriterator.h"
|
||||
#include "llimagej2c.h"
|
||||
#include "llmemory.h"
|
||||
#include "llprimitive.h"
|
||||
|
|
@ -3290,7 +3291,9 @@ void LLAppViewer::migrateCacheDirectory()
|
|||
S32 file_count = 0;
|
||||
std::string file_name;
|
||||
std::string mask = delimiter + "*.*";
|
||||
while (gDirUtilp->getNextFileInDir(old_cache_dir, mask, file_name))
|
||||
|
||||
LLDirIterator iter(old_cache_dir, mask);
|
||||
while (iter.next(file_name))
|
||||
{
|
||||
if (file_name == "." || file_name == "..") continue;
|
||||
std::string source_path = old_cache_dir + delimiter + file_name;
|
||||
|
|
@ -3509,7 +3512,8 @@ bool LLAppViewer::initCache()
|
|||
dir = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,"");
|
||||
|
||||
std::string found_file;
|
||||
if (gDirUtilp->getNextFileInDir(dir, mask, found_file))
|
||||
LLDirIterator iter(dir, mask);
|
||||
if (iter.next(found_file))
|
||||
{
|
||||
old_vfs_data_file = dir + gDirUtilp->getDirDelimiter() + found_file;
|
||||
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
|
||||
#include "llcommandlineparser.h"
|
||||
|
||||
#include "lldiriterator.h"
|
||||
#include "llmemtype.h"
|
||||
#include "llurldispatcher.h" // SLURL from other app instance
|
||||
#include "llviewernetwork.h"
|
||||
|
|
@ -504,7 +505,9 @@ std::string LLAppViewerLinux::generateSerialNumber()
|
|||
|
||||
// trawl /dev/disk/by-uuid looking for a good-looking UUID to grab
|
||||
std::string this_name;
|
||||
while (gDirUtilp->getNextFileInDir(uuiddir, "*", this_name))
|
||||
|
||||
LLDirIterator iter(uuiddir, "*");
|
||||
while (iter.next(this_name))
|
||||
{
|
||||
if (this_name.length() > best.length() ||
|
||||
(this_name.length() == best.length() &&
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@
|
|||
#include "llfloateruipreview.h" // Own header
|
||||
|
||||
// Internal utility
|
||||
#include "lldiriterator.h"
|
||||
#include "lleventtimer.h"
|
||||
#include "llexternaleditor.h"
|
||||
#include "llrender.h"
|
||||
|
|
@ -481,9 +482,11 @@ BOOL LLFloaterUIPreview::postBuild()
|
|||
std::string language_directory;
|
||||
std::string xui_dir = get_xui_dir(); // directory containing localizations -- don't forget trailing delim
|
||||
mLanguageSelection->removeall(); // clear out anything temporarily in list from XML
|
||||
|
||||
LLDirIterator iter(xui_dir, "*");
|
||||
while(found) // for every directory
|
||||
{
|
||||
if((found = gDirUtilp->getNextFileInDir(xui_dir, "*", language_directory))) // get next directory
|
||||
if((found = iter.next(language_directory))) // get next directory
|
||||
{
|
||||
std::string full_path = xui_dir + language_directory;
|
||||
if(LLFile::isfile(full_path.c_str())) // if it's not a directory, skip it
|
||||
|
|
@ -635,42 +638,51 @@ void LLFloaterUIPreview::refreshList()
|
|||
mFileList->clearRows(); // empty list
|
||||
std::string name;
|
||||
BOOL found = TRUE;
|
||||
|
||||
LLDirIterator floater_iter(getLocalizedDirectory(), "floater_*.xml");
|
||||
while(found) // for every floater file that matches the pattern
|
||||
{
|
||||
if((found = gDirUtilp->getNextFileInDir(getLocalizedDirectory(), "floater_*.xml", name))) // get next file matching pattern
|
||||
if((found = floater_iter.next(name))) // get next file matching pattern
|
||||
{
|
||||
addFloaterEntry(name.c_str()); // and add it to the list (file name only; localization code takes care of rest of path)
|
||||
}
|
||||
}
|
||||
found = TRUE;
|
||||
|
||||
LLDirIterator inspect_iter(getLocalizedDirectory(), "inspect_*.xml");
|
||||
while(found) // for every inspector file that matches the pattern
|
||||
{
|
||||
if((found = gDirUtilp->getNextFileInDir(getLocalizedDirectory(), "inspect_*.xml", name))) // get next file matching pattern
|
||||
if((found = inspect_iter.next(name))) // get next file matching pattern
|
||||
{
|
||||
addFloaterEntry(name.c_str()); // and add it to the list (file name only; localization code takes care of rest of path)
|
||||
}
|
||||
}
|
||||
found = TRUE;
|
||||
|
||||
LLDirIterator menu_iter(getLocalizedDirectory(), "menu_*.xml");
|
||||
while(found) // for every menu file that matches the pattern
|
||||
{
|
||||
if((found = gDirUtilp->getNextFileInDir(getLocalizedDirectory(), "menu_*.xml", name))) // get next file matching pattern
|
||||
if((found = menu_iter.next(name))) // get next file matching pattern
|
||||
{
|
||||
addFloaterEntry(name.c_str()); // and add it to the list (file name only; localization code takes care of rest of path)
|
||||
}
|
||||
}
|
||||
found = TRUE;
|
||||
|
||||
LLDirIterator panel_iter(getLocalizedDirectory(), "panel_*.xml");
|
||||
while(found) // for every panel file that matches the pattern
|
||||
{
|
||||
if((found = gDirUtilp->getNextFileInDir(getLocalizedDirectory(), "panel_*.xml", name))) // get next file matching pattern
|
||||
if((found = panel_iter.next(name))) // get next file matching pattern
|
||||
{
|
||||
addFloaterEntry(name.c_str()); // and add it to the list (file name only; localization code takes care of rest of path)
|
||||
}
|
||||
}
|
||||
|
||||
found = TRUE;
|
||||
|
||||
LLDirIterator sidepanel_iter(getLocalizedDirectory(), "sidepanel_*.xml");
|
||||
while(found) // for every sidepanel file that matches the pattern
|
||||
{
|
||||
if((found = gDirUtilp->getNextFileInDir(getLocalizedDirectory(), "sidepanel_*.xml", name))) // get next file matching pattern
|
||||
if((found = sidepanel_iter.next(name))) // get next file matching pattern
|
||||
{
|
||||
addFloaterEntry(name.c_str()); // and add it to the list (file name only; localization code takes care of rest of path)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@
|
|||
#include "lltrans.h"
|
||||
#include "llviewercontrol.h"
|
||||
|
||||
#include "lldiriterator.h"
|
||||
#include "llinstantmessage.h"
|
||||
#include "llsingleton.h" // for LLSingleton
|
||||
|
||||
|
|
@ -601,7 +602,8 @@ std::string LLLogChat::oldLogFileName(std::string filename)
|
|||
//LL_INFOS("") << "Checking:" << directory << " for " << pattern << LL_ENDL;/* uncomment if you want to verify step, delete on commit */
|
||||
std::vector<std::string> allfiles;
|
||||
|
||||
while (gDirUtilp->getNextFileInDir(directory, pattern, scanResult))
|
||||
LLDirIterator iter(directory, pattern);
|
||||
while (iter.next(scanResult))
|
||||
{
|
||||
//LL_INFOS("") << "Found :" << scanResult << LL_ENDL;
|
||||
allfiles.push_back(scanResult);
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@
|
|||
#include "llfilepicker.h"
|
||||
#include "llnotifications.h"
|
||||
|
||||
#include "lldiriterator.h"
|
||||
#include "llevent.h" // LLSimpleListener
|
||||
#include "llnotificationsutil.h"
|
||||
#include "lluuid.h"
|
||||
|
|
@ -1115,7 +1116,8 @@ void LLViewerMedia::clearAllCookies()
|
|||
}
|
||||
|
||||
// the hard part: iterate over all user directories and delete the cookie file from each one
|
||||
while(gDirUtilp->getNextFileInDir(base_dir, "*_*", filename))
|
||||
LLDirIterator dir_iter(base_dir, "*_*");
|
||||
while (dir_iter.next(filename))
|
||||
{
|
||||
target = base_dir;
|
||||
target += filename;
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@
|
|||
#include "pipeline.h"
|
||||
#include "llsky.h"
|
||||
|
||||
#include "lldiriterator.h"
|
||||
#include "llfloaterreg.h"
|
||||
#include "llsliderctrl.h"
|
||||
#include "llspinctrl.h"
|
||||
|
|
@ -85,11 +86,12 @@ void LLWaterParamManager::loadAllPresets(const std::string& file_name)
|
|||
std::string path_name(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/water", ""));
|
||||
LL_DEBUGS2("AppInit", "Shaders") << "Loading Default water settings from " << path_name << LL_ENDL;
|
||||
|
||||
bool found = true;
|
||||
bool found = true;
|
||||
LLDirIterator app_settings_iter(path_name, "*.xml");
|
||||
while(found)
|
||||
{
|
||||
std::string name;
|
||||
found = gDirUtilp->getNextFileInDir(path_name, "*.xml", name);
|
||||
found = app_settings_iter.next(name);
|
||||
if(found)
|
||||
{
|
||||
|
||||
|
|
@ -111,11 +113,12 @@ void LLWaterParamManager::loadAllPresets(const std::string& file_name)
|
|||
std::string path_name2(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight/water", ""));
|
||||
LL_DEBUGS2("AppInit", "Shaders") << "Loading User water settings from " << path_name2 << LL_ENDL;
|
||||
|
||||
found = true;
|
||||
found = true;
|
||||
LLDirIterator user_settings_iter(path_name2, "*.xml");
|
||||
while(found)
|
||||
{
|
||||
std::string name;
|
||||
found = gDirUtilp->getNextFileInDir(path_name2, "*.xml", name);
|
||||
found = user_settings_iter.next(name);
|
||||
if(found)
|
||||
{
|
||||
name=name.erase(name.length()-4);
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
#include "pipeline.h"
|
||||
#include "llsky.h"
|
||||
|
||||
#include "lldiriterator.h"
|
||||
#include "llfloaterreg.h"
|
||||
#include "llsliderctrl.h"
|
||||
#include "llspinctrl.h"
|
||||
|
|
@ -100,11 +101,12 @@ void LLWLParamManager::loadPresets(const std::string& file_name)
|
|||
std::string path_name(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/skies", ""));
|
||||
LL_DEBUGS2("AppInit", "Shaders") << "Loading Default WindLight settings from " << path_name << LL_ENDL;
|
||||
|
||||
bool found = true;
|
||||
bool found = true;
|
||||
LLDirIterator app_settings_iter(path_name, "*.xml");
|
||||
while(found)
|
||||
{
|
||||
std::string name;
|
||||
found = gDirUtilp->getNextFileInDir(path_name, "*.xml", name);
|
||||
found = app_settings_iter.next(name);
|
||||
if(found)
|
||||
{
|
||||
|
||||
|
|
@ -126,11 +128,12 @@ void LLWLParamManager::loadPresets(const std::string& file_name)
|
|||
std::string path_name2(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight/skies", ""));
|
||||
LL_DEBUGS2("AppInit", "Shaders") << "Loading User WindLight settings from " << path_name2 << LL_ENDL;
|
||||
|
||||
found = true;
|
||||
found = true;
|
||||
LLDirIterator user_settings_iter(path_name2, "*.xml");
|
||||
while(found)
|
||||
{
|
||||
std::string name;
|
||||
found = gDirUtilp->getNextFileInDir(path_name2, "*.xml", name);
|
||||
found = user_settings_iter.next(name);
|
||||
if(found)
|
||||
{
|
||||
name=name.erase(name.length()-4);
|
||||
|
|
|
|||
|
|
@ -59,12 +59,6 @@ class LLDir_Mock : public LLDir
|
|||
return 0;
|
||||
}
|
||||
|
||||
BOOL getNextFileInDir(const std::string &dirname,
|
||||
const std::string &mask,
|
||||
std::string &fname)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
void getRandomFileInDir(const std::string &dirname,
|
||||
const std::string &mask,
|
||||
std::string &fname) {}
|
||||
|
|
|
|||
Loading…
Reference in New Issue