Commit cdbaf14bb3e1e7e9c3eaedec2e535a5b2010a0e1

Authored by Perry Werneck
1 parent e6ecbb07
Exists in master and in 1 other branch develop

Updating unlock api.

client/src/core/session.cc
@@ -71,16 +71,19 @@ @@ -71,16 +71,19 @@
71 pakey( ((unsigned short) key) + 1); 71 pakey( ((unsigned short) key) + 1);
72 } 72 }
73 73
74 - void Session::input(const char *text, const char control_char) { 74 + LIB3270_KEYBOARD_LOCK_STATE Session::input(const char *text, const char control_char) {
75 75
76 size_t sz; 76 size_t sz;
  77 + LIB3270_KEYBOARD_LOCK_STATE rc = (LIB3270_KEYBOARD_LOCK_STATE) 0;
77 78
78 for(const char * ptr = strchr(text,control_char); ptr; ptr = strchr(text,control_char)) { 79 for(const char * ptr = strchr(text,control_char); ptr; ptr = strchr(text,control_char)) {
79 80
80 // Wait for unlock, ignore errors. 81 // Wait for unlock, ignore errors.
81 sz = (size_t) (ptr-text); 82 sz = (size_t) (ptr-text);
82 if(sz) { 83 if(sz) {
83 - waitForUnlock(); 84 + if( (rc = waitForUnlock()) != 0) {
  85 + return rc;
  86 + }
84 push(text,sz); 87 push(text,sz);
85 } 88 }
86 89
@@ -91,7 +94,7 @@ @@ -91,7 +94,7 @@
91 94
92 case 'E': // Enter 95 case 'E': // Enter
93 push(ENTER); 96 push(ENTER);
94 - waitForUnlock(); 97 + rc = waitForUnlock();
95 break; 98 break;
96 99
97 case 'F': // Erase EOF 100 case 'F': // Erase EOF
@@ -100,98 +103,122 @@ @@ -100,98 +103,122 @@
100 103
101 case '1': // PF1 104 case '1': // PF1
102 push(PF_1); 105 push(PF_1);
  106 + rc = waitForUnlock();
103 break; 107 break;
104 108
105 case '2': // PF2 109 case '2': // PF2
106 push(PF_2); 110 push(PF_2);
  111 + rc = waitForUnlock();
107 break; 112 break;
108 113
109 case '3': // PF3 114 case '3': // PF3
110 push(PF_3); 115 push(PF_3);
  116 + rc = waitForUnlock();
111 break; 117 break;
112 118
113 case '4': // PF4 119 case '4': // PF4
114 push(PF_4); 120 push(PF_4);
  121 + rc = waitForUnlock();
115 break; 122 break;
116 123
117 case '5': // PF5 124 case '5': // PF5
118 push(PF_5); 125 push(PF_5);
  126 + rc = waitForUnlock();
119 break; 127 break;
120 128
121 case '6': // PF6 129 case '6': // PF6
122 push(PF_6); 130 push(PF_6);
  131 + rc = waitForUnlock();
123 break; 132 break;
124 133
125 case '7': // PF7 134 case '7': // PF7
126 push(PF_7); 135 push(PF_7);
  136 + rc = waitForUnlock();
127 break; 137 break;
128 138
129 case '8': // PF8 139 case '8': // PF8
130 push(PF_8); 140 push(PF_8);
  141 + rc = waitForUnlock();
131 break; 142 break;
132 143
133 case '9': // PF9 144 case '9': // PF9
134 push(PF_9); 145 push(PF_9);
  146 + rc = waitForUnlock();
135 break; 147 break;
136 148
137 case 'a': // PF10 149 case 'a': // PF10
138 push(PF_10); 150 push(PF_10);
  151 + rc = waitForUnlock();
139 break; 152 break;
140 153
141 case 'b': // PF11 154 case 'b': // PF11
142 push(PF_11); 155 push(PF_11);
  156 + rc = waitForUnlock();
143 break; 157 break;
144 158
145 case 'c': // PF12 159 case 'c': // PF12
146 push(PF_12); 160 push(PF_12);
  161 + rc = waitForUnlock();
147 break; 162 break;
148 163
149 case 'd': // PF13 164 case 'd': // PF13
150 push(PF_13); 165 push(PF_13);
  166 + rc = waitForUnlock();
151 break; 167 break;
152 168
153 case 'e': // PF14 169 case 'e': // PF14
154 push(PF_14); 170 push(PF_14);
  171 + rc = waitForUnlock();
155 break; 172 break;
156 173
157 case 'f': // PF15 174 case 'f': // PF15
158 push(PF_15); 175 push(PF_15);
  176 + rc = waitForUnlock();
159 break; 177 break;
160 178
161 case 'g': // PF16 179 case 'g': // PF16
162 push(PF_16); 180 push(PF_16);
  181 + rc = waitForUnlock();
163 break; 182 break;
164 183
165 case 'h': // PF17 184 case 'h': // PF17
166 push(PF_17); 185 push(PF_17);
  186 + rc = waitForUnlock();
167 break; 187 break;
168 188
169 case 'i': // PF18 189 case 'i': // PF18
170 push(PF_18); 190 push(PF_18);
  191 + rc = waitForUnlock();
171 break; 192 break;
172 193
173 case 'j': // PF19 194 case 'j': // PF19
174 push(PF_19); 195 push(PF_19);
  196 + rc = waitForUnlock();
175 break; 197 break;
176 198
177 case 'k': // PF20 199 case 'k': // PF20
178 push(PF_20); 200 push(PF_20);
  201 + rc = waitForUnlock();
179 break; 202 break;
180 203
181 case 'l': // PF21 204 case 'l': // PF21
182 push(PF_21); 205 push(PF_21);
  206 + rc = waitForUnlock();
183 break; 207 break;
184 208
185 case 'm': // PF22 209 case 'm': // PF22
186 push(PF_22); 210 push(PF_22);
  211 + rc = waitForUnlock();
187 break; 212 break;
188 213
189 case 'n': // PF23 214 case 'n': // PF23
190 push(PF_23); 215 push(PF_23);
  216 + rc = waitForUnlock();
191 break; 217 break;
192 218
193 case 'o': // PF24 219 case 'o': // PF24
194 push(PF_24); 220 push(PF_24);
  221 + rc = waitForUnlock();
195 break; 222 break;
196 223
197 case '@': // Send '@' character 224 case '@': // Send '@' character
@@ -200,14 +227,17 @@ @@ -200,14 +227,17 @@
200 227
201 case 'x': // PA1 228 case 'x': // PA1
202 push(PA_1); 229 push(PA_1);
  230 + rc = waitForUnlock();
203 break; 231 break;
204 232
205 case 'y': // PA2 233 case 'y': // PA2
206 push(PA_2); 234 push(PA_2);
  235 + rc = waitForUnlock();
207 break; 236 break;
208 237
209 case 'z': // PA3 238 case 'z': // PA3
210 push(PA_3); 239 push(PA_3);
  240 + rc = waitForUnlock();
211 break; 241 break;
212 242
213 case 'B': // PC_LEFTTAB = "@B" 243 case 'B': // PC_LEFTTAB = "@B"
@@ -318,6 +348,9 @@ @@ -318,6 +348,9 @@
318 // Global Const PC_FIELDPLUS = "@A@+" 348 // Global Const PC_FIELDPLUS = "@A@+"
319 } 349 }
320 350
  351 + if(rc)
  352 + return rc;
  353 +
321 text = (ptr+1); 354 text = (ptr+1);
322 } 355 }
323 356
@@ -327,6 +360,7 @@ @@ -327,6 +360,7 @@
327 push(text,sz); 360 push(text,sz);
328 } 361 }
329 362
  363 + return rc;
