Changeset 6453e306 in mainline for uspace/app/hdisk/input.c
- Timestamp:
- 2013-12-25T16:09:43Z (11 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ac36aed
- Parents:
- d51beba3
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/hdisk/input.c
rd51beba3 r6453e306 1 1 /* 2 * Copyright (c) 2012 ,2013 Dominik Taborsky2 * Copyright (c) 2012-2013 Dominik Taborsky 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 29 /** @addtogroup hdisk 30 30 * @{ 31 31 */ … … 36 36 #include <errno.h> 37 37 #include <stdlib.h> 38 39 38 #include "input.h" 40 39 41 40 typedef int (*conv_f)(const char *, char **, unsigned int, bool, void *); 42 static int convert(tinput_t * in, conv_f str_f, void * val);43 41 44 int get_input_line(tinput_t * in, char ** str) 42 static int convert(tinput_t *, conv_f, void *); 43 44 int get_input_line(tinput_t *in, char **str) 45 45 { 46 int rc; 47 rc = tinput_read(in, str); 48 if (rc == ENOENT) { 49 /* User requested exit */ 46 int rc = tinput_read(in, str); 47 if (rc == ENOENT) 50 48 return EINTR; 51 } 52 if (rc != EOK) { 53 /* Error in communication with console */ 49 50 if (rc != EOK) 54 51 return rc; 55 }52 56 53 /* Check for empty input. */ 57 54 if (str_cmp(*str, "") == 0) { … … 60 57 return EINVAL; 61 58 } 62 59 63 60 return EOK; 64 61 } 65 62 66 uint8_t get_input_uint8(tinput_t * 63 uint8_t get_input_uint8(tinput_t *in) 67 64 { 68 int rc;69 65 uint32_t val; 70 71 rc = convert(in, (conv_f) str_uint8_t, &val); 72 if (rc != EOK) { 73 errno = rc; 74 return 0; 75 } 76 77 return val; 78 } 79 80 uint32_t get_input_uint32(tinput_t * in) 81 { 82 int rc; 83 uint32_t val; 84 85 rc = convert(in, (conv_f) str_uint32_t, &val); 86 if (rc != EOK) { 87 errno = rc; 88 return 0; 89 } 90 91 return val; 92 } 93 94 uint64_t get_input_uint64(tinput_t * in) 95 { 96 int rc; 97 uint64_t val; 98 99 rc = convert(in, (conv_f) str_uint64_t, &val); 100 if (rc != EOK) { 101 errno = rc; 102 return 0; 103 } 104 105 return val; 106 } 107 108 size_t get_input_size_t(tinput_t * in) 109 { 110 int rc; 111 size_t val; 112 113 rc = convert(in, (conv_f) str_size_t, &val); 66 int rc = convert(in, (conv_f) str_uint8_t, &val); 114 67 if (rc != EOK) { 115 68 errno = rc; … … 121 74 } 122 75 123 static int convert(tinput_t * in, conv_f str_f, void * val)76 uint32_t get_input_uint32(tinput_t *in) 124 77 { 125 int rc; 126 char * str; 78 uint32_t val; 79 int rc = convert(in, (conv_f) str_uint32_t, &val); 80 if (rc != EOK) { 81 errno = rc; 82 return 0; 83 } 127 84 128 rc = get_input_line(in, &str); 85 errno = EOK; 86 return val; 87 } 88 89 uint64_t get_input_uint64(tinput_t *in) 90 { 91 uint64_t val; 92 int rc = convert(in, (conv_f) str_uint64_t, &val); 93 if (rc != EOK) { 94 errno = rc; 95 return 0; 96 } 97 98 errno = EOK; 99 return val; 100 } 101 102 size_t get_input_size_t(tinput_t *in) 103 { 104 size_t val; 105 int rc = convert(in, (conv_f) str_size_t, &val); 106 if (rc != EOK) { 107 errno = rc; 108 return 0; 109 } 110 111 errno = EOK; 112 return val; 113 } 114 115 static int convert(tinput_t *in, conv_f str_f, void *val) 116 { 117 char *str; 118 int rc = get_input_line(in, &str); 129 119 if (rc != EOK) { 130 120 printf("Error reading input.\n"); … … 133 123 134 124 rc = str_f(str, NULL, 10, true, val); 135 if (rc != EOK) {125 if (rc != EOK) 136 126 printf("Invalid value.\n"); 137 }138 127 139 128 free(str); 140 129 return rc; 141 130 } 142
Note:
See TracChangeset
for help on using the changeset viewer.