[mupen64plus-core] 210/310: Imported Upstream version 2.0~rc3+3+5d46baa3dd76
Sven Eckelmann
ecsv-guest at moszumanska.debian.org
Thu Nov 26 05:58:01 UTC 2015
This is an automated email from the git hooks/post-receive script.
ecsv-guest pushed a commit to branch armhf_test
in repository mupen64plus-core.
commit e2abd2ae3497e4a7d78826c5720a9eac80df17c9
Author: Sven Eckelmann <sven at narfation.org>
Date: Wed Jun 5 11:04:58 2013 +0200
Imported Upstream version 2.0~rc3+3+5d46baa3dd76
---
projects/msvc11/mupen64plus-core.vcxproj | 12 +-
src/api/vidext.c | 3 +-
src/main/list.h | 13 +-
src/main/rom.c | 4 +-
src/main/util.c | 2 +-
src/main/util.h | 9 +-
src/main/workqueue.h | 9 +-
src/osal/files_win32.c | 42 +++---
src/osal/preproc.h | 2 +
src/osd/osd.cpp | 5 +-
src/osd/osd.h | 17 +--
src/r4300/pure_interp.c | 2 +-
src/r4300/x86/assemble.h | 231 ++++++++++++++++---------------
tools/install_binary_bundle.sh | 22 +++
tools/uninstall_binary_bundle.sh | 39 ++++--
15 files changed, 242 insertions(+), 170 deletions(-)
diff --git a/projects/msvc11/mupen64plus-core.vcxproj b/projects/msvc11/mupen64plus-core.vcxproj
index cd14133..8902c9d 100644
--- a/projects/msvc11/mupen64plus-core.vcxproj
+++ b/projects/msvc11/mupen64plus-core.vcxproj
@@ -20,10 +20,12 @@
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
@@ -50,11 +52,17 @@
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <TargetName>mupen64plus</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <TargetName>mupen64plus</TargetName>
+ </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\src;..\..\..\mupen64plus-win32-deps\SDL-1.2.14\include;..\..\..\mupen64plus-win32-deps\zlib-1.2.3\include;..\..\..\mupen64plus-win32-deps\libpng-1.2.37\include;..\..\..\mupen64plus-win32-deps\freetype-2.3.5-1\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;DYNAREC;inline=__inline;M64P_OSD;M64P_PARALLEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;DYNAREC;M64P_OSD;M64P_PARALLEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -75,7 +83,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\src;..\..\..\mupen64plus-win32-deps\SDL-1.2.14\include;..\..\..\mupen64plus-win32-deps\zlib-1.2.3\include;..\..\..\mupen64plus-win32-deps\libpng-1.2.37\include;..\..\..\mupen64plus-win32-deps\freetype-2.3.5-1\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;DYNAREC;inline=__inline;M64P_OSD;M64P_PARALLEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;DYNAREC;M64P_OSD;M64P_PARALLEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
diff --git a/src/api/vidext.c b/src/api/vidext.c
index c75428e..9af2aae 100644
--- a/src/api/vidext.c
+++ b/src/api/vidext.c
@@ -259,10 +259,11 @@ EXPORT m64p_error CALL VidExt_ResizeWindow(int Width, int Height)
/* call video extension override if necessary */
if (l_VideoExtensionActive)
{
+ m64p_error rval;
// shut down the OSD
osd_exit();
// re-create the OGL context
- m64p_error rval = (*l_ExternalVideoFuncTable.VidExtFuncResizeWindow)(Width, Height);
+ rval = (*l_ExternalVideoFuncTable.VidExtFuncResizeWindow)(Width, Height);
if (rval == M64ERR_SUCCESS)
{
StateChanged(M64CORE_VIDEO_SIZE, (Width << 16) | Height);
diff --git a/src/main/list.h b/src/main/list.h
index 343892c..8ca24a4 100644
--- a/src/main/list.h
+++ b/src/main/list.h
@@ -27,6 +27,7 @@ extern "C" {
#endif
#include <stddef.h>
+#include "osal/preproc.h"
struct list_head {
struct list_head *prev;
@@ -36,13 +37,13 @@ struct list_head {
#define LIST_HEAD(list) \
struct list_head list = { &(list), &(list) }
-static inline void INIT_LIST_HEAD(struct list_head *head)
+static osal_inline void INIT_LIST_HEAD(struct list_head *head)
{
head->next = head;
head->prev = head;
}
-static inline void list_add(struct list_head *new_item, struct list_head *head)
+static osal_inline void list_add(struct list_head *new_item, struct list_head *head)
{
struct list_head *next = head->next;
@@ -52,7 +53,7 @@ static inline void list_add(struct list_head *new_item, struct list_head *head)
head->next = new_item;
}
-static inline void list_add_tail(struct list_head *new_item, struct list_head *head)
+static osal_inline void list_add_tail(struct list_head *new_item, struct list_head *head)
{
struct list_head *prev = head->prev;
@@ -62,7 +63,7 @@ static inline void list_add_tail(struct list_head *new_item, struct list_head *h
head->prev = new_item;
}
-static inline void list_del(struct list_head *entry)
+static osal_inline void list_del(struct list_head *entry)
{
struct list_head *next = entry->next;
struct list_head *prev = entry->prev;
@@ -71,13 +72,13 @@ static inline void list_del(struct list_head *entry)
prev->next = next;
}
-static inline void list_del_init(struct list_head *entry)
+static osal_inline void list_del_init(struct list_head *entry)
{
list_del(entry);
INIT_LIST_HEAD(entry);
}
-static inline int list_empty(const struct list_head *head)
+static osal_inline int list_empty(const struct list_head *head)
{
return (head->next == head);
}
diff --git a/src/main/rom.c b/src/main/rom.c
index 1684cb9..be26b0c 100644
--- a/src/main/rom.c
+++ b/src/main/rom.c
@@ -59,7 +59,7 @@ m64p_rom_header ROM_HEADER;
rom_params ROM_PARAMS;
m64p_rom_settings ROM_SETTINGS;
-static m64p_system_type rom_country_code_to_system_type(char country_code);
+static m64p_system_type rom_country_code_to_system_type(unsigned short country_code);
static int rom_system_type_to_ai_dac_rate(m64p_system_type system_type);
static int rom_system_type_to_vi_limit(m64p_system_type system_type);
@@ -236,7 +236,7 @@ m64p_error close_rom(void)
/* ROM utility functions */
// Get the system type associated to a ROM country code.
-static m64p_system_type rom_country_code_to_system_type(char country_code)
+static m64p_system_type rom_country_code_to_system_type(unsigned short country_code)
{
switch (country_code)
{
diff --git a/src/main/util.c b/src/main/util.c
index 246610c..b92c762 100644
--- a/src/main/util.c
+++ b/src/main/util.c
@@ -122,7 +122,7 @@ void to_big_endian_buffer(void *buffer, size_t length, size_t count)
/**********************
GUI utilities
**********************/
-void countrycodestring(char countrycode, char *string)
+void countrycodestring(unsigned short countrycode, char *string)
{
switch (countrycode)
{
diff --git a/src/main/util.h b/src/main/util.h
index 46b0560..c5015f6 100644
--- a/src/main/util.h
+++ b/src/main/util.h
@@ -28,6 +28,7 @@ extern "C" {
#endif
#include <string.h>
+#include "osal/preproc.h"
/**********************
File utilities
@@ -64,7 +65,7 @@ file_status_t write_to_file(const char *filename, const void *data, size_t size)
* added in relatively recent versions. In addition, GCC can detect the byte
* swap code and optimize it with a high enough optimization level. */
-static inline unsigned short m64p_swap16(unsigned short x)
+static osal_inline unsigned short m64p_swap16(unsigned short x)
{
#ifdef _MSC_VER
return _byteswap_ushort(x);
@@ -74,7 +75,7 @@ static inline unsigned short m64p_swap16(unsigned short x)
#endif
}
-static inline unsigned int m64p_swap32(unsigned int x)
+static osal_inline unsigned int m64p_swap32(unsigned int x)
{
#ifdef _MSC_VER
return _byteswap_ulong(x); // long is always 32-bit in Windows
@@ -86,7 +87,7 @@ static inline unsigned int m64p_swap32(unsigned int x)
#endif
}
-static inline unsigned long long int m64p_swap64(unsigned long long int x)
+static osal_inline unsigned long long int m64p_swap64(unsigned long long int x)
{
#ifdef _MSC_VER
return _byteswap_uint64(x);
@@ -127,7 +128,7 @@ void to_big_endian_buffer(void *buffer, size_t length, size_t count);
/**********************
GUI utilities
**********************/
-void countrycodestring(char countrycode, char *string);
+void countrycodestring(unsigned short countrycode, char *string);
void imagestring(unsigned char imagetype, char *string);
/**********************
diff --git a/src/main/workqueue.h b/src/main/workqueue.h
index f6bc186..f0f7070 100644
--- a/src/main/workqueue.h
+++ b/src/main/workqueue.h
@@ -23,6 +23,7 @@
#define __WORKQUEUE_H__
#include "list.h"
+#include "osal/preproc.h"
struct work_struct *work;
typedef void (*work_func_t)(struct work_struct *work);
@@ -31,7 +32,7 @@ struct work_struct {
struct list_head list;
};
-static inline void init_work(struct work_struct *work, work_func_t func)
+static osal_inline void init_work(struct work_struct *work, work_func_t func)
{
INIT_LIST_HEAD(&work->list);
work->func = func;
@@ -45,16 +46,16 @@ int queue_work(struct work_struct *work);
#else
-static inline int workqueue_init(void)
+static osal_inline int workqueue_init(void)
{
return 0;
}
-static inline void workqueue_shutdown(void)
+static osal_inline void workqueue_shutdown(void)
{
}
-static inline int queue_work(struct work_struct *work)
+static osal_inline int queue_work(struct work_struct *work)
{
work->func(work);
return 0;
diff --git a/src/osal/files_win32.c b/src/osal/files_win32.c
index 4993f03..933aa20 100644
--- a/src/osal/files_win32.c
+++ b/src/osal/files_win32.c
@@ -77,42 +77,52 @@ static int search_dir_file(char *destpath, const char *path, const char *filenam
int osal_mkdirp(const char *dirpath, int mode)
{
- char *mypath, *currpath;
+ char *mypath, *currpath, *lastchar;
struct _stat fileinfo;
- // Terminate quickly if the path already exists
- if (_stat(dirpath, &fileinfo) == 0 && (fileinfo.st_mode & _S_IFDIR))
- return 0;
-
- // Create partial paths
- mypath = currpath = strdup(dirpath);
+ // Create a copy of the path, so we can modify it
+ mypath = currpath = _strdup(dirpath);
if (mypath == NULL)
return 1;
+ // if the directory path ends with a separator, remove it
+ lastchar = mypath + strlen(mypath) - 1;
+ if (strchr(OSAL_DIR_SEPARATORS, *lastchar) != NULL)
+ *lastchar = 0;
+
+ // Terminate quickly if the path already exists
+ if (_stat(mypath, &fileinfo) == 0 && (fileinfo.st_mode & _S_IFDIR))
+ goto goodexit;
+
while ((currpath = strpbrk(currpath + 1, OSAL_DIR_SEPARATORS)) != NULL)
{
+ // if slash is right after colon, then we are looking at drive name prefix (C:\) and should
+ // just skip it, because _stat and _mkdir will both fail for "C:"
+ if (currpath > mypath && currpath[-1] == ':')
+ continue;
*currpath = '\0';
if (_stat(mypath, &fileinfo) != 0)
{
if (_mkdir(mypath) != 0)
- break;
+ goto errorexit;
}
- else
+ else if (!(fileinfo.st_mode & _S_IFDIR))
{
- if (!(fileinfo.st_mode & _S_IFDIR))
- break;
+ goto errorexit;
}
*currpath = OSAL_DIR_SEPARATORS[0];
}
- free(mypath);
- if (currpath != NULL)
- return 1;
// Create full path
- if (_stat(dirpath, &fileinfo) != 0 && _mkdir(dirpath) != 0)
- return 1;
+ if (_mkdir(mypath) != 0)
+ goto errorexit;
+goodexit:
+ free(mypath);
return 0;
+errorexit:
+ free(mypath);
+ return 1;
}
const char * osal_get_shared_filepath(const char *filename, const char *firstsearch, const char *secondsearch)
diff --git a/src/osal/preproc.h b/src/osal/preproc.h
index bf00df7..d6ad2b1 100644
--- a/src/osal/preproc.h
+++ b/src/osal/preproc.h
@@ -29,6 +29,7 @@
// macros
#define OSAL_BREAKPOINT_INTERRUPT __asm{ int 3 };
#define ALIGN(BYTES,DATA) __declspec(align(BYTES)) DATA;
+ #define osal_inline __inline
// string functions
#define osal_insensitive_strcmp(x, y) _stricmp(x, y)
@@ -44,6 +45,7 @@
// macros
#define OSAL_BREAKPOINT_INTERRUPT asm(" int $3; ");
#define ALIGN(BYTES,DATA) DATA __attribute__((aligned(BYTES)));
+ #define osal_inline inline
// string functions
#define osal_insensitive_strcmp(x, y) strcasecmp(x, y)
diff --git a/src/osd/osd.cpp b/src/osd/osd.cpp
index c4826ee..c06b9bb 100644
--- a/src/osd/osd.cpp
+++ b/src/osd/osd.cpp
@@ -276,8 +276,9 @@ void osd_exit(void)
// delete message queue
SDL_LockMutex(osd_list_lock);
list_for_each_entry_safe(msg, safe, &l_messageQueue, osd_message_t, list) {
- free(msg->text);
- free(msg);
+ osd_remove_message(msg);
+ if (!msg->user_managed)
+ free(msg);
}
SDL_UnlockMutex(osd_list_lock);
diff --git a/src/osd/osd.h b/src/osd/osd.h
index 199ac0d..bbdd699 100644
--- a/src/osd/osd.h
+++ b/src/osd/osd.h
@@ -23,6 +23,7 @@
#define __OSD_H__
#include "main/list.h"
+#include "osal/preproc.h"
/******************************************************************
osd_corner
@@ -100,36 +101,36 @@ void osd_message_set_user_managed(osd_message_t *);
#else
-static inline void osd_init(int width, int height)
+static osal_inline void osd_init(int width, int height)
{
}
-static inline void osd_exit(void)
+static osal_inline void osd_exit(void)
{
}
-static inline void osd_render(void)
+static osal_inline void osd_render(void)
{
}
-static inline osd_message_t * osd_new_message(enum osd_corner eCorner, const char *fmt, ...)
+static osal_inline osd_message_t * osd_new_message(enum osd_corner eCorner, const char *fmt, ...)
{
return NULL;
}
-static inline void osd_update_message(osd_message_t *msg, const char *fmt, ...)
+static osal_inline void osd_update_message(osd_message_t *msg, const char *fmt, ...)
{
}
-static inline void osd_delete_message(osd_message_t *msg)
+static osal_inline void osd_delete_message(osd_message_t *msg)
{
}
-static inline void osd_message_set_static(osd_message_t *msg)
+static osal_inline void osd_message_set_static(osd_message_t *msg)
{
}
-static inline void osd_message_set_user_managed(osd_message_t *msg)
+static osal_inline void osd_message_set_user_managed(osd_message_t *msg)
{
}
diff --git a/src/r4300/pure_interp.c b/src/r4300/pure_interp.c
index 32083b7..0ddcf42 100644
--- a/src/r4300/pure_interp.c
+++ b/src/r4300/pure_interp.c
@@ -95,7 +95,7 @@ static void prefetch(void);
} \
else name(); \
}
-#define CHECK_MEMORY(x)
+#define CHECK_MEMORY()
#include "interpreter.def"
diff --git a/src/r4300/x86/assemble.h b/src/r4300/x86/assemble.h
index 9b75f89..83516fc 100644
--- a/src/r4300/x86/assemble.h
+++ b/src/r4300/x86/assemble.h
@@ -24,6 +24,7 @@
#include "r4300/recomph.h"
#include "api/callbacks.h"
+#include "osal/preproc.h"
#include <stdlib.h>
@@ -64,7 +65,7 @@ void jump_start_rel32(void);
void jump_end_rel32(void);
void add_jump(unsigned int pc_addr, unsigned int mi_addr);
-static inline void put8(unsigned char octet)
+static osal_inline void put8(unsigned char octet)
{
(*inst_pointer)[code_length] = octet;
code_length++;
@@ -75,7 +76,7 @@ static inline void put8(unsigned char octet)
}
}
-static inline void put32(unsigned int dword)
+static osal_inline void put32(unsigned int dword)
{
if ((code_length+4) >= max_code_length)
{
@@ -86,26 +87,26 @@ static inline void put32(unsigned int dword)
code_length+=4;
}
-static inline void mov_eax_memoffs32(unsigned int *memoffs32)
+static osal_inline void mov_eax_memoffs32(unsigned int *memoffs32)
{
put8(0xA1);
put32((unsigned int)(memoffs32));
}
-static inline void mov_memoffs32_eax(unsigned int *memoffs32)
+static osal_inline void mov_memoffs32_eax(unsigned int *memoffs32)
{
put8(0xA3);
put32((unsigned int)(memoffs32));
}
-static inline void mov_m8_reg8(unsigned char *m8, int reg8)
+static osal_inline void mov_m8_reg8(unsigned char *m8, int reg8)
{
put8(0x88);
put8((reg8 << 3) | 5);
put32((unsigned int)(m8));
}
-static inline void mov_reg16_m16(int reg16, unsigned short *m16)
+static osal_inline void mov_reg16_m16(int reg16, unsigned short *m16)
{
put8(0x66);
put8(0x8B);
@@ -113,7 +114,7 @@ static inline void mov_reg16_m16(int reg16, unsigned short *m16)
put32((unsigned int)(m16));
}
-static inline void mov_m16_reg16(unsigned short *m16, int reg16)
+static osal_inline void mov_m16_reg16(unsigned short *m16, int reg16)
{
put8(0x66);
put8(0x89);
@@ -121,27 +122,27 @@ static inline void mov_m16_reg16(unsigned short *m16, int reg16)
put32((unsigned int)(m16));
}
-static inline void cmp_reg32_m32(int reg32, unsigned int *m32)
+static osal_inline void cmp_reg32_m32(int reg32, unsigned int *m32)
{
put8(0x3B);
put8((reg32 << 3) | 5);
put32((unsigned int)(m32));
}
-static inline void cmp_reg32_reg32(int reg1, int reg2)
+static osal_inline void cmp_reg32_reg32(int reg1, int reg2)
{
put8(0x39);
put8((reg2 << 3) | reg1 | 0xC0);
}
-static inline void cmp_reg32_imm8(int reg32, unsigned char imm8)
+static osal_inline void cmp_reg32_imm8(int reg32, unsigned char imm8)
{
put8(0x83);
put8(0xF8 + reg32);
put8(imm8);
}
-static inline void cmp_preg32pimm32_imm8(int reg32, unsigned int imm32, unsigned char imm8)
+static osal_inline void cmp_preg32pimm32_imm8(int reg32, unsigned int imm32, unsigned char imm8)
{
put8(0x80);
put8(0xB8 + reg32);
@@ -149,21 +150,21 @@ static inline void cmp_preg32pimm32_imm8(int reg32, unsigned int imm32, unsigned
put8(imm8);
}
-static inline void cmp_reg32_imm32(int reg32, unsigned int imm32)
+static osal_inline void cmp_reg32_imm32(int reg32, unsigned int imm32)
{
put8(0x81);
put8(0xF8 + reg32);
put32(imm32);
}
-static inline void test_reg32_imm32(int reg32, unsigned int imm32)
+static osal_inline void test_reg32_imm32(int reg32, unsigned int imm32)
{
put8(0xF7);
put8(0xC0 + reg32);
put32(imm32);
}
-static inline void test_m32_imm32(unsigned int *m32, unsigned int imm32)
+static osal_inline void test_m32_imm32(unsigned int *m32, unsigned int imm32)
{
put8(0xF7);
put8(0x05);
@@ -171,131 +172,131 @@ static inline void test_m32_imm32(unsigned int *m32, unsigned int imm32)
put32(imm32);
}
-static inline void add_m32_reg32(unsigned int *m32, int reg32)
+static osal_inline void add_m32_reg32(unsigned int *m32, int reg32)
{
put8(0x01);
put8((reg32 << 3) | 5);
put32((unsigned int)(m32));
}
-static inline void sub_reg32_m32(int reg32, unsigned int *m32)
+static osal_inline void sub_reg32_m32(int reg32, unsigned int *m32)
{
put8(0x2B);
put8((reg32 << 3) | 5);
put32((unsigned int)(m32));
}
-static inline void sub_reg32_reg32(int reg1, int reg2)
+static osal_inline void sub_reg32_reg32(int reg1, int reg2)
{
put8(0x29);
put8((reg2 << 3) | reg1 | 0xC0);
}
-static inline void sbb_reg32_reg32(int reg1, int reg2)
+static osal_inline void sbb_reg32_reg32(int reg1, int reg2)
{
put8(0x19);
put8((reg2 << 3) | reg1 | 0xC0);
}
-static inline void sub_reg32_imm32(int reg32, unsigned int imm32)
+static osal_inline void sub_reg32_imm32(int reg32, unsigned int imm32)
{
put8(0x81);
put8(0xE8 + reg32);
put32(imm32);
}
-static inline void sub_eax_imm32(unsigned int imm32)
+static osal_inline void sub_eax_imm32(unsigned int imm32)
{
put8(0x2D);
put32(imm32);
}
-static inline void jne_rj(unsigned char saut)
+static osal_inline void jne_rj(unsigned char saut)
{
put8(0x75);
put8(saut);
}
-static inline void je_rj(unsigned char saut)
+static osal_inline void je_rj(unsigned char saut)
{
put8(0x74);
put8(saut);
}
-static inline void jb_rj(unsigned char saut)
+static osal_inline void jb_rj(unsigned char saut)
{
put8(0x72);
put8(saut);
}
-static inline void jbe_rj(unsigned char saut)
+static osal_inline void jbe_rj(unsigned char saut)
{
put8(0x76);
put8(saut);
}
-static inline void ja_rj(unsigned char saut)
+static osal_inline void ja_rj(unsigned char saut)
{
put8(0x77);
put8(saut);
}
-static inline void jae_rj(unsigned char saut)
+static osal_inline void jae_rj(unsigned char saut)
{
put8(0x73);
put8(saut);
}
-static inline void jle_rj(unsigned char saut)
+static osal_inline void jle_rj(unsigned char saut)
{
put8(0x7E);
put8(saut);
}
-static inline void jge_rj(unsigned char saut)
+static osal_inline void jge_rj(unsigned char saut)
{
put8(0x7D);
put8(saut);
}
-static inline void jg_rj(unsigned char saut)
+static osal_inline void jg_rj(unsigned char saut)
{
put8(0x7F);
put8(saut);
}
-static inline void jl_rj(unsigned char saut)
+static osal_inline void jl_rj(unsigned char saut)
{
put8(0x7C);
put8(saut);
}
-static inline void jp_rj(unsigned char saut)
+static osal_inline void jp_rj(unsigned char saut)
{
put8(0x7A);
put8(saut);
}
-static inline void je_near_rj(unsigned int saut)
+static osal_inline void je_near_rj(unsigned int saut)
{
put8(0x0F);
put8(0x84);
put32(saut);
}
-static inline void mov_reg32_imm32(int reg32, unsigned int imm32)
+static osal_inline void mov_reg32_imm32(int reg32, unsigned int imm32)
{
put8(0xB8+reg32);
put32(imm32);
}
-static inline void jmp_imm_short(char saut)
+static osal_inline void jmp_imm_short(char saut)
{
put8(0xEB);
put8(saut);
}
-static inline void or_m32_imm32(unsigned int *m32, unsigned int imm32)
+static osal_inline void or_m32_imm32(unsigned int *m32, unsigned int imm32)
{
put8(0x81);
put8(0x0D);
@@ -303,19 +304,19 @@ static inline void or_m32_imm32(unsigned int *m32, unsigned int imm32)
put32(imm32);
}
-static inline void or_reg32_reg32(unsigned int reg1, unsigned int reg2)
+static osal_inline void or_reg32_reg32(unsigned int reg1, unsigned int reg2)
{
put8(0x09);
put8(0xC0 | (reg2 << 3) | reg1);
}
-static inline void and_reg32_reg32(unsigned int reg1, unsigned int reg2)
+static osal_inline void and_reg32_reg32(unsigned int reg1, unsigned int reg2)
{
put8(0x21);
put8(0xC0 | (reg2 << 3) | reg1);
}
-static inline void and_m32_imm32(unsigned int *m32, unsigned int imm32)
+static osal_inline void and_m32_imm32(unsigned int *m32, unsigned int imm32)
{
put8(0x81);
put8(0x25);
@@ -323,13 +324,13 @@ static inline void and_m32_imm32(unsigned int *m32, unsigned int imm32)
put32(imm32);
}
-static inline void xor_reg32_reg32(unsigned int reg1, unsigned int reg2)
+static osal_inline void xor_reg32_reg32(unsigned int reg1, unsigned int reg2)
{
put8(0x31);
put8(0xC0 | (reg2 << 3) | reg1);
}
-static inline void sub_m32_imm32(unsigned int *m32, unsigned int imm32)
+static osal_inline void sub_m32_imm32(unsigned int *m32, unsigned int imm32)
{
put8(0x81);
put8(0x2D);
@@ -337,21 +338,21 @@ static inline void sub_m32_imm32(unsigned int *m32, unsigned int imm32)
put32(imm32);
}
-static inline void add_reg32_imm32(unsigned int reg32, unsigned int imm32)
+static osal_inline void add_reg32_imm32(unsigned int reg32, unsigned int imm32)
{
put8(0x81);
put8(0xC0+reg32);
put32(imm32);
}
-static inline void inc_m32(unsigned int *m32)
+static osal_inline void inc_m32(unsigned int *m32)
{
put8(0xFF);
put8(0x05);
put32((unsigned int)(m32));
}
-static inline void cmp_m32_imm32(unsigned int *m32, unsigned int imm32)
+static osal_inline void cmp_m32_imm32(unsigned int *m32, unsigned int imm32)
{
put8(0x81);
put8(0x3D);
@@ -359,13 +360,13 @@ static inline void cmp_m32_imm32(unsigned int *m32, unsigned int imm32)
put32(imm32);
}
-static inline void cmp_eax_imm32(unsigned int imm32)
+static osal_inline void cmp_eax_imm32(unsigned int imm32)
{
put8(0x3D);
put32(imm32);
}
-static inline void mov_m32_imm32(unsigned int *m32, unsigned int imm32)
+static osal_inline void mov_m32_imm32(unsigned int *m32, unsigned int imm32)
{
put8(0xC7);
put8(0x05);
@@ -373,64 +374,64 @@ static inline void mov_m32_imm32(unsigned int *m32, unsigned int imm32)
put32(imm32);
}
-static inline void jmp(unsigned int mi_addr)
+static osal_inline void jmp(unsigned int mi_addr)
{
put8(0xE9);
put32(0);
add_jump(code_length-4, mi_addr);
}
-static inline void cdq(void)
+static osal_inline void cdq(void)
{
put8(0x99);
}
-static inline void mov_m32_reg32(unsigned int *m32, unsigned int reg32)
+static osal_inline void mov_m32_reg32(unsigned int *m32, unsigned int reg32)
{
put8(0x89);
put8((reg32 << 3) | 5);
put32((unsigned int)(m32));
}
-static inline void call_reg32(unsigned int reg32)
+static osal_inline void call_reg32(unsigned int reg32)
{
put8(0xFF);
put8(0xD0+reg32);
}
-static inline void shr_reg32_imm8(unsigned int reg32, unsigned char imm8)
+static osal_inline void shr_reg32_imm8(unsigned int reg32, unsigned char imm8)
{
put8(0xC1);
put8(0xE8+reg32);
put8(imm8);
}
-static inline void shr_reg32_cl(unsigned int reg32)
+static osal_inline void shr_reg32_cl(unsigned int reg32)
{
put8(0xD3);
put8(0xE8+reg32);
}
-static inline void sar_reg32_cl(unsigned int reg32)
+static osal_inline void sar_reg32_cl(unsigned int reg32)
{
put8(0xD3);
put8(0xF8+reg32);
}
-static inline void shl_reg32_cl(unsigned int reg32)
+static osal_inline void shl_reg32_cl(unsigned int reg32)
{
put8(0xD3);
put8(0xE0+reg32);
}
-static inline void shld_reg32_reg32_cl(unsigned int reg1, unsigned int reg2)
+static osal_inline void shld_reg32_reg32_cl(unsigned int reg1, unsigned int reg2)
{
put8(0x0F);
put8(0xA5);
put8(0xC0 | (reg2 << 3) | reg1);
}
-static inline void shld_reg32_reg32_imm8(unsigned int reg1, unsigned int reg2, unsigned char imm8)
+static osal_inline void shld_reg32_reg32_imm8(unsigned int reg1, unsigned int reg2, unsigned char imm8)
{
put8(0x0F);
put8(0xA4);
@@ -438,21 +439,21 @@ static inline void shld_reg32_reg32_imm8(unsigned int reg1, unsigned int reg2, u
put8(imm8);
}
-static inline void shrd_reg32_reg32_cl(unsigned int reg1, unsigned int reg2)
+static osal_inline void shrd_reg32_reg32_cl(unsigned int reg1, unsigned int reg2)
{
put8(0x0F);
put8(0xAD);
put8(0xC0 | (reg2 << 3) | reg1);
}
-static inline void sar_reg32_imm8(unsigned int reg32, unsigned char imm8)
+static osal_inline void sar_reg32_imm8(unsigned int reg32, unsigned char imm8)
{
put8(0xC1);
put8(0xF8+reg32);
put8(imm8);
}
-static inline void shrd_reg32_reg32_imm8(unsigned int reg1, unsigned int reg2, unsigned char imm8)
+static osal_inline void shrd_reg32_reg32_imm8(unsigned int reg1, unsigned int reg2, unsigned char imm8)
{
put8(0x0F);
put8(0xAC);
@@ -460,82 +461,82 @@ static inline void shrd_reg32_reg32_imm8(unsigned int reg1, unsigned int reg2, u
put8(imm8);
}
-static inline void mul_m32(unsigned int *m32)
+static osal_inline void mul_m32(unsigned int *m32)
{
put8(0xF7);
put8(0x25);
put32((unsigned int)(m32));
}
-static inline void imul_reg32(unsigned int reg32)
+static osal_inline void imul_reg32(unsigned int reg32)
{
put8(0xF7);
put8(0xE8+reg32);
}
-static inline void mul_reg32(unsigned int reg32)
+static osal_inline void mul_reg32(unsigned int reg32)
{
put8(0xF7);
put8(0xE0+reg32);
}
-static inline void idiv_reg32(unsigned int reg32)
+static osal_inline void idiv_reg32(unsigned int reg32)
{
put8(0xF7);
put8(0xF8+reg32);
}
-static inline void div_reg32(unsigned int reg32)
+static osal_inline void div_reg32(unsigned int reg32)
{
put8(0xF7);
put8(0xF0+reg32);
}
-static inline void add_reg32_reg32(unsigned int reg1, unsigned int reg2)
+static osal_inline void add_reg32_reg32(unsigned int reg1, unsigned int reg2)
{
put8(0x01);
put8(0xC0 | (reg2 << 3) | reg1);
}
-static inline void adc_reg32_reg32(unsigned int reg1, unsigned int reg2)
+static osal_inline void adc_reg32_reg32(unsigned int reg1, unsigned int reg2)
{
put8(0x11);
put8(0xC0 | (reg2 << 3) | reg1);
}
-static inline void add_reg32_m32(unsigned int reg32, unsigned int *m32)
+static osal_inline void add_reg32_m32(unsigned int reg32, unsigned int *m32)
{
put8(0x03);
put8((reg32 << 3) | 5);
put32((unsigned int)(m32));
}
-static inline void adc_reg32_imm32(unsigned int reg32, unsigned int imm32)
+static osal_inline void adc_reg32_imm32(unsigned int reg32, unsigned int imm32)
{
put8(0x81);
put8(0xD0 + reg32);
put32(imm32);
}
-static inline void jmp_reg32(unsigned int reg32)
+static osal_inline void jmp_reg32(unsigned int reg32)
{
put8(0xFF);
put8(0xE0 + reg32);
}
-static inline void mov_reg32_preg32(unsigned int reg1, unsigned int reg2)
+static osal_inline void mov_reg32_preg32(unsigned int reg1, unsigned int reg2)
{
put8(0x8B);
put8((reg1 << 3) | reg2);
}
-static inline void mov_preg32_reg32(int reg1, int reg2)
+static osal_inline void mov_preg32_reg32(int reg1, int reg2)
{
put8(0x89);
put8((reg2 << 3) | reg1);
}
-static inline void mov_reg32_preg32preg32pimm32(int reg1, int reg2, int reg3, unsigned int imm32)
+static osal_inline void mov_reg32_preg32preg32pimm32(int reg1, int reg2, int reg3, unsigned int imm32)
{
put8(0x8B);
put8((reg1 << 3) | 0x84);
@@ -543,14 +544,14 @@ static inline void mov_reg32_preg32preg32pimm32(int reg1, int reg2, int reg3, un
put32(imm32);
}
-static inline void mov_reg32_preg32pimm32(int reg1, int reg2, unsigned int imm32)
+static osal_inline void mov_reg32_preg32pimm32(int reg1, int reg2, unsigned int imm32)
{
put8(0x8B);
put8(0x80 | (reg1 << 3) | reg2);
put32(imm32);
}
-static inline void mov_reg32_preg32x4pimm32(int reg1, int reg2, unsigned int imm32)
+static osal_inline void mov_reg32_preg32x4pimm32(int reg1, int reg2, unsigned int imm32)
{
put8(0x8B);
put8((reg1 << 3) | 4);
@@ -558,14 +559,14 @@ static inline void mov_reg32_preg32x4pimm32(int reg1, int reg2, unsigned int imm
put32(imm32);
}
-static inline void mov_preg32pimm32_reg8(int reg32, unsigned int imm32, int reg8)
+static osal_inline void mov_preg32pimm32_reg8(int reg32, unsigned int imm32, int reg8)
{
put8(0x88);
put8(0x80 | reg32 | (reg8 << 3));
put32(imm32);
}
-static inline void mov_preg32pimm32_imm8(int reg32, unsigned int imm32, unsigned char imm8)
+static osal_inline void mov_preg32pimm32_imm8(int reg32, unsigned int imm32, unsigned char imm8)
{
put8(0xC6);
put8(0x80 + reg32);
@@ -573,7 +574,7 @@ static inline void mov_preg32pimm32_imm8(int reg32, unsigned int imm32, unsigned
put8(imm8);
}
-static inline void mov_preg32pimm32_reg16(int reg32, unsigned int imm32, int reg16)
+static osal_inline void mov_preg32pimm32_reg16(int reg32, unsigned int imm32, int reg16)
{
put8(0x66);
put8(0x89);
@@ -581,88 +582,88 @@ static inline void mov_preg32pimm32_reg16(int reg32, unsigned int imm32, int reg
put32(imm32);
}
-static inline void mov_preg32pimm32_reg32(int reg1, unsigned int imm32, int reg2)
+static osal_inline void mov_preg32pimm32_reg32(int reg1, unsigned int imm32, int reg2)
{
put8(0x89);
put8(0x80 | reg1 | (reg2 << 3));
put32(imm32);
}
-static inline void add_eax_imm32(unsigned int imm32)
+static osal_inline void add_eax_imm32(unsigned int imm32)
{
put8(0x05);
put32(imm32);
}
-static inline void shl_reg32_imm8(unsigned int reg32, unsigned char imm8)
+static osal_inline void shl_reg32_imm8(unsigned int reg32, unsigned char imm8)
{
put8(0xC1);
put8(0xE0 + reg32);
put8(imm8);
}
-static inline void mov_reg32_m32(unsigned int reg32, unsigned int* m32)
+static osal_inline void mov_reg32_m32(unsigned int reg32, unsigned int* m32)
{
put8(0x8B);
put8((reg32 << 3) | 5);
put32((unsigned int)(m32));
}
-static inline void mov_reg8_m8(int reg8, unsigned char *m8)
+static osal_inline void mov_reg8_m8(int reg8, unsigned char *m8)
{
put8(0x8A);
put8((reg8 << 3) | 5);
put32((unsigned int)(m8));
}
-static inline void and_eax_imm32(unsigned int imm32)
+static osal_inline void and_eax_imm32(unsigned int imm32)
{
put8(0x25);
put32(imm32);
}
-static inline void and_reg32_imm32(int reg32, unsigned int imm32)
+static osal_inline void and_reg32_imm32(int reg32, unsigned int imm32)
{
put8(0x81);
put8(0xE0 + reg32);
put32(imm32);
}
-static inline void or_reg32_imm32(int reg32, unsigned int imm32)
+static osal_inline void or_reg32_imm32(int reg32, unsigned int imm32)
{
put8(0x81);
put8(0xC8 + reg32);
put32(imm32);
}
-static inline void xor_reg32_imm32(int reg32, unsigned int imm32)
+static osal_inline void xor_reg32_imm32(int reg32, unsigned int imm32)
{
put8(0x81);
put8(0xF0 + reg32);
put32(imm32);
}
-static inline void xor_reg8_imm8(int reg8, unsigned char imm8)
+static osal_inline void xor_reg8_imm8(int reg8, unsigned char imm8)
{
put8(0x80);
put8(0xF0 + reg8);
put8(imm8);
}
-static inline void mov_reg32_reg32(unsigned int reg1, unsigned int reg2)
+static osal_inline void mov_reg32_reg32(unsigned int reg1, unsigned int reg2)
{
if (reg1 == reg2) return;
put8(0x89);
put8(0xC0 | (reg2 << 3) | reg1);
}
-static inline void not_reg32(unsigned int reg32)
+static osal_inline void not_reg32(unsigned int reg32)
{
put8(0xF7);
put8(0xD0 + reg32);
}
-static inline void movsx_reg32_m8(int reg32, unsigned char *m8)
+static osal_inline void movsx_reg32_m8(int reg32, unsigned char *m8)
{
put8(0x0F);
put8(0xBE);
@@ -670,7 +671,7 @@ static inline void movsx_reg32_m8(int reg32, unsigned char *m8)
put32((unsigned int)(m8));
}
-static inline void movsx_reg32_8preg32pimm32(int reg1, int reg2, unsigned int imm32)
+static osal_inline void movsx_reg32_8preg32pimm32(int reg1, int reg2, unsigned int imm32)
{
put8(0x0F);
put8(0xBE);
@@ -678,7 +679,7 @@ static inline void movsx_reg32_8preg32pimm32(int reg1, int reg2, unsigned int im
put32(imm32);
}
-static inline void movsx_reg32_16preg32pimm32(int reg1, int reg2, unsigned int imm32)
+static osal_inline void movsx_reg32_16preg32pimm32(int reg1, int reg2, unsigned int imm32)
{
put8(0x0F);
put8(0xBF);
@@ -686,7 +687,7 @@ static inline void movsx_reg32_16preg32pimm32(int reg1, int reg2, unsigned int i
put32(imm32);
}
-static inline void movsx_reg32_m16(int reg32, unsigned short *m16)
+static osal_inline void movsx_reg32_m16(int reg32, unsigned short *m16)
{
put8(0x0F);
put8(0xBF);
@@ -694,140 +695,140 @@ static inline void movsx_reg32_m16(int reg32, unsigned short *m16)
put32((unsigned int)(m16));
}
-static inline void fldcw_m16(unsigned short *m16)
+static osal_inline void fldcw_m16(unsigned short *m16)
{
put8(0xD9);
put8(0x2D);
put32((unsigned int)(m16));
}
-static inline void fld_preg32_dword(int reg32)
+static osal_inline void fld_preg32_dword(int reg32)
{
put8(0xD9);
put8(reg32);
}
-static inline void fdiv_preg32_dword(int reg32)
+static osal_inline void fdiv_preg32_dword(int reg32)
{
put8(0xD8);
put8(0x30 + reg32);
}
-static inline void fstp_preg32_dword(int reg32)
+static osal_inline void fstp_preg32_dword(int reg32)
{
put8(0xD9);
put8(0x18 + reg32);
}
-static inline void fchs(void)
+static osal_inline void fchs(void)
{
put8(0xD9);
put8(0xE0);
}
-static inline void fstp_preg32_qword(int reg32)
+static osal_inline void fstp_preg32_qword(int reg32)
{
put8(0xDD);
put8(0x18 + reg32);
}
-static inline void fadd_preg32_dword(int reg32)
+static osal_inline void fadd_preg32_dword(int reg32)
{
put8(0xD8);
put8(reg32);
}
-static inline void fsub_preg32_dword(int reg32)
+static osal_inline void fsub_preg32_dword(int reg32)
{
put8(0xD8);
put8(0x20 + reg32);
}
-static inline void fmul_preg32_dword(int reg32)
+static osal_inline void fmul_preg32_dword(int reg32)
{
put8(0xD8);
put8(0x08 + reg32);
}
-static inline void fistp_preg32_dword(int reg32)
+static osal_inline void fistp_preg32_dword(int reg32)
{
put8(0xDB);
put8(0x18 + reg32);
}
-static inline void fistp_preg32_qword(int reg32)
+static osal_inline void fistp_preg32_qword(int reg32)
{
put8(0xDF);
put8(0x38 + reg32);
}
-static inline void fld_preg32_qword(int reg32)
+static osal_inline void fld_preg32_qword(int reg32)
{
put8(0xDD);
put8(reg32);
}
-static inline void fild_preg32_qword(int reg32)
+static osal_inline void fild_preg32_qword(int reg32)
{
put8(0xDF);
put8(0x28+reg32);
}
-static inline void fild_preg32_dword(int reg32)
+static osal_inline void fild_preg32_dword(int reg32)
{
put8(0xDB);
put8(reg32);
}
-static inline void fadd_preg32_qword(int reg32)
+static osal_inline void fadd_preg32_qword(int reg32)
{
put8(0xDC);
put8(reg32);
}
-static inline void fdiv_preg32_qword(int reg32)
+static osal_inline void fdiv_preg32_qword(int reg32)
{
put8(0xDC);
put8(0x30 + reg32);
}
-static inline void fsub_preg32_qword(int reg32)
+static osal_inline void fsub_preg32_qword(int reg32)
{
put8(0xDC);
put8(0x20 + reg32);
}
-static inline void fmul_preg32_qword(int reg32)
+static osal_inline void fmul_preg32_qword(int reg32)
{
put8(0xDC);
put8(0x08 + reg32);
}
-static inline void fsqrt(void)
+static osal_inline void fsqrt(void)
{
put8(0xD9);
put8(0xFA);
}
-static inline void fabs_(void)
+static osal_inline void fabs_(void)
{
put8(0xD9);
put8(0xE1);
}
-static inline void fcomip_fpreg(int fpreg)
+static osal_inline void fcomip_fpreg(int fpreg)
{
put8(0xDF);
put8(0xF0 + fpreg);
}
-static inline void fucomip_fpreg(int fpreg)
+static osal_inline void fucomip_fpreg(int fpreg)
{
put8(0xDF);
put8(0xE8 + fpreg);
}
-static inline void ffree_fpreg(int fpreg)
+static osal_inline void ffree_fpreg(int fpreg)
{
put8(0xDD);
put8(0xC0 + fpreg);
diff --git a/tools/install_binary_bundle.sh b/tools/install_binary_bundle.sh
index 9970e47..2f906dc 100755
--- a/tools/install_binary_bundle.sh
+++ b/tools/install_binary_bundle.sh
@@ -65,6 +65,28 @@ LIBDIR="${4:-${PREFIX}/lib}"
PLUGINDIR="${5:-${PREFIX}/lib/mupen64plus}"
MANDIR="${6:-${PREFIX}/share/man}"
+# simple check for permissions
+if [ -d "${SHAREDIR}" -a ! -w "${SHAREDIR}" ]; then
+ printf "Error: you do not have permission to install at: ${SHAREDIR}\nMaybe you need to be root?\n"
+ exit 1
+fi
+if [ -d "${BINDIR}" -a ! -w "${BINDIR}" ]; then
+ printf "Error: you do not have permission to install at: ${BINDIR}\nMaybe you need to be root?\n"
+ exit 1
+fi
+if [ -d "${LIBDIR}" -a ! -w "${LIBDIR}" ]; then
+ printf "Error: you do not have permission to install at: ${LIBDIR}\nMaybe you need to be root?\n"
+ exit 1
+fi
+if [ -d "${PLUGINDIR}" -a ! -w "${PLUGINDIR}" ]; then
+ printf "Error: you do not have permission to install at: ${PLUGINDIR}\nMaybe you need to be root?\n"
+ exit 1
+fi
+if [ -d "${MANDIR}" -a ! -w "${MANDIR}" ]; then
+ printf "Error: you do not have permission to install at: ${MANDIR}\nMaybe you need to be root?\n"
+ exit 1
+fi
+
printf "Installing Mupen64Plus Binary Bundle to ${PREFIX}\n"
# Mupen64Plus-Core
$INSTALL -d -v "${LIBDIR}"
diff --git a/tools/uninstall_binary_bundle.sh b/tools/uninstall_binary_bundle.sh
index 9998990..dc94518 100755
--- a/tools/uninstall_binary_bundle.sh
+++ b/tools/uninstall_binary_bundle.sh
@@ -48,6 +48,28 @@ LIBDIR="${4:-${PREFIX}/lib}"
PLUGINDIR="${5:-${PREFIX}/lib/mupen64plus}"
MANDIR="${6:-${PREFIX}/share/man}"
+# simple check for some permissions
+if [ -d "${SHAREDIR}" -a ! -w "${SHAREDIR}" ]; then
+ printf "Error: you do not have permission to uninstall from: ${SHAREDIR}\nMaybe you need to be root?\n"
+ exit 1
+fi
+if [ -d "${BINDIR}" -a ! -w "${BINDIR}" ]; then
+ printf "Error: you do not have permission to uninstall from: ${BINDIR}\nMaybe you need to be root?\n"
+ exit 1
+fi
+if [ -d "${LIBDIR}" -a ! -w "${LIBDIR}" ]; then
+ printf "Error: you do not have permission to uninstall from: ${LIBDIR}\nMaybe you need to be root?\n"
+ exit 1
+fi
+if [ -d "${PLUGINDIR}" -a ! -w "${PLUGINDIR}" ]; then
+ printf "Error: you do not have permission to uninstall from: ${PLUGINDIR}\nMaybe you need to be root?\n"
+ exit 1
+fi
+if [ -d "${MANDIR}" -a ! -w "${MANDIR}" ]; then
+ printf "Error: you do not have permission to uninstall from: ${MANDIR}\nMaybe you need to be root?\n"
+ exit 1
+fi
+
printf "Uninstalling Mupen64Plus Binary Bundle from ${PREFIX}\n"
# Mupen64Plus-Core
rm -f "${LIBDIR}"/libmupen64plus.so*
@@ -71,13 +93,14 @@ rm -f "${SHAREDIR}/RiceVideoLinux.ini"
rm -f "${SHAREDIR}/InputAutoCfg.ini"
rm -f "${SHAREDIR}/Glide64mk2.ini"
# get rid of the empty dirs
-rmdir --ignore-fail-on-non-empty "${SHAREDIR}/doc"
-rmdir --ignore-fail-on-non-empty "${SHAREDIR}"
-rmdir --ignore-fail-on-non-empty "${BINDIR}"
-rmdir --ignore-fail-on-non-empty "${LIBDIR}"
-rmdir --ignore-fail-on-non-empty "${PLUGINDIR}"
-rmdir --ignore-fail-on-non-empty "${MANDIR}/man6"
-rmdir --ignore-fail-on-non-empty "${MANDIR}"
+# ignore directories if they are really symbolic links
+[ ! -L "${SHAREDIR}/doc" ] && rmdir --ignore-fail-on-non-empty "${SHAREDIR}/doc"
+[ ! -L "${SHAREDIR}" ] && rmdir --ignore-fail-on-non-empty "${SHAREDIR}"
+[ ! -L "${BINDIR}" ] && rmdir --ignore-fail-on-non-empty "${BINDIR}"
+[ ! -L "${LIBDIR}" ] && rmdir --ignore-fail-on-non-empty "${LIBDIR}"
+[ ! -L "${PLUGINDIR}" ] && rmdir --ignore-fail-on-non-empty "${PLUGINDIR}"
+[ ! -L "${MANDIR}/man6" ] && rmdir --ignore-fail-on-non-empty "${MANDIR}/man6"
+[ ! -L "${MANDIR}" ] && rmdir --ignore-fail-on-non-empty "${MANDIR}"
-printf "Done.\n"
+printf "Uninstall successful.\n"
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/mupen64plus-core.git
More information about the Pkg-games-commits
mailing list