330 } 364 }
331 365
332 /// @brief Search 366 /// @brief Search
client/src/session/remote/actions.cc
@@ -215,6 +215,7 @@ @@ -215,6 +215,7 @@
215 } 215 }
216 216
217 void IPC::Session::print(LIB3270_CONTENT_OPTION option) { 217 void IPC::Session::print(LIB3270_CONTENT_OPTION option) {
  218 + throw std::system_error(ENOTSUP, std::system_category());
218 } 219 }
219 220
220 } 221 }
client/src/testprogram/testprogram.cc
@@ -99,6 +99,7 @@ @@ -99,6 +99,7 @@
99 host.connect(nullptr); 99 host.connect(nullptr);
100 100
101 cout 101 cout
  102 + << "Wait for unlock returns " << host.waitForUnlock() << std::endl
102 << "Connection state is " << toCharString(host.getConnectionState()) << std::endl 103 << "Connection state is " << toCharString(host.getConnectionState()) << std::endl
103 << "Program message is " << toCharString(host.getProgramMessage()) << std::endl 104 << "Program message is " << toCharString(host.getProgramMessage()) << std::endl
104 << "Luname is " << host.getLUName() << std::endl 105 << "Luname is " << host.getLUName() << std::endl
common/src/include/lib3270/ipc.h
@@ -284,7 +284,7 @@ @@ -284,7 +284,7 @@
284 /** 284 /**
285 * @brief Input string parsing control char. 285 * @brief Input string parsing control char.
286 */ 286 */
287 - void input(const char *text, const char control_char); 287 + LIB3270_KEYBOARD_LOCK_STATE input(const char *text, const char control_char);
288 288
289 // Properties. 289 // Properties.
290 virtual void getProperty(const char *name, int &value) const = 0; 290 virtual void getProperty(const char *name, int &value) const = 0;