Commit cd2eb52b761969143b23c8a0e67138fff5ea28b1
1 parent
a63e0cc5
Exists in
master
and in
2 other branches
Adding property methods.
Showing
5 changed files
with
105 additions
and
43 deletions
Show diff stats
src/core/properties/boolean.c
| @@ -222,3 +222,30 @@ | @@ -222,3 +222,30 @@ | ||
| 222 | 222 | ||
| 223 | } | 223 | } |
| 224 | 224 | ||
| 225 | +int lib3270_set_boolean_property(H3270 *hSession, const char *name, int value, int seconds) | ||
| 226 | +{ | ||
| 227 | + size_t ix; | ||
| 228 | + const LIB3270_INT_PROPERTY * properties; | ||
| 229 | + | ||
| 230 | + if(seconds) | ||
| 231 | + { | ||
| 232 | + lib3270_wait_for_ready(hSession, seconds); | ||
| 233 | + } | ||
| 234 | + | ||
| 235 | + properties = lib3270_get_boolean_properties_list(); | ||
| 236 | + for(ix = 0; properties[ix].name; ix++) | ||
| 237 | + { | ||
| 238 | + if(!strcasecmp(name,properties[ix].name)) | ||
| 239 | + { | ||
| 240 | + if(properties[ix].set) | ||
| 241 | + return properties[ix].set(hSession, value); | ||
| 242 | + else | ||
| 243 | + return errno = EPERM; | ||
| 244 | + } | ||
| 245 | + | ||
| 246 | + } | ||
| 247 | + | ||
| 248 | + return errno = ENOENT; | ||
| 249 | + | ||
| 250 | +} | ||
| 251 | + |
src/core/properties/signed.c
| @@ -155,50 +155,37 @@ int lib3270_set_int_property(H3270 *hSession, const char *name, int value, int s | @@ -155,50 +155,37 @@ int lib3270_set_int_property(H3270 *hSession, const char *name, int value, int s | ||
| 155 | const LIB3270_INT_PROPERTY * properties; | 155 | const LIB3270_INT_PROPERTY * properties; |
| 156 | 156 | ||
| 157 | if(seconds) | 157 | if(seconds) |
| 158 | - { | ||
| 159 | lib3270_wait_for_ready(hSession, seconds); | 158 | lib3270_wait_for_ready(hSession, seconds); |
| 160 | - } | ||
| 161 | 159 | ||
| 162 | - // Check for boolean properties | ||
| 163 | - properties = lib3270_get_boolean_properties_list(); | 160 | + // Check for INT Properties |
| 161 | + properties = lib3270_get_int_properties_list(); | ||
| 164 | for(ix = 0; properties[ix].name; ix++) | 162 | for(ix = 0; properties[ix].name; ix++) |
| 165 | { | 163 | { |
| 166 | if(!strcasecmp(name,properties[ix].name)) | 164 | if(!strcasecmp(name,properties[ix].name)) |
| 167 | { | 165 | { |
| 168 | if(properties[ix].set) | 166 | if(properties[ix].set) |
| 169 | - { | ||
| 170 | return properties[ix].set(hSession, value); | 167 | return properties[ix].set(hSession, value); |
| 171 | - } | ||
| 172 | else | 168 | else |
| 173 | - { | ||
| 174 | - errno = EPERM; | ||
| 175 | - return -1; | ||
| 176 | - } | 169 | + return errno = EPERM; |
| 177 | } | 170 | } |
| 178 | 171 | ||
| 179 | } | 172 | } |
| 180 | 173 | ||
| 181 | - // Check for INT Properties | ||
| 182 | - properties = lib3270_get_int_properties_list(); | 174 | + // Check for boolean properties |
| 175 | + properties = lib3270_get_boolean_properties_list(); | ||
| 183 | for(ix = 0; properties[ix].name; ix++) | 176 | for(ix = 0; properties[ix].name; ix++) |
| 184 | { | 177 | { |
| 185 | if(!strcasecmp(name,properties[ix].name)) | 178 | if(!strcasecmp(name,properties[ix].name)) |
| 186 | { | 179 | { |
| 187 | if(properties[ix].set) | 180 | if(properties[ix].set) |
| 188 | - { | ||
| 189 | return properties[ix].set(hSession, value); | 181 | return properties[ix].set(hSession, value); |
| 190 | - } | ||
| 191 | else | 182 | else |
| 192 | - { | ||
| 193 | - errno = EPERM; | ||
| 194 | - return -1; | ||
| 195 | - } | 183 | + return errno = EPERM; |
| 196 | } | 184 | } |
| 197 | 185 | ||
| 198 | } | 186 | } |
| 199 | 187 | ||
| 200 | - errno = ENOENT; | ||
| 201 | - return -1; | 188 | + return errno = ENOENT; |
| 202 | 189 | ||
| 203 | } | 190 | } |
| 204 | 191 |
src/core/properties/string.c
| @@ -224,8 +224,7 @@ int lib3270_set_string_property(H3270 *hSession, const char *name, const char * | @@ -224,8 +224,7 @@ int lib3270_set_string_property(H3270 *hSession, const char *name, const char * | ||
| 224 | } | 224 | } |
| 225 | else | 225 | else |
| 226 | { | 226 | { |
| 227 | - errno = EPERM; | ||
| 228 | - return -1; | 227 | + return errno = EPERM; |
| 229 | } | 228 | } |
| 230 | } | 229 | } |
| 231 | 230 | ||
| @@ -247,8 +246,7 @@ int lib3270_set_string_property(H3270 *hSession, const char *name, const char * | @@ -247,8 +246,7 @@ int lib3270_set_string_property(H3270 *hSession, const char *name, const char * | ||
| 247 | } | 246 | } |
| 248 | else | 247 | else |
| 249 | { | 248 | { |
| 250 | - errno = EPERM; | ||
| 251 | - return -1; | 249 | + return errno = EPERM; |
| 252 | } | 250 | } |
| 253 | } | 251 | } |
| 254 | 252 | ||
| @@ -270,8 +268,7 @@ int lib3270_set_string_property(H3270 *hSession, const char *name, const char * | @@ -270,8 +268,7 @@ int lib3270_set_string_property(H3270 *hSession, const char *name, const char * | ||
| 270 | } | 268 | } |
| 271 | else | 269 | else |
| 272 | { | 270 | { |
| 273 | - errno = EPERM; | ||
| 274 | - return -1; | 271 | + return errno = EPERM; |
| 275 | } | 272 | } |
| 276 | } | 273 | } |
| 277 | 274 | ||
| @@ -293,28 +290,17 @@ int lib3270_set_string_property(H3270 *hSession, const char *name, const char * | @@ -293,28 +290,17 @@ int lib3270_set_string_property(H3270 *hSession, const char *name, const char * | ||
| 293 | } | 290 | } |
| 294 | else | 291 | else |
| 295 | { | 292 | { |
| 296 | - errno = EPERM; | ||
| 297 | - return -1; | 293 | + return errno = EPERM; |
| 298 | } | 294 | } |
| 299 | } | 295 | } |
| 300 | 296 | ||
| 301 | } | 297 | } |
| 302 | } | 298 | } |
| 303 | 299 | ||
| 304 | - errno = ENOENT; | ||
| 305 | - return -1; | 300 | + return errno = ENOENT; |
| 306 | 301 | ||
| 307 | } | 302 | } |
| 308 | 303 | ||
| 309 | -/* | ||
| 310 | -LIB3270_EXPORT int lib3270_set_luname(H3270 *hSession, const char *luname) | ||
| 311 | -{ | ||
| 312 | - FAIL_IF_ONLINE(hSession); | ||
| 313 | - strncpy(hSession->lu.names,luname,LIB3270_LUNAME_LENGTH); | ||
| 314 | - return 0; | ||
| 315 | -} | ||
| 316 | -*/ | ||
| 317 | - | ||
| 318 | LIB3270_EXPORT int lib3270_set_lunames(H3270 *hSession, const char *lunames) | 304 | LIB3270_EXPORT int lib3270_set_lunames(H3270 *hSession, const char *lunames) |
| 319 | { | 305 | { |
| 320 | FAIL_IF_ONLINE(hSession); | 306 | FAIL_IF_ONLINE(hSession); |
src/core/properties/unsigned.c
| @@ -171,4 +171,30 @@ static unsigned int lib3270_get_host_type_number(const H3270 *hSession) | @@ -171,4 +171,30 @@ static unsigned int lib3270_get_host_type_number(const H3270 *hSession) | ||
| 171 | return properties; | 171 | return properties; |
| 172 | } | 172 | } |
| 173 | 173 | ||
| 174 | +int lib3270_set_uint_property(H3270 *hSession, const char *name, unsigned int value, int seconds) | ||
| 175 | +{ | ||
| 176 | + size_t ix; | ||
| 177 | + const LIB3270_UINT_PROPERTY * properties; | ||
| 178 | + | ||
| 179 | + if(seconds) | ||
| 180 | + lib3270_wait_for_ready(hSession, seconds); | ||
| 181 | + | ||
| 182 | + // Check for INT Properties | ||
| 183 | + properties = lib3270_get_unsigned_properties_list(); | ||
| 184 | + | ||
| 185 | + for(ix = 0; properties[ix].name; ix++) | ||
| 186 | + { | ||
| 187 | + if(!strcasecmp(name,properties[ix].name)) | ||
| 188 | + { | ||
| 189 | + if(properties[ix].set) | ||
| 190 | + return properties[ix].set(hSession, value); | ||
| 191 | + else | ||
| 192 | + return errno = EPERM; | ||
| 193 | + } | ||
| 194 | + | ||
| 195 | + } | ||
| 196 | + | ||
| 197 | + return errno = ENOENT; | ||
| 198 | + | ||
| 199 | +} | ||
| 174 | 200 |
src/include/lib3270/properties.h
| @@ -131,26 +131,62 @@ | @@ -131,26 +131,62 @@ | ||
| 131 | LIB3270_EXPORT int lib3270_get_int_property(H3270 * hSession, const char *name, int seconds); | 131 | LIB3270_EXPORT int lib3270_get_int_property(H3270 * hSession, const char *name, int seconds); |
| 132 | 132 | ||
| 133 | /** | 133 | /** |
| 134 | - * @brief Set lib3270 integer property by name. | 134 | + * @brief Set lib3270 signed int property by name. |
| 135 | * | 135 | * |
| 136 | * @param name Nome of the property. | 136 | * @param name Nome of the property. |
| 137 | * @param value New property value. | 137 | * @param value New property value. |
| 138 | * @param seconds Time (in seconds) whe should wait for "ready" state (0 = none). | 138 | * @param seconds Time (in seconds) whe should wait for "ready" state (0 = none). |
| 139 | * | 139 | * |
| 140 | - * @return 0 if ok, -1 in case of error (sets errno). | 140 | + * @return 0 if ok error code if not (sets errno). |
| 141 | + * | ||
| 142 | + * @retval EPERM Property is ready only. | ||
| 143 | + * @retval ENOENT Can't find a property with this name. | ||
| 141 | * | 144 | * |
| 142 | */ | 145 | */ |
| 143 | LIB3270_EXPORT int lib3270_set_int_property(H3270 * hSession, const char *name, int value, int seconds); | 146 | LIB3270_EXPORT int lib3270_set_int_property(H3270 * hSession, const char *name, int value, int seconds); |
| 144 | 147 | ||
| 145 | /** | 148 | /** |
| 146 | - * @brief Set lib3270 integer property by name. | 149 | + * @brief Set lib3270 unsigned int property by name. |
| 150 | + * | ||
| 151 | + * @param name Nome of the property. | ||
| 152 | + * @param value New property value. | ||
| 153 | + * @param seconds Time (in seconds) whe should wait for "ready" state (0 = none). | ||
| 154 | + * | ||
| 155 | + * @return 0 if ok error code if not (sets errno). | ||
| 156 | + * | ||
| 157 | + * @retval EPERM Property is ready only. | ||
| 158 | + * @retval ENOENT Can't find a property with this name. | ||
| 159 | + * | ||
| 160 | + */ | ||
| 161 | + LIB3270_EXPORT int lib3270_set_uint_property(H3270 * hSession, const char *name, unsigned int value, int seconds); | ||
| 162 | + | ||
| 163 | + /** | ||
| 164 | + * @brief Set lib3270 boolean property by name. | ||
| 165 | + * | ||
| 166 | + * @param name Nome of the property. | ||
| 167 | + * @param value New property value. | ||
| 168 | + * @param seconds Time (in seconds) whe should wait for "ready" state (0 = none). | ||
| 169 | + * | ||
| 170 | + * @return 0 if ok error code if not (sets errno). | ||
| 171 | + * | ||
| 172 | + * @retval EPERM Property is ready only. | ||
| 173 | + * @retval ENOENT Can't find a property with this name. | ||
| 174 | + * | ||
| 175 | + */ | ||
| 176 | + LIB3270_EXPORT int lib3270_set_boolean_property(H3270 * hSession, const char *name, int value, int seconds); | ||
| 177 | + | ||
| 178 | + /** | ||
| 179 | + * @brief Set lib3270 string property by name. | ||
| 147 | * | 180 | * |
| 148 | * @param hSession Session handle. | 181 | * @param hSession Session handle. |
| 149 | * @param name Nome of the property. | 182 | * @param name Nome of the property. |
| 150 | * @param value New property value. | 183 | * @param value New property value. |
| 151 | * @param seconds Time (in seconds) whe should wait for "ready" state (0 = none). | 184 | * @param seconds Time (in seconds) whe should wait for "ready" state (0 = none). |
| 152 | * | 185 | * |
| 153 | - * @return 0 if ok, -1 in case of error (sets errno). | 186 | + * @return 0 if ok error code if not (sets errno). |
| 187 | + * | ||
| 188 | + * @retval EPERM Property is ready only. | ||
| 189 | + * @retval ENOENT Can't find a property with this name. | ||
| 154 | * | 190 | * |
| 155 | */ | 191 | */ |
| 156 | LIB3270_EXPORT int lib3270_set_string_property(H3270 * hSession, const char *name, const char * value, int seconds); | 192 | LIB3270_EXPORT int lib3270_set_string_property(H3270 * hSession, const char *name, const char * value, int seconds); |