Commit d37b22f7dbf93089b206284e56f6420265d6e734
1 parent
681143c5
Exists in
master
and in
1 other branch
Fixing small bugs on windows.
Showing
7 changed files
with
45 additions
and
19 deletions
Show diff stats
client/src/session/remote/wait.cc
| @@ -57,16 +57,17 @@ | @@ -57,16 +57,17 @@ | ||
| 57 | 57 | ||
| 58 | rc = worker(); | 58 | rc = worker(); |
| 59 | 59 | ||
| 60 | - debug("rc=",rc); | 60 | + debug("rc=",rc," (",strerror(rc),")"); |
| 61 | 61 | ||
| 62 | if(rc == 0) | 62 | if(rc == 0) |
| 63 | return; | 63 | return; |
| 64 | - else if(rc != ETIMEDOUT) | 64 | + |
| 65 | + if(rc != ETIMEDOUT) | ||
| 65 | chkResponse(rc); | 66 | chkResponse(rc); |
| 66 | 67 | ||
| 67 | } | 68 | } |
| 68 | 69 | ||
| 69 | - chkResponse(ETIMEDOUT); | 70 | + throw runtime_error("Timeout"); |
| 70 | 71 | ||
| 71 | } | 72 | } |
| 72 | 73 | ||
| @@ -196,7 +197,7 @@ | @@ -196,7 +197,7 @@ | ||
| 196 | .call() | 197 | .call() |
| 197 | .pop(rc); | 198 | .pop(rc); |
| 198 | 199 | ||
| 199 | - debug("rc=",rc); | 200 | + debug("waitForStringAt rc=",rc); |
| 200 | return rc; | 201 | return rc; |
| 201 | 202 | ||
| 202 | }); | 203 | }); |
client/src/session/remote/windows/session.cc
| @@ -77,7 +77,10 @@ | @@ -77,7 +77,10 @@ | ||
| 77 | ); | 77 | ); |
| 78 | 78 | ||
| 79 | if (hPipe == INVALID_HANDLE_VALUE) { | 79 | if (hPipe == INVALID_HANDLE_VALUE) { |
| 80 | - throw std::runtime_error("Can't open IPC Channel"); | 80 | + string msg = "Can't open IPC Channel \""; |
| 81 | + msg += pipename; | ||
| 82 | + msg += "\""; | ||
| 83 | + throw std::runtime_error(msg); | ||
| 81 | } | 84 | } |
| 82 | 85 | ||
| 83 | // The pipe connected; change to message-read mode. | 86 | // The pipe connected; change to message-read mode. |
server/src/core/windows/gobject.h
| @@ -90,10 +90,10 @@ | @@ -90,10 +90,10 @@ | ||
| 90 | GObjectClass parent; | 90 | GObjectClass parent; |
| 91 | }; | 91 | }; |
| 92 | 92 | ||
| 93 | - G_GNUC_INTERNAL GSourceFuncs ipc3270_source_funcs; | 93 | + G_GNUC_INTERNAL GSourceFuncs * ipc3270_get_source_funcs(); |
| 94 | 94 | ||
| 95 | - G_GNUC_INTERNAL void ipc3270_release_object(ipc3270 *object); | ||
| 96 | - G_GNUC_INTERNAL void ipc3270_wait_for_client(IPC3270_PIPE_SOURCE *source); | 95 | + G_GNUC_INTERNAL void ipc3270_release_object(ipc3270 *object); |
| 96 | + G_GNUC_INTERNAL void ipc3270_wait_for_client(IPC3270_PIPE_SOURCE *source); | ||
| 97 | 97 | ||
| 98 | G_END_DECLS | 98 | G_END_DECLS |
| 99 | 99 |
server/src/core/windows/inout.c
| @@ -46,6 +46,8 @@ unsigned char * ipc3270_pack_error(const GError *error, size_t * szPacket) { | @@ -46,6 +46,8 @@ unsigned char * ipc3270_pack_error(const GError *error, size_t * szPacket) { | ||
| 46 | 46 | ||
| 47 | static const char * error_response = "error"; | 47 | static const char * error_response = "error"; |
| 48 | 48 | ||
| 49 | + debug("%s(%d,%s)",__FUNCTION__,(int) error_response,error->message); | ||
| 50 | + | ||
| 49 | *szPacket = strlen(error_response) + 1 + (sizeof(guint16) * 2) + strlen(error->message); | 51 | *szPacket = strlen(error_response) + 1 + (sizeof(guint16) * 2) + strlen(error->message); |
| 50 | 52 | ||
| 51 | // Allocate buffer | 53 | // Allocate buffer |
| @@ -94,40 +96,54 @@ unsigned char * pack_value(unsigned char *txtptr, GVariant *value) { | @@ -94,40 +96,54 @@ unsigned char * pack_value(unsigned char *txtptr, GVariant *value) { | ||
| 94 | strcpy((char *) txtptr,g_variant_get_string(value,NULL)); | 96 | strcpy((char *) txtptr,g_variant_get_string(value,NULL)); |
| 95 | txtptr += (strlen((char *) txtptr)+1); | 97 | txtptr += (strlen((char *) txtptr)+1); |
| 96 | 98 | ||
| 99 | + debug("%s(%s)",__FUNCTION__,g_variant_get_string(value,NULL)); | ||
| 100 | + | ||
| 97 | } else if(g_variant_type_equal(type,G_VARIANT_TYPE_BOOLEAN)) { | 101 | } else if(g_variant_type_equal(type,G_VARIANT_TYPE_BOOLEAN)) { |
| 98 | 102 | ||
| 99 | *(txtptr++) = 'b'; | 103 | *(txtptr++) = 'b'; |
| 100 | *(txtptr++) = g_variant_get_boolean(value) ? 1 : 0; | 104 | *(txtptr++) = g_variant_get_boolean(value) ? 1 : 0; |
| 101 | 105 | ||
| 106 | + debug("%s(%s)",__FUNCTION__,g_variant_get_boolean(value) ? "True" : "False"); | ||
| 107 | + | ||
| 102 | } else if(g_variant_type_equal(type,G_VARIANT_TYPE_BYTE)) { | 108 | } else if(g_variant_type_equal(type,G_VARIANT_TYPE_BYTE)) { |
| 103 | 109 | ||
| 104 | *(txtptr++) = 'y'; | 110 | *(txtptr++) = 'y'; |
| 105 | *(txtptr++) = g_variant_get_byte(value); | 111 | *(txtptr++) = g_variant_get_byte(value); |
| 106 | 112 | ||
| 113 | + debug("%s(%d)",__FUNCTION__,(int) g_variant_get_byte(value)); | ||
| 114 | + | ||
| 107 | } else if(g_variant_type_equal(type,G_VARIANT_TYPE_INT16)) { | 115 | } else if(g_variant_type_equal(type,G_VARIANT_TYPE_INT16)) { |
| 108 | 116 | ||
| 109 | *(txtptr++) = 'n'; | 117 | *(txtptr++) = 'n'; |
| 110 | *((gint16 *) txtptr) = g_variant_get_int16(value); | 118 | *((gint16 *) txtptr) = g_variant_get_int16(value); |
| 111 | txtptr += sizeof(gint16); | 119 | txtptr += sizeof(gint16); |
| 112 | 120 | ||
| 121 | + debug("%s(%d)",__FUNCTION__,(int) g_variant_get_int16(value)); | ||
| 122 | + | ||
| 113 | } else if(g_variant_type_equal(type,G_VARIANT_TYPE_UINT16)) { | 123 | } else if(g_variant_type_equal(type,G_VARIANT_TYPE_UINT16)) { |
| 114 | 124 | ||
| 115 | *(txtptr++) = 'q'; | 125 | *(txtptr++) = 'q'; |
| 116 | *((guint16 *) txtptr) = g_variant_get_uint16(value); | 126 | *((guint16 *) txtptr) = g_variant_get_uint16(value); |
| 117 | txtptr += sizeof(guint16); | 127 | txtptr += sizeof(guint16); |
| 118 | 128 | ||
| 129 | + debug("%s(%d)",__FUNCTION__,(int) g_variant_get_uint16(value)); | ||
| 130 | + | ||
| 119 | } else if(g_variant_type_is_subtype_of(type,G_VARIANT_TYPE_INT32)) { | 131 | } else if(g_variant_type_is_subtype_of(type,G_VARIANT_TYPE_INT32)) { |
| 120 | 132 | ||
| 121 | *(txtptr++) = 'i'; | 133 | *(txtptr++) = 'i'; |
| 122 | *((gint32 *) txtptr) = g_variant_get_int32(value); | 134 | *((gint32 *) txtptr) = g_variant_get_int32(value); |
| 123 | txtptr += sizeof(gint32); | 135 | txtptr += sizeof(gint32); |
| 124 | 136 | ||
| 137 | + debug("%s(%d)",__FUNCTION__,(int) g_variant_get_int32(value)); | ||
| 138 | + | ||
| 125 | } else if(g_variant_type_equal(type,G_VARIANT_TYPE_UINT32)) { | 139 | } else if(g_variant_type_equal(type,G_VARIANT_TYPE_UINT32)) { |
| 126 | 140 | ||
| 127 | *(txtptr++) = 'u'; | 141 | *(txtptr++) = 'u'; |
| 128 | *((guint32 *) txtptr) = g_variant_get_uint32(value); | 142 | *((guint32 *) txtptr) = g_variant_get_uint32(value); |
| 129 | txtptr += sizeof(guint32); | 143 | txtptr += sizeof(guint32); |
| 130 | 144 | ||
| 145 | + debug("%s(%d)",__FUNCTION__,(int) g_variant_get_uint32(value)); | ||
| 146 | + | ||
| 131 | } else if(g_variant_type_equal(type,G_VARIANT_TYPE_INT64)) { | 147 | } else if(g_variant_type_equal(type,G_VARIANT_TYPE_INT64)) { |
| 132 | 148 | ||
| 133 | *(txtptr++) = 'x'; | 149 | *(txtptr++) = 'x'; |
| @@ -294,7 +310,7 @@ GVariant * ipc3270_unpack(const unsigned char *packet, int *id) { | @@ -294,7 +310,7 @@ GVariant * ipc3270_unpack(const unsigned char *packet, int *id) { | ||
| 294 | break; | 310 | break; |
| 295 | 311 | ||
| 296 | default: | 312 | default: |
| 297 | - g_message("Unexpected format for argument %d: \"%c\"",ix,descrs[ix+1]); | 313 | + g_message("Unexpected format for argument %d: \"%c\"",(int) ix,descrs[ix+1]); |
| 298 | errno = EINVAL; | 314 | errno = EINVAL; |
| 299 | return NULL; | 315 | return NULL; |
| 300 | } | 316 | } |
server/src/core/windows/pipesource.c
| @@ -290,11 +290,17 @@ static void IO_finalize(GSource *source) { | @@ -290,11 +290,17 @@ static void IO_finalize(GSource *source) { | ||
| 290 | 290 | ||
| 291 | } | 291 | } |
| 292 | 292 | ||
| 293 | -GSourceFuncs ipc3270_source_funcs = { | ||
| 294 | - IO_prepare, | ||
| 295 | - IO_check, | ||
| 296 | - IO_dispatch, | ||
| 297 | - IO_finalize, | ||
| 298 | - IO_closure, | ||
| 299 | - NULL | ||
| 300 | -}; | 293 | +GSourceFuncs * ipc3270_get_source_funcs() { |
| 294 | + | ||
| 295 | + static GSourceFuncs source_funcs = { | ||
| 296 | + IO_prepare, | ||
| 297 | + IO_check, | ||
| 298 | + IO_dispatch, | ||
| 299 | + IO_finalize, | ||
| 300 | + IO_closure, | ||
| 301 | + NULL | ||
| 302 | + }; | ||
| 303 | + | ||
| 304 | + return &source_funcs; | ||
| 305 | +} | ||
| 306 | + |
server/src/core/windows/start.c
| @@ -68,7 +68,7 @@ void ipc3270_export_object(GObject *object, const char *name, GError G_GNUC_UNUS | @@ -68,7 +68,7 @@ void ipc3270_export_object(GObject *object, const char *name, GError G_GNUC_UNUS | ||
| 68 | 68 | ||
| 69 | if(hPipe != INVALID_HANDLE_VALUE) { | 69 | if(hPipe != INVALID_HANDLE_VALUE) { |
| 70 | 70 | ||
| 71 | - ipc->source = (IPC3270_PIPE_SOURCE *) g_source_new(&ipc3270_source_funcs,sizeof(IPC3270_PIPE_SOURCE)); | 71 | + ipc->source = (IPC3270_PIPE_SOURCE *) g_source_new(ipc3270_get_source_funcs(),sizeof(IPC3270_PIPE_SOURCE)); |
| 72 | 72 | ||
| 73 | g_message("Got session \"%c\"",id); | 73 | g_message("Got session \"%c\"",id); |
| 74 | 74 |
server/src/testprogram/testprogram.c
| @@ -111,7 +111,7 @@ | @@ -111,7 +111,7 @@ | ||
| 111 | #ifdef _WIN32 | 111 | #ifdef _WIN32 |
| 112 | { | 112 | { |
| 113 | // Setup font name | 113 | // Setup font name |
| 114 | - v3270_set_font_family(terminal,"Droid Sans Mono"); | 114 | + //v3270_set_font_family(terminal,"Droid Sans Mono"); |
| 115 | 115 | ||
| 116 | // WIN32 path settings. | 116 | // WIN32 path settings. |
| 117 | static const char * sep = "\\/."; | 117 | static const char * sep = "\\/."; |