X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=source%2Ffront-end%2Fsrc%2Fosal_files_win32.c;fp=source%2Ffront-end%2Fsrc%2Fosal_files_win32.c;h=69c12c6b93968e3b8ee08958744e54a126ba1528;hb=5288f5429f38c99c73856e285d35e7d0c4c779d0;hp=0000000000000000000000000000000000000000;hpb=48d77f736bea02afeb362cff05c81375752b3015;p=mupen64plus-pandora.git diff --git a/source/front-end/src/osal_files_win32.c b/source/front-end/src/osal_files_win32.c new file mode 100644 index 0000000..69c12c6 --- /dev/null +++ b/source/front-end/src/osal_files_win32.c @@ -0,0 +1,106 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Mupen64plus-ui-console - osal_files_win32.c * + * Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ * + * Copyright (C) 2009 Richard Goedeken * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* This implements all kinds of system-dependent file handling + * + */ + +#include +#include +#include +#include + +#include "main.h" +#include "m64p_types.h" +#include "osal_preproc.h" +#include "osal_files.h" + +/* definitions for system directories to search when looking for mupen64plus plugins */ +const int osal_libsearchdirs = 1; +const char *osal_libsearchpath[1] = { ".\\" }; + +osal_lib_search *osal_library_search(const char *searchpath) +{ + osal_lib_search *head = NULL, *curr = NULL; + WIN32_FIND_DATA entry; + HANDLE hDir; + + char *pchSearchPath = (char *) malloc(strlen(searchpath) + 16); + if (pchSearchPath == NULL) + { + DebugMessage(M64MSG_ERROR, "Couldn't allocate memory for file search path in osal_library_search()!"); + return NULL; + } + sprintf(pchSearchPath, "%s\\*.dll", searchpath); + hDir = FindFirstFile(pchSearchPath, &entry); + free(pchSearchPath); + if (hDir == INVALID_HANDLE_VALUE) + return NULL; + + /* look for any shared libraries in this folder */ + do + { + osal_lib_search *newlib = NULL; + /* this is a .dll file, so add it to the list */ + newlib = (osal_lib_search *) malloc(sizeof(osal_lib_search)); + if (newlib == NULL) + { + DebugMessage(M64MSG_ERROR, "Memory allocation error in osal_library_search()!"); + osal_free_lib_list(head); + FindClose(hDir); + return NULL; + } + if (head == NULL) + { + head = curr = newlib; + } + else + { + curr->next = newlib; + curr = newlib; + } + /* set up the filepath and filename members */ + strncpy(curr->filepath, searchpath, PATH_MAX-2); + curr->filepath[PATH_MAX-2] = 0; + if (curr->filepath[strlen(curr->filepath)-1] != '\\') + strcat(curr->filepath, "\\"); + int pathlen = (int) strlen(curr->filepath); + curr->filename = curr->filepath + pathlen; + strncat(curr->filepath, entry.cFileName, PATH_MAX - pathlen - 1); + curr->filepath[PATH_MAX-1] = 0; + /* set plugin_type and next pointer */ + curr->plugin_type = (m64p_plugin_type) 0; + curr->next = NULL; + } while (FindNextFile(hDir, &entry)); + + FindClose(hDir); + return head; +} + +void osal_free_lib_list(osal_lib_search *head) +{ + while (head != NULL) + { + osal_lib_search *next = head->next; + free(head); + head = next; + } +}