diff options
-rw-r--r-- | plugins/perl/perl.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/plugins/perl/perl.c b/plugins/perl/perl.c index b07aa651..68789828 100644 --- a/plugins/perl/perl.c +++ b/plugins/perl/perl.c @@ -72,6 +72,43 @@ thread_mbox (char *str) /* leave this before XSUB.h, to avoid readdir() being redefined */ +#ifdef WIN32 +static void +perl_auto_load_from_path (const char *path) +{ + WIN32_FIND_DATA find_data; + HANDLE find_handle; + char *search_path; + int path_len = strlen (path); + + /* +6 for \*.pl and \0 */ + search_path = malloc(path_len + 6); + sprintf (search_path, "%s\\*.pl", path); + + find_handle = FindFirstFile (search_path, &find_data); + + if (find_handle != INVALID_HANDLE_VALUE) + { + do + { + if (!(find_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY + ||find_data.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN)) + { + char *full_path = + malloc (path_len + strlen (find_data.cFileName) + 2); + sprintf (full_path, "%s\\%s", path, find_data.cFileName); + + perl_load_file (full_path); + free (full_path); + } + } + while (FindNextFile (find_handle, &find_data) != 0); + FindClose (find_handle); + } + + free (search_path); +} +#else static void perl_auto_load_from_path (const char *path) { @@ -92,6 +129,7 @@ perl_auto_load_from_path (const char *path) closedir (dir); } } +#endif static int perl_auto_load (void *unused) |