From ef4030ebb9ad89874f925125ea538017eb5b6c0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B5=D0=BB=D0=B8=D0=BF=D0=B5=D0=BD=D0=BA=D0=BE=20?= =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Sun, 8 Apr 2018 20:32:53 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/pip@606 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5 --- CMakeLists.txt | 6 +++++- src_main/console/piterminal.cpp | 19 ++++++++++++++++++- src_main/core/pichar.cpp | 10 +++++++--- src_main/core/pistring.cpp | 10 +++++++--- 4 files changed, 37 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 959153cc..67953906 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -430,7 +430,11 @@ if(LIB) if(APPLE) set(CMAKE_INSTALL_PREFIX /usr/local) else() - set(CMAKE_INSTALL_PREFIX /usr) + if (DEFINED ANDROID_PLATFORM) + set(CMAKE_INSTALL_PREFIX ${ANDROID_SYSTEM_LIBRARY_PATH}/usr) + else() + set(CMAKE_INSTALL_PREFIX /usr) + endif() endif() install(FILES ${HDRS} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/pip) install(TARGETS ${PIP_LIBS_TARGETS} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) diff --git a/src_main/console/piterminal.cpp b/src_main/console/piterminal.cpp index 37bc36a4..04ef4bdc 100644 --- a/src_main/console/piterminal.cpp +++ b/src_main/console/piterminal.cpp @@ -18,7 +18,7 @@ */ #include "piincludes_p.h" #include "piterminal.h" -# include "pisharedmemory.h" +#include "pisharedmemory.h" #ifdef WINDOWS # include # include @@ -37,6 +37,13 @@ # include # endif # endif +# ifdef ANDROID +# if __ANDROID_API__ >= 23 +# define HAS_FORKPTY +# endif +# else +# define HAS_FORKPTY +# endif #endif @@ -133,11 +140,13 @@ void PITerminal::write(const PIByteArray & d) { msg << int(mtKey) << ke; writePipe(PRIVATE->pipe, msg); #else +# ifdef HAS_FORKPTY if (PRIVATE->fd == 0) return; //ssize_t wrote = 0; //wrote = ::write(PRIVATE->fd, d.data(), d.size_s()); //piCout << "wrote" << wrote << d; +# endif #endif cursor_tm.reset(); cursor_blink = true; @@ -360,6 +369,7 @@ void PITerminal::run() { cursor_blink = !cursor_blink; } #ifndef WINDOWS +# ifdef HAS_FORKPTY if (PRIVATE->fd == 0) return; PRIVATE->tmp_buf.resize(BUFFER_SIZE); int readed = ::read(PRIVATE->fd, PRIVATE->tmp_buf.data(), BUFFER_SIZE - PRIVATE->read_buf.size_s()); @@ -396,6 +406,7 @@ void PITerminal::run() { PRIVATE->read_buf.clear(); } PRIVATE->last_read = false; +# endif #endif } @@ -779,6 +790,7 @@ bool PITerminal::initialize() { CloseHandle(PRIVATE->pi.hThread); resize(dsize_x, dsize_y); #else +# ifdef HAS_FORKPTY char pty[256]; memset(pty, 0, 256); winsize ws; ws.ws_col = dsize_x; @@ -833,6 +845,7 @@ bool PITerminal::initialize() { size_y = dsize_y; resize(size_x, size_y); } +# endif #endif cursor_blink = false; cursor_tm.reset(); @@ -856,10 +869,12 @@ void PITerminal::destroy() { if (PRIVATE->hConBuf != INVALID_HANDLE_VALUE) CloseHandle(PRIVATE->hConBuf); //piCout << "destroy" << size_y; #else +# ifdef HAS_FORKPTY if (PRIVATE->pid != 0) kill(PRIVATE->pid, SIGKILL); if (PRIVATE->fd != 0) ::close(PRIVATE->fd); +# endif #endif initPrivate(); } @@ -875,6 +890,7 @@ bool PITerminal::resize(int cols, int rows) { msg << int(mtResize) << dsize_x << dsize_y; writePipe(PRIVATE->pipe, msg); #else +# ifdef HAS_FORKPTY if (PRIVATE->fd == 0) return false; size_x = dsize_x; size_y = dsize_y; @@ -888,6 +904,7 @@ bool PITerminal::resize(int cols, int rows) { PRIVATE->cells_save.resize(size_y); for (int i = 0; i < size_y; ++i) PRIVATE->cells_save[i].resize(size_x); +# endif #endif cells.resize(size_y); for (int i = 0; i < size_y; ++i) diff --git a/src_main/core/pichar.cpp b/src_main/core/pichar.cpp index 83ee30dc..a9a463ba 100644 --- a/src_main/core/pichar.cpp +++ b/src_main/core/pichar.cpp @@ -31,9 +31,13 @@ char * __sysoemname__ = 0; #ifdef BLACKBERRY # include #endif -//#ifdef ANDROID -# include -//#endif +#include +#ifdef ANDROID +# if __ANDROID_API__ < 21 +# define wctomb(s, wc) wcrtomb(s, wc, NULL) +# define mbtowc(pwc, s, n) mbrtowc(pwc, s, n, NULL) +# endif +#endif /*! \class PIChar * \brief Unicode char diff --git a/src_main/core/pistring.cpp b/src_main/core/pistring.cpp index 564cbab9..77291036 100755 --- a/src_main/core/pistring.cpp +++ b/src_main/core/pistring.cpp @@ -21,9 +21,13 @@ #ifdef PIP_ICU # include "unicode/ucnv.h" #endif -//#ifdef ANDROID -# include -//#endif +#include +#ifdef ANDROID +# if __ANDROID_API__ < 21 +# define wctomb(s, wc) wcrtomb(s, wc, NULL) +# define mbtowc(pwc, s, n) mbrtowc(pwc, s, n, NULL) +# endif +#endif /*! \class PIString * \brief String class