sal/android/lo-bootstrap.c | 7 +-- sal/osl/unx/uunxapi.cxx | 38 +++++++++++----- sal/osl/unx/uunxapi.hxx | 104 ++++++++++++++++++++++----------------------- 3 files changed, 80 insertions(+), 69 deletions(-)
New commits: commit 0a5821652fdc57bde39d6b0b6472fc0b4b42cb1a Author: Tor Lillqvist <tlillqv...@suse.com> Date: Wed Jan 4 14:19:14 2012 +0200 Remove bogus one column indentation diff --git a/sal/osl/unx/uunxapi.hxx b/sal/osl/unx/uunxapi.hxx index 44ad6a0..8e47cfc 100644 --- a/sal/osl/unx/uunxapi.hxx +++ b/sal/osl/unx/uunxapi.hxx @@ -26,76 +26,74 @@ * ************************************************************************/ - #ifndef _OSL_UUNXAPI_HXX_ - #define _OSL_UUNXAPI_HXX_ +#ifndef _OSL_UUNXAPI_HXX_ +#define _OSL_UUNXAPI_HXX_ - #ifndef _OSL_UUNXAPI_H_ - #include "uunxapi.h" - #endif +#ifndef _OSL_UUNXAPI_H_ +#include "uunxapi.h" +#endif - #ifndef _RTL_USTRING_HXX_ - #include <rtl/ustring.hxx> - #endif +#ifndef _RTL_USTRING_HXX_ +#include <rtl/ustring.hxx> +#endif - namespace osl - { +namespace osl +{ - /*********************************** - osl::access - - @see access - **********************************/ - - inline int access(const rtl::OUString& ustrPath, int mode) - { - return access_u(ustrPath.pData, mode); - } - - /*********************************** - osl::realpath - - @descr - The return value differs from the - realpath function - - @returns sal_True on success else - sal_False + /*********************************** + osl::access - @see realpath - **********************************/ + @see access + **********************************/ - inline sal_Bool realpath( - const rtl::OUString& ustrFileName, - rtl::OUString& ustrResolvedName) + inline int access(const rtl::OUString& ustrPath, int mode) { - return realpath_u(ustrFileName.pData, &ustrResolvedName.pData); + return access_u(ustrPath.pData, mode); } + /*********************************** + osl::realpath + + @descr + The return value differs from the + realpath function - /*********************************** - osl::lstat + @returns sal_True on success else + sal_False - @see lstat - **********************************/ + @see realpath + **********************************/ + + inline sal_Bool realpath( + const rtl::OUString& ustrFileName, + rtl::OUString& ustrResolvedName) + { + return realpath_u(ustrFileName.pData, &ustrResolvedName.pData); + } - inline int lstat(const rtl::OUString& ustrPath, struct stat& buf) - { - return lstat_u(ustrPath.pData, &buf); - } /*********************************** - osl::mkdir - @see mkdir - **********************************/ - inline int mkdir(const rtl::OUString& aPath, mode_t aMode) - { - return mkdir_u(aPath.pData, aMode); - } + osl::lstat + + @see lstat + **********************************/ - } // end namespace osl + inline int lstat(const rtl::OUString& ustrPath, struct stat& buf) + { + return lstat_u(ustrPath.pData, &buf); + } + /*********************************** + osl::mkdir + @see mkdir + **********************************/ + inline int mkdir(const rtl::OUString& aPath, mode_t aMode) + { + return mkdir_u(aPath.pData, aMode); + } - #endif /* _OSL_UUNXAPI_HXX_ */ +} // end namespace osl +#endif /* _OSL_UUNXAPI_HXX_ */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit d37157372db95ee64afdc6e74c536e28fc5bbd6e Author: Tor Lillqvist <tlillqv...@suse.com> Date: Wed Jan 4 14:18:02 2012 +0200 Handle /assets paths also in realpath_u() diff --git a/sal/osl/unx/uunxapi.cxx b/sal/osl/unx/uunxapi.cxx index 61fac80..86e86e2 100644 --- a/sal/osl/unx/uunxapi.cxx +++ b/sal/osl/unx/uunxapi.cxx @@ -113,6 +113,20 @@ { #ifndef MACOSX // not MACOSX rtl::OString fn = OUStringToOString(pustrFileName); +#ifdef ANDROID + if (strncmp(fn.getStr(), "/assets", sizeof("/assets")-1) == 0 && + (fn.getStr()[sizeof("/assets")-1] == '\0' || + fn.getStr()[sizeof("/assets")-1] == '/')) + { + if (access_u(pustrFileName, F_OK) == -1) + return sal_False; + + rtl_uString silly(*pustrFileName); + rtl_uString_assign(ppustrResolvedName, &silly); + + return sal_True; + } +#endif #else rtl::OString fn = macxp_resolveAliasAndConvert(pustrFileName); #endif commit 36ce37def3c7dde751098649763479ca21321a9a Author: Tor Lillqvist <tlillqv...@suse.com> Date: Wed Jan 4 14:15:43 2012 +0200 Fix the monkey patching to work for an arbitrary offset We used to patch in a simple "b" instruction with a relative offset that has to fit in 24(+2) bits. Which was not enough in practice. Now patch in a "ldr pc, [pc, #-4]" instead which loads PC from the next word; in ARM code PC cotains the address of the executing instruction + 8), and put the full address of the replacement code into the next word. diff --git a/sal/android/lo-bootstrap.c b/sal/android/lo-bootstrap.c index 7fc171b..4800545 100644 --- a/sal/android/lo-bootstrap.c +++ b/sal/android/lo-bootstrap.c @@ -1241,10 +1241,9 @@ patch(const char *symbol, return; } - /* Poke a "b replacement_code" into it instead */ - *((unsigned *) code) = - (0xEA000000 | - ((((int) replacement_code - ((int) code + 8)) / 4) & 0x00FFFFFF)); + /* Poke in a jump to replacement_code instead */ + ((unsigned *) code)[0] = 0xe51ff004; /* ldr pc, [pc, #-4] */ + ((unsigned *) code)[1] = (unsigned) replacement_code; } static void commit d4b0e98d50916e9a0a2810bb0484bdeb76214254 Author: Tor Lillqvist <tlillqv...@suse.com> Date: Wed Jan 4 09:06:16 2012 +0200 Probably using a local rtl::OString is better diff --git a/sal/osl/unx/uunxapi.cxx b/sal/osl/unx/uunxapi.cxx index 3c2067b..61fac80 100644 --- a/sal/osl/unx/uunxapi.cxx +++ b/sal/osl/unx/uunxapi.cxx @@ -84,14 +84,14 @@ int access_u(const rtl_uString* pustrPath, int mode) { #ifndef MACOSX // not MACOSX - const char *path = OUStringToOString(pustrPath).getStr(); + rtl::OString fn = OUStringToOString(pustrPath); #ifdef ANDROID - if (strncmp(path, "/assets", sizeof("/assets")-1) == 0 && - (path[sizeof("/assets")-1] == '\0' || - path[sizeof("/assets")-1] == '/')) + if (strncmp(fn.getStr(), "/assets", sizeof("/assets")-1) == 0 && + (fn.getStr()[sizeof("/assets")-1] == '\0' || + fn.getStr()[sizeof("/assets")-1] == '/')) { struct stat stat; - if (lo_apk_lstat(path, &stat) == -1) + if (lo_apk_lstat(fn.getStr(), &stat) == -1) return -1; if (mode & W_OK) { @@ -101,7 +101,7 @@ return 0; } #endif - return access(path, mode); + return access(fn.getStr(), mode); #else return access(macxp_resolveAliasAndConvert(pustrPath).getStr(), mode); #endif @@ -135,14 +135,14 @@ int lstat_u(const rtl_uString* pustrPath, struct stat* buf) { #ifndef MACOSX // not MACOSX - const char *path = OUStringToOString(pustrPath).getStr(); + rtl::OString fn = OUStringToOString(pustrPath); #ifdef ANDROID - if (strncmp(path, "/assets", sizeof("/assets")-1) == 0 && - (path[sizeof("/assets")-1] == '\0' || - path[sizeof("/assets")-1] == '/')) - return lo_apk_lstat(path, buf); + if (strncmp(fn.getStr(), "/assets", sizeof("/assets")-1) == 0 && + (fn.getStr()[sizeof("/assets")-1] == '\0' || + fn.getStr()[sizeof("/assets")-1] == '/')) + return lo_apk_lstat(fn.getStr(), buf); #endif - return lstat(path, buf); + return lstat(fn.getStr(), buf); #else return lstat(macxp_resolveAliasAndConvert(pustrPath).getStr(), buf); #endif _______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits