Commit 858ac02b8c181e738f9cfa6528748d74d95b1214
1 parent
74df497c
Exists in
master
and in
5 other branches
Incluindo excessões na extensão libreoffice
Showing
4 changed files
with
41 additions
and
14 deletions
Show diff stats
src/oxt/globals.hpp
@@ -52,6 +52,8 @@ | @@ -52,6 +52,8 @@ | ||
52 | namespace pw3270 | 52 | namespace pw3270 |
53 | { | 53 | { |
54 | 54 | ||
55 | + class uno_impl; | ||
56 | + | ||
55 | class session | 57 | class session |
56 | { | 58 | { |
57 | public: | 59 | public: |
@@ -85,7 +87,7 @@ | @@ -85,7 +87,7 @@ | ||
85 | class lib3270_session : public session | 87 | class lib3270_session : public session |
86 | { | 88 | { |
87 | public: | 89 | public: |
88 | - lib3270_session(); | 90 | + lib3270_session(uno_impl *obj) throw( RuntimeException ); |
89 | virtual ~lib3270_session(); | 91 | virtual ~lib3270_session(); |
90 | 92 | ||
91 | virtual int get_revision(void); | 93 | virtual int get_revision(void); |
@@ -136,7 +138,7 @@ | @@ -136,7 +138,7 @@ | ||
136 | class ipc3270_session : public session | 138 | class ipc3270_session : public session |
137 | { | 139 | { |
138 | public: | 140 | public: |
139 | - ipc3270_session(const char *name); | 141 | + ipc3270_session(uno_impl *obj, const char *name) throw( RuntimeException ); |
140 | virtual ~ipc3270_session(); | 142 | virtual ~ipc3270_session(); |
141 | virtual int get_revision(void); | 143 | virtual int get_revision(void); |
142 | virtual LIB3270_MESSAGE get_state(void); | 144 | virtual LIB3270_MESSAGE get_state(void); |
@@ -210,12 +212,12 @@ | @@ -210,12 +212,12 @@ | ||
210 | virtual ::sal_Int16 SAL_CALL screenTrace( ::sal_Bool state ) throw (::com::sun::star::uno::RuntimeException); | 212 | virtual ::sal_Int16 SAL_CALL screenTrace( ::sal_Bool state ) throw (::com::sun::star::uno::RuntimeException); |
211 | virtual ::sal_Int16 SAL_CALL setSession( const ::rtl::OUString& name ) throw (::com::sun::star::uno::RuntimeException); | 213 | virtual ::sal_Int16 SAL_CALL setSession( const ::rtl::OUString& name ) throw (::com::sun::star::uno::RuntimeException); |
212 | 214 | ||
215 | + void failed(const char *fmt, ...) throw( ::com::sun::star::uno::RuntimeException ); | ||
216 | + | ||
213 | private: | 217 | private: |
214 | 218 | ||
215 | session *hSession; | 219 | session *hSession; |
216 | 220 | ||
217 | - | ||
218 | - | ||
219 | }; | 221 | }; |
220 | 222 | ||
221 | }; | 223 | }; |
src/oxt/local.cxx
@@ -96,7 +96,7 @@ | @@ -96,7 +96,7 @@ | ||
96 | #endif // HAVE_SYSLOG | 96 | #endif // HAVE_SYSLOG |
97 | } | 97 | } |
98 | 98 | ||
99 | - pw3270::lib3270_session::lib3270_session() | 99 | + pw3270::lib3270_session::lib3270_session(uno_impl *obj) throw( RuntimeException ) |
100 | { | 100 | { |
101 | struct _call | 101 | struct _call |
102 | { | 102 | { |
@@ -136,7 +136,7 @@ | @@ -136,7 +136,7 @@ | ||
136 | 136 | ||
137 | if(!hModule) | 137 | if(!hModule) |
138 | { | 138 | { |
139 | - log("%s","Error loading lib3270"); | 139 | + obj->failed("%s","Can't load lib3270"); |
140 | return; | 140 | return; |
141 | } | 141 | } |
142 | 142 | ||
@@ -144,7 +144,7 @@ | @@ -144,7 +144,7 @@ | ||
144 | { | 144 | { |
145 | *call[f].entry = (void *) osl_getAsciiFunctionSymbol(hModule,call[f].name); | 145 | *call[f].entry = (void *) osl_getAsciiFunctionSymbol(hModule,call[f].name); |
146 | if(!*call[f].entry) | 146 | if(!*call[f].entry) |
147 | - log("Error loading lib3270::%s",call[f].name); | 147 | + obj->failed("Error loading lib3270::%s",call[f].name); |
148 | } | 148 | } |
149 | 149 | ||
150 | /* Get lib3270 session handle */ | 150 | /* Get lib3270 session handle */ |
src/oxt/main.cxx
@@ -30,6 +30,7 @@ | @@ -30,6 +30,7 @@ | ||
30 | */ | 30 | */ |
31 | 31 | ||
32 | #include "globals.hpp" | 32 | #include "globals.hpp" |
33 | +#include <string.h> | ||
33 | 34 | ||
34 | #ifdef HAVE_SYSLOG | 35 | #ifdef HAVE_SYSLOG |
35 | #include <syslog.h> | 36 | #include <syslog.h> |
@@ -218,7 +219,7 @@ Sequence< OUString > pw3270::uno_impl::getSupportedServiceNames() throw (Runtime | @@ -218,7 +219,7 @@ Sequence< OUString > pw3270::uno_impl::getSupportedServiceNames() throw (Runtime | ||
218 | 219 | ||
219 | pw3270::uno_impl::uno_impl( const Reference< XComponentContext > & xContext ) | 220 | pw3270::uno_impl::uno_impl( const Reference< XComponentContext > & xContext ) |
220 | { | 221 | { |
221 | - this->hSession = new lib3270_session(); | 222 | + this->hSession = new lib3270_session(this); |
222 | } | 223 | } |
223 | 224 | ||
224 | pw3270::uno_impl::~uno_impl() | 225 | pw3270::uno_impl::~uno_impl() |
@@ -285,12 +286,35 @@ void pw3270::session::log(const char *fmt, const char *msg) | @@ -285,12 +286,35 @@ void pw3270::session::log(const char *fmt, const char *msg) | ||
285 | #endif // HAVE_SYSLOG | 286 | #endif // HAVE_SYSLOG |
286 | } | 287 | } |
287 | 288 | ||
289 | +void pw3270::uno_impl::failed(const char *fmt, ...) throw( ::com::sun::star::uno::RuntimeException ) | ||
290 | +{ | ||
291 | + va_list arg_ptr; | ||
292 | + char * msg = (char *) malloc(1024); | ||
293 | + | ||
294 | + va_start(arg_ptr, fmt); | ||
295 | + vsnprintf(msg, 1023, fmt, arg_ptr); | ||
296 | + va_end(arg_ptr); | ||
297 | + | ||
298 | +#ifdef HAVE_SYSLOG | ||
299 | + openlog(PACKAGE_NAME, LOG_NDELAY, LOG_USER); | ||
300 | + syslog(LOG_ERR,"%s",msg); | ||
301 | + closelog(); | ||
302 | +#endif // HAVE_SYSLOG | ||
303 | + | ||
304 | + ::rtl::OUString str = OUString(msg, strlen(msg), RTL_TEXTENCODING_UTF8, RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE); | ||
305 | + | ||
306 | + free(msg); | ||
307 | + | ||
308 | + throw Exception( str , *this ); | ||
309 | + | ||
310 | +} | ||
311 | + | ||
288 | ::sal_Int16 SAL_CALL pw3270::uno_impl::setSession( const ::rtl::OUString& name ) throw (::com::sun::star::uno::RuntimeException) | 312 | ::sal_Int16 SAL_CALL pw3270::uno_impl::setSession( const ::rtl::OUString& name ) throw (::com::sun::star::uno::RuntimeException) |
289 | { | 313 | { |
290 | OString str = rtl::OUStringToOString( name , hSession->get_encoding() ); | 314 | OString str = rtl::OUStringToOString( name , hSession->get_encoding() ); |
291 | 315 | ||
292 | delete this->hSession; | 316 | delete this->hSession; |
293 | - this->hSession = new ipc3270_session(str.getStr()); | 317 | + this->hSession = new ipc3270_session(this,str.getStr()); |
294 | 318 | ||
295 | return 0; | 319 | return 0; |
296 | } | 320 | } |
src/oxt/remote.cxx
@@ -151,7 +151,7 @@ int pw3270::ipc3270_session::query_intval(const char *method) | @@ -151,7 +151,7 @@ int pw3270::ipc3270_session::query_intval(const char *method) | ||
151 | #endif // HAVE_DBUS | 151 | #endif // HAVE_DBUS |
152 | 152 | ||
153 | 153 | ||
154 | -pw3270::ipc3270_session::ipc3270_session(const char *name) : pw3270::session() | 154 | +pw3270::ipc3270_session::ipc3270_session(uno_impl *obj, const char *name) throw( RuntimeException ) : pw3270::session() |
155 | { | 155 | { |
156 | #ifdef HAVE_DBUS | 156 | #ifdef HAVE_DBUS |
157 | 157 | ||
@@ -226,13 +226,14 @@ pw3270::ipc3270_session::ipc3270_session(const char *name) : pw3270::session() | @@ -226,13 +226,14 @@ pw3270::ipc3270_session::ipc3270_session(const char *name) : pw3270::session() | ||
226 | 226 | ||
227 | if (dbus_error_is_set(&err)) | 227 | if (dbus_error_is_set(&err)) |
228 | { | 228 | { |
229 | - log("DBUS Connection Error (%s)", err.message); | 229 | + obj->failed("DBUS Connection Error (%s)", err.message); |
230 | dbus_error_free(&err); | 230 | dbus_error_free(&err); |
231 | + return; | ||
231 | } | 232 | } |
232 | 233 | ||
233 | if(!conn) | 234 | if(!conn) |
234 | { | 235 | { |
235 | - log("%s", "DBUS Connection failed"); | 236 | + obj->failed("%s", "DBUS Connection failed"); |
236 | return; | 237 | return; |
237 | } | 238 | } |
238 | 239 | ||
@@ -240,7 +241,7 @@ pw3270::ipc3270_session::ipc3270_session(const char *name) : pw3270::session() | @@ -240,7 +241,7 @@ pw3270::ipc3270_session::ipc3270_session(const char *name) : pw3270::session() | ||
240 | 241 | ||
241 | if (dbus_error_is_set(&err)) | 242 | if (dbus_error_is_set(&err)) |
242 | { | 243 | { |
243 | - log("Name Error (%s)", err.message); | 244 | + obj->failed("DBUS Name Error (%s)", err.message); |
244 | dbus_error_free(&err); | 245 | dbus_error_free(&err); |
245 | conn = NULL; | 246 | conn = NULL; |
246 | return; | 247 | return; |
@@ -248,7 +249,7 @@ pw3270::ipc3270_session::ipc3270_session(const char *name) : pw3270::session() | @@ -248,7 +249,7 @@ pw3270::ipc3270_session::ipc3270_session(const char *name) : pw3270::session() | ||
248 | 249 | ||
249 | if(rc != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) | 250 | if(rc != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) |
250 | { | 251 | { |
251 | - log("%s", "DBUS request name failed"); | 252 | + obj->failed("%s", "DBUS request name failed"); |
252 | conn = NULL; | 253 | conn = NULL; |
253 | return; | 254 | return; |
254 | } | 255 | } |