Commit 0e5fef36710bf696c70ad1c0c7228430282f38c3

Authored by Perry Werneck
1 parent a73d2782
Exists in develop

Since windows does not have version control in the system a new method

was implemented to check if the lib3270 current revision can work with
applications to avoid loading of an incomplete or incompatible version
of lib3270.

Adding string translation for signed int properties.
src/core/properties/signed.c
@@ -38,14 +38,86 @@ static int lib3270_get_connection_state_as_int(const H3270 *hSession) { @@ -38,14 +38,86 @@ static int lib3270_get_connection_state_as_int(const H3270 *hSession) {
38 return (int) lib3270_get_connection_state(hSession); 38 return (int) lib3270_get_connection_state(hSession);
39 } 39 }
40 40
  41 +const char * lib3270_get_connection_state_as_string(const H3270 *hSession) {
  42 +
  43 + static const char * values[] = {
  44 + N_("Disconnected"),
  45 + N_("Connecting to host"),
  46 + N_("Connection pending"),
  47 + N_("Connected, no mode yet"),
  48 + N_("Connected in NVT ANSI mode"),
  49 + N_("Connected in old-style 3270 mode"),
  50 + N_("Connected in TN3270E mode, no negotiated"),
  51 + N_("Connected in TN3270E mode, NVT mode"),
  52 + N_("Connected in TN3270E mode, SSCP-LU mode"),
  53 + N_("Connected in TN3270E mode, 3270 mode")
  54 + };
  55 +
  56 + size_t value = (size_t) lib3270_get_connection_state(hSession);
  57 + if(value < (sizeof(value)/sizeof(values[0]))) {
  58 + return dgettext(GETTEXT_PACKAGE,values[value]);
  59 + }
  60 +
  61 + return _( "Unknown" );
  62 +
  63 +}
  64 +
41 static int lib3270_get_program_message_as_int(const H3270 *hSession) { 65 static int lib3270_get_program_message_as_int(const H3270 *hSession) {
42 return (int) lib3270_get_program_message(hSession); 66 return (int) lib3270_get_program_message(hSession);
43 } 67 }
44 68
  69 +const char * lib3270_get_program_message_as_string(const H3270 *hSession) {
  70 +
  71 + static const char * values[] = {
  72 + "",
  73 + N_( "X System" ),
  74 + N_( "X Wait" ),
  75 + N_( "X Connected" ),
  76 + N_( "X Not Connected" ),
  77 + N_( "X" ),
  78 + N_( "X -f" ),
  79 + N_( "X Protected" ),
  80 + N_( "X Numeric" ),
  81 + N_( "X Overflow" ),
  82 + N_( "X Inhibit" ),
  83 + N_( "X" ),
  84 + N_( "X" ),
  85 + N_( "X Resolving" ),
  86 + N_( "X Connecting" )
  87 + };
  88 +
  89 + size_t value = (size_t) lib3270_get_program_message(hSession);
  90 + if(value < (sizeof(value)/sizeof(values[0]))) {
  91 + return dgettext(GETTEXT_PACKAGE,values[value]);
  92 + }
  93 +
  94 + return _( "Unknown" );
  95 +
  96 +}
  97 +
45 static int lib3270_get_ssl_state_as_int(const H3270 * hSession) { 98 static int lib3270_get_ssl_state_as_int(const H3270 * hSession) {
46 return (int) lib3270_get_ssl_state(hSession); 99 return (int) lib3270_get_ssl_state(hSession);
47 } 100 }
48 101
  102 +const char * lib3270_get_ssl_state_as_string(const H3270 * hSession) {
  103 +
  104 + static const char * values[] = {
  105 + N_("No secure connection"),
  106 + N_("Connection secure with CA check"),
  107 + N_("Connection secure, no CA, self-signed or expired CRL"),
  108 + N_("Negotiating SSL"),
  109 + N_("Verifying SSL (Getting CRL)"),
  110 + N_("Undefined")
  111 + };
  112 +
  113 + size_t value = (size_t) lib3270_get_ssl_state(hSession);
  114 + if(value < (sizeof(value)/sizeof(values[0]))) {
  115 + return dgettext(GETTEXT_PACKAGE,values[value]);
  116 + }
  117 +
  118 + return _( "Unknown" );
  119 +}
  120 +
