diff options
| author | Seth ProductEngine <slitovchuk@productengine.com> | 2011-01-11 19:50:58 +0200 | 
|---|---|---|
| committer | Seth ProductEngine <slitovchuk@productengine.com> | 2011-01-11 19:50:58 +0200 | 
| commit | 4af9db7b79f5721d1be6b8b94dd1e0ce97782d79 (patch) | |
| tree | 293885299ec1491c8af70168c180f9d1c794e02c | |
| parent | 4e150d3271334e17bca0b9b47022fa3c529dc8c8 (diff) | |
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.
| -rw-r--r-- | indra/integration_tests/llui_libtest/llui_libtest.cpp | 5 | ||||
| -rw-r--r-- | indra/linux_updater/linux_updater.cpp | 15 | ||||
| -rw-r--r-- | indra/llvfs/lldir.cpp | 6 | ||||
| -rw-r--r-- | indra/llvfs/lldir.h | 25 | ||||
| -rw-r--r-- | indra/llvfs/lldir_linux.cpp | 62 | ||||
| -rw-r--r-- | indra/llvfs/lldir_linux.h | 1 | ||||
| -rw-r--r-- | indra/llvfs/lldir_mac.cpp | 61 | ||||
| -rw-r--r-- | indra/llvfs/lldir_mac.h | 1 | ||||
| -rw-r--r-- | indra/llvfs/lldir_solaris.cpp | 62 | ||||
| -rw-r--r-- | indra/llvfs/lldir_solaris.h | 1 | ||||
| -rw-r--r-- | indra/llvfs/lldir_win32.cpp | 61 | ||||
| -rw-r--r-- | indra/llvfs/lldir_win32.h | 3 | ||||
| -rw-r--r-- | indra/newview/llappviewer.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/llappviewerlinux.cpp | 5 | ||||
| -rw-r--r-- | indra/newview/llfloateruipreview.cpp | 26 | ||||
| -rw-r--r-- | indra/newview/lllogchat.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llviewermedia.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llwaterparammanager.cpp | 11 | ||||
| -rw-r--r-- | indra/newview/llwlparammanager.cpp | 11 | ||||
| -rw-r--r-- | indra/viewer_components/updater/tests/llupdaterservice_test.cpp | 6 | 
20 files changed, 68 insertions, 310 deletions
| diff --git a/indra/integration_tests/llui_libtest/llui_libtest.cpp b/indra/integration_tests/llui_libtest/llui_libtest.cpp index c34115ee80..217e26c3ca 100644 --- a/indra/integration_tests/llui_libtest/llui_libtest.cpp +++ b/indra/integration_tests/llui_libtest/llui_libtest.cpp @@ -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)  		{ diff --git a/indra/linux_updater/linux_updater.cpp b/indra/linux_updater/linux_updater.cpp index d909516bf8..808ab3f64f 100644 --- a/indra/linux_updater/linux_updater.cpp +++ b/indra/linux_updater/linux_updater.cpp @@ -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;  } diff --git a/indra/llvfs/lldir.cpp b/indra/llvfs/lldir.cpp index 64556bcb4c..ab7d15dfef 100644 --- a/indra/llvfs/lldir.cpp +++ b/indra/llvfs/lldir.cpp @@ -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(); diff --git a/indra/llvfs/lldir.h b/indra/llvfs/lldir.h index 42996fd051..5ee8bdb542 100644 --- a/indra/llvfs/lldir.h +++ b/indra/llvfs/lldir.h @@ -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; diff --git a/indra/llvfs/lldir_linux.cpp b/indra/llvfs/lldir_linux.cpp index 73f2336f94..4ba2f519b0 100644 --- a/indra/llvfs/lldir_linux.cpp +++ b/indra/llvfs/lldir_linux.cpp @@ -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 */  diff --git a/indra/llvfs/lldir_linux.h b/indra/llvfs/lldir_linux.h index 451e81ae93..ff4c48759a 100644 --- a/indra/llvfs/lldir_linux.h +++ b/indra/llvfs/lldir_linux.h @@ -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(); diff --git a/indra/llvfs/lldir_mac.cpp b/indra/llvfs/lldir_mac.cpp index 445285aa43..2d039527c0 100644 --- a/indra/llvfs/lldir_mac.cpp +++ b/indra/llvfs/lldir_mac.cpp @@ -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; diff --git a/indra/llvfs/lldir_mac.h b/indra/llvfs/lldir_mac.h index 4eac3c3ae6..e60d5e41c2 100644 --- a/indra/llvfs/lldir_mac.h +++ b/indra/llvfs/lldir_mac.h @@ -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(); diff --git a/indra/llvfs/lldir_solaris.cpp b/indra/llvfs/lldir_solaris.cpp index 515fd66b6e..21f8c3acdb 100644 --- a/indra/llvfs/lldir_solaris.cpp +++ b/indra/llvfs/lldir_solaris.cpp @@ -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 */  diff --git a/indra/llvfs/lldir_solaris.h b/indra/llvfs/lldir_solaris.h index 4a1794f539..f7e1a6301d 100644 --- a/indra/llvfs/lldir_solaris.h +++ b/indra/llvfs/lldir_solaris.h @@ -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: diff --git a/indra/llvfs/lldir_win32.cpp b/indra/llvfs/lldir_win32.cpp index 33718e520d..2f96fbbbc1 100644 --- a/indra/llvfs/lldir_win32.cpp +++ b/indra/llvfs/lldir_win32.cpp @@ -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]; diff --git a/indra/llvfs/lldir_win32.h b/indra/llvfs/lldir_win32.h index 4c932c932c..19c610eb8b 100644 --- a/indra/llvfs/lldir_win32.h +++ b/indra/llvfs/lldir_win32.h @@ -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;  }; diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 3a98c23e05..b5248316a1 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -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; diff --git a/indra/newview/llappviewerlinux.cpp b/indra/newview/llappviewerlinux.cpp index 898cc1c0ba..fc7a27e5e0 100644 --- a/indra/newview/llappviewerlinux.cpp +++ b/indra/newview/llappviewerlinux.cpp @@ -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() && diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp index 11b3379814..182d3d23f1 100644 --- a/indra/newview/llfloateruipreview.cpp +++ b/indra/newview/llfloateruipreview.cpp @@ -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)  		} diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp index 9adf374c71..b09cfbe907 100644 --- a/indra/newview/lllogchat.cpp +++ b/indra/newview/lllogchat.cpp @@ -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); diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index d3b6dcd86f..8a0d0a6623 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -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; diff --git a/indra/newview/llwaterparammanager.cpp b/indra/newview/llwaterparammanager.cpp index d239347810..4f6ec4ca61 100644 --- a/indra/newview/llwaterparammanager.cpp +++ b/indra/newview/llwaterparammanager.cpp @@ -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); diff --git a/indra/newview/llwlparammanager.cpp b/indra/newview/llwlparammanager.cpp index e5f52dfc97..848efcbb49 100644 --- a/indra/newview/llwlparammanager.cpp +++ b/indra/newview/llwlparammanager.cpp @@ -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); diff --git a/indra/viewer_components/updater/tests/llupdaterservice_test.cpp b/indra/viewer_components/updater/tests/llupdaterservice_test.cpp index 88ab5a2284..e19d5724f1 100644 --- a/indra/viewer_components/updater/tests/llupdaterservice_test.cpp +++ b/indra/viewer_components/updater/tests/llupdaterservice_test.cpp @@ -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) {} | 
