| 123456789101112131415161718192021222324252627282930313233343536373839404142 | 
							- /*
 
-  * Wrapper function around GetSystemDirectory that deals with
 
-  * allocating the output buffer, and also caches the result for future
 
-  * calls.
 
-  */
 
- #include "putty.h"
 
- #ifdef WINSCP
 
- bool free_sysdir = false;
 
- void win_misc_cleanup()
 
- {
 
-     free_sysdir = true;
 
-     get_system_dir();
 
-     free_sysdir = false;
 
- }
 
- #endif
 
- const char *get_system_dir(void)
 
- {
 
-     static char *sysdir = NULL;
 
-     static size_t sysdirsize = 0;
 
-     #ifdef WINSCP
 
-     if (free_sysdir)
 
-     {
 
-         sfree(sysdir);
 
-         return NULL;
 
-     }
 
-     #endif
 
-     if (!sysdir) {
 
-         size_t len;
 
-         while ((len = GetSystemDirectory(sysdir, sysdirsize)) >= sysdirsize)
 
-             sgrowarray(sysdir, sysdirsize, len);
 
-     }
 
-     return sysdir;
 
- }
 
 
  |