49 const LIB3270_INT_PROPERTY * lib3270_get_int_properties_list(void) { 121 const LIB3270_INT_PROPERTY * lib3270_get_int_properties_list(void) {
50 122
51 static const LIB3270_INT_PROPERTY properties[] = { 123 static const LIB3270_INT_PROPERTY properties[] = {
@@ -54,7 +126,8 @@ const LIB3270_INT_PROPERTY * lib3270_get_int_properties_list(void) { @@ -54,7 +126,8 @@ const LIB3270_INT_PROPERTY * lib3270_get_int_properties_list(void) {
54 .name = "cstate", // Property name. 126 .name = "cstate", // Property name.
55 .description = N_( "Connection state" ), // Property description. 127 .description = N_( "Connection state" ), // Property description.
56 .get = lib3270_get_connection_state_as_int, // Get value. 128 .get = lib3270_get_connection_state_as_int, // Get value.
57 - .set = NULL // Set value. 129 + .set = NULL, // Set value.
  130 + .describe = lib3270_get_connection_state_as_string
58 }, 131 },
59 132
60 { 133 {
@@ -62,28 +135,32 @@ const LIB3270_INT_PROPERTY * lib3270_get_int_properties_list(void) { @@ -62,28 +135,32 @@ const LIB3270_INT_PROPERTY * lib3270_get_int_properties_list(void) {
62 .group = LIB3270_ACTION_GROUP_ONLINE, // Property group. 135 .group = LIB3270_ACTION_GROUP_ONLINE, // Property group.
63 .description = N_( "Cursor address" ), // Property description. 136 .description = N_( "Cursor address" ), // Property description.
64 .get = lib3270_get_cursor_address, // Get value. 137 .get = lib3270_get_cursor_address, // Get value.
65 - .set = lib3270_set_cursor_address // Set value. 138 + .set = lib3270_set_cursor_address, // Set value.
  139 + .describe = NULL
66 }, 140 },
67 141
68 { 142 {
69 - .name = "program_message", // Property name.  
70 - .description = N_( "Latest program message" ), // Property description.  
71 - .get = lib3270_get_program_message_as_int, // Get value.  
72 - .set = NULL // Set value. 143 + .name = "program_message", // Property name.
  144 + .description = N_( "Latest program message" ), // Property description.
  145 + .get = lib3270_get_program_message_as_int, // Get value.
  146 + .set = NULL, // Set value.
  147 + .describe = lib3270_get_program_message_as_string
73 }, 148 },
74 149
75 { 150 {
76 .name = "ssl_state", // Property name. 151 .name = "ssl_state", // Property name.
77 .description = N_( "ID of the session security state" ), // Property description. 152 .description = N_( "ID of the session security state" ), // Property description.
78 .get = lib3270_get_ssl_state_as_int, // Get value. 153 .get = lib3270_get_ssl_state_as_int, // Get value.
79 - .set = NULL // Set value. 154 + .set = NULL, // Set value.
  155 + .describe = lib3270_get_ssl_state_as_string
80 }, 156 },
81 157
82 { 158 {
83 .name = NULL, 159 .name = NULL,
84 .description = NULL, 160 .description = NULL,
85 .get = NULL, 161 .get = NULL,
86 - .set = NULL 162 + .set = NULL, // Set value.
  163 + .describe = NULL
87 } 164 }
88 }; 165 };
89 166
src/core/util.c
@@ -239,6 +239,10 @@ LIB3270_EXPORT const char * lib3270_get_revision(void) { @@ -239,6 +239,10 @@ LIB3270_EXPORT const char * lib3270_get_revision(void) {
239 return RPQ_REVISION; 239 return RPQ_REVISION;
240 } 240 }
241 241
  242 +LIB3270_EXPORT int lib3270_check_revision(const char GNUC_UNUSED(*revision)) {
  243 + return 0;
  244 +}
  245 +
242 LIB3270_EXPORT const char * lib3270_get_product_name(void) { 246 LIB3270_EXPORT const char * lib3270_get_product_name(void) {
243 return LIB3270_STRINGIZE_VALUE_OF(PRODUCT_NAME); 247 return LIB3270_STRINGIZE_VALUE_OF(PRODUCT_NAME);
244 } 248 }
src/include/lib3270.h
@@ -94,6 +94,9 @@ @@ -94,6 +94,9 @@
94 #define LIB3270_STRINGIZE(x) #x 94 #define LIB3270_STRINGIZE(x) #x
95 #define LIB3270_STRINGIZE_VALUE_OF(x) LIB3270_STRINGIZE(x) 95 #define LIB3270_STRINGIZE_VALUE_OF(x) LIB3270_STRINGIZE(x)
96 96
  97 +typedef struct _h3270 H3270;
  98 +typedef struct _h3270ft H3270FT;
  99 +
97 /** 100 /**
98 * @brief BIND definitions. 101 * @brief BIND definitions.
99 */ 102 */
@@ -368,7 +371,8 @@ typedef enum _lib3270_action_group { @@ -368,7 +371,8 @@ typedef enum _lib3270_action_group {
368 const char * label; \ 371 const char * label; \
369 const char * icon; \ 372 const char * icon; \
370 const char * summary; \ 373 const char * summary; \
371 - const char * description; 374 + const char * description; \
  375 + const char * (*describe)(const H3270 *);
372 376
373 typedef struct _lib3270_property { 377 typedef struct _lib3270_property {
374 LIB3270_PROPERTY_HEAD 378 LIB3270_PROPERTY_HEAD
@@ -393,9 +397,6 @@ typedef enum _lib3270_state { @@ -393,9 +397,6 @@ typedef enum _lib3270_state {
393 LIB3270_STATE_USER // Always the last one 397 LIB3270_STATE_USER // Always the last one
394 } LIB3270_STATE; 398 } LIB3270_STATE;
395 399
396 -typedef struct _h3270 H3270;  
397 -typedef struct _h3270ft H3270FT;  
398 -  
399 /** 400 /**
400 * Get current screen size. 401 * Get current screen size.
401 * 402 *
@@ -1490,6 +1491,17 @@ LIB3270_EXPORT const char * lib3270_get_version(void); @@ -1490,6 +1491,17 @@ LIB3270_EXPORT const char * lib3270_get_version(void);
1490 */ 1491 */
1491 LIB3270_EXPORT const char * lib3270_get_revision(void); 1492 LIB3270_EXPORT const char * lib3270_get_revision(void);
1492 1493
  1494 +/**
  1495 + * @brief Test if the revision is valid.
  1496 + *
  1497 + * @param revision Revision number to check.
  1498 + *
  1499 + * @return 0 if the supplied revision is valid to the current library.
  1500 + *
  1501 + */
  1502 +LIB3270_EXPORT int lib3270_check_revision(const char *revision);
  1503 +
  1504 +
1493 LIB3270_EXPORT char * lib3270_vsprintf(const char *fmt, va_list args); 1505 LIB3270_EXPORT char * lib3270_vsprintf(const char *fmt, va_list args);
1494 LIB3270_EXPORT char * lib3270_strdup_printf(const char *fmt, ...); 1506 LIB3270_EXPORT char * lib3270_strdup_printf(const char *fmt, ...);
1495 1507