diff options
Diffstat (limited to 'src/auction/gnunet-auction-create.c')
-rw-r--r-- | src/auction/gnunet-auction-create.c | 292 |
1 files changed, 146 insertions, 146 deletions
diff --git a/src/auction/gnunet-auction-create.c b/src/auction/gnunet-auction-create.c index 3ee4d3554..42ab14aca 100644 --- a/src/auction/gnunet-auction-create.c +++ b/src/auction/gnunet-auction-create.c | |||
@@ -11,12 +11,12 @@ | |||
11 | WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
13 | Affero General Public License for more details. | 13 | Affero General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU Affero General Public License | 15 | You should have received a copy of the GNU Affero General Public License |
16 | along with this program. If not, see <http://www.gnu.org/licenses/>. | 16 | along with this program. If not, see <http://www.gnu.org/licenses/>. |
17 | 17 | ||
18 | SPDX-License-Identifier: AGPL3.0-or-later | 18 | SPDX-License-Identifier: AGPL3.0-or-later |
19 | */ | 19 | */ |
20 | 20 | ||
21 | /** | 21 | /** |
22 | * @file auction/gnunet-auction-create.c | 22 | * @file auction/gnunet-auction-create.c |
@@ -54,94 +54,94 @@ static int interactive; /** keep running in foreground */ | |||
54 | * @param cfg configuration | 54 | * @param cfg configuration |
55 | */ | 55 | */ |
56 | static void | 56 | static void |
57 | run (void *cls, | 57 | run(void *cls, |
58 | char *const *args, | 58 | char *const *args, |
59 | const char *cfgfile, | 59 | const char *cfgfile, |
60 | const struct GNUNET_CONFIGURATION_Handle *cfg) | 60 | const struct GNUNET_CONFIGURATION_Handle *cfg) |
61 | { | 61 | { |
62 | unsigned int i; | 62 | unsigned int i; |
63 | double cur, prev = DBL_MAX; | 63 | double cur, prev = DBL_MAX; |
64 | json_t *pmap; | 64 | json_t *pmap; |
65 | json_t *parray; | 65 | json_t *parray; |
66 | json_t *pnode; | 66 | json_t *pnode; |
67 | json_error_t jerr; | 67 | json_error_t jerr; |
68 | 68 | ||
69 | /* cmdline parsing */ | 69 | /* cmdline parsing */ |
70 | if (GNUNET_TIME_UNIT_ZERO.rel_value_us == dstart.rel_value_us) | 70 | if (GNUNET_TIME_UNIT_ZERO.rel_value_us == dstart.rel_value_us) |
71 | { | 71 | { |
72 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 72 | GNUNET_log(GNUNET_ERROR_TYPE_ERROR, |
73 | "required argument --regtime missing or invalid (zero)\n"); | 73 | "required argument --regtime missing or invalid (zero)\n"); |
74 | goto fail; | 74 | goto fail; |
75 | } | 75 | } |
76 | if (GNUNET_TIME_UNIT_ZERO.rel_value_us == dround.rel_value_us) | 76 | if (GNUNET_TIME_UNIT_ZERO.rel_value_us == dround.rel_value_us) |
77 | { | 77 | { |
78 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 78 | GNUNET_log(GNUNET_ERROR_TYPE_ERROR, |
79 | "required argument --roundtime missing or invalid (zero)\n"); | 79 | "required argument --roundtime missing or invalid (zero)\n"); |
80 | goto fail; | 80 | goto fail; |
81 | } | 81 | } |
82 | if (!fndesc) | 82 | if (!fndesc) |
83 | { | 83 | { |
84 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 84 | GNUNET_log(GNUNET_ERROR_TYPE_ERROR, |
85 | "required argument --description missing\n"); | 85 | "required argument --description missing\n"); |
86 | goto fail; | 86 | goto fail; |
87 | } | 87 | } |
88 | if (!fnprices) | 88 | if (!fnprices) |
89 | { | 89 | { |
90 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 90 | GNUNET_log(GNUNET_ERROR_TYPE_ERROR, |
91 | "required argument --pricemap missing\n"); | 91 | "required argument --pricemap missing\n"); |
92 | goto fail; | 92 | goto fail; |
93 | } | 93 | } |
94 | 94 | ||
95 | /* parse and check pricemap validity */ | 95 | /* parse and check pricemap validity */ |
96 | if (!(pmap = json_load_file (fnprices, JSON_DECODE_INT_AS_REAL, &jerr))) | 96 | if (!(pmap = json_load_file(fnprices, JSON_DECODE_INT_AS_REAL, &jerr))) |
97 | { | 97 | { |
98 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 98 | GNUNET_log(GNUNET_ERROR_TYPE_ERROR, |
99 | "parsing pricemap json at %d:%d: %s\n", | 99 | "parsing pricemap json at %d:%d: %s\n", |
100 | jerr.line, jerr.column, jerr.text); | 100 | jerr.line, jerr.column, jerr.text); |
101 | goto fail; | 101 | goto fail; |
102 | } | 102 | } |
103 | if (-1 == json_unpack_ex (pmap, &jerr, JSON_VALIDATE_ONLY, | 103 | if (-1 == json_unpack_ex(pmap, &jerr, JSON_VALIDATE_ONLY, |
104 | "{s:s, s:[]}", "currency", "prices")) | 104 | "{s:s, s:[]}", "currency", "prices")) |
105 | { | 105 | { |
106 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 106 | GNUNET_log(GNUNET_ERROR_TYPE_ERROR, |
107 | "validating pricemap: %s\n", jerr.text); | 107 | "validating pricemap: %s\n", jerr.text); |
108 | goto fail; | 108 | goto fail; |
109 | } | 109 | } |
110 | if (!(parray = json_object_get (pmap, "prices")) || !json_is_array (parray)) | 110 | if (!(parray = json_object_get(pmap, "prices")) || !json_is_array(parray)) |
111 | { | 111 | { |
112 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 112 | GNUNET_log(GNUNET_ERROR_TYPE_ERROR, |
113 | "could not get `prices` array node from pricemap\n"); | 113 | "could not get `prices` array node from pricemap\n"); |
114 | goto fail; | 114 | goto fail; |
115 | } | 115 | } |
116 | if (0 == json_array_size (parray)) | 116 | if (0 == json_array_size(parray)) |
117 | { | 117 | { |
118 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "empty pricemap array\n"); | 118 | GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "empty pricemap array\n"); |
119 | goto fail; | 119 | goto fail; |
120 | } | 120 | } |
121 | json_array_foreach (parray, i, pnode) | 121 | json_array_foreach(parray, i, pnode) |
122 | { | 122 | { |
123 | if (-1 == json_unpack_ex (pnode, &jerr, 0, "F", &cur)) | 123 | if (-1 == json_unpack_ex(pnode, &jerr, 0, "F", &cur)) |
124 | { | 124 | { |
125 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 125 | GNUNET_log(GNUNET_ERROR_TYPE_ERROR, |
126 | "validating pricearray index %d: %s\n", i, jerr.text); | 126 | "validating pricearray index %d: %s\n", i, jerr.text); |
127 | goto fail; | 127 | goto fail; |
128 | } | 128 | } |
129 | if (prev <= cur) | 129 | if (prev <= cur) |
130 | { | 130 | { |
131 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 131 | GNUNET_log(GNUNET_ERROR_TYPE_ERROR, |
132 | "validating pricearray index %d: " | 132 | "validating pricearray index %d: " |
133 | "prices must be strictly monotonically decreasing\n", | 133 | "prices must be strictly monotonically decreasing\n", |
134 | i); | 134 | i); |
135 | goto fail; | 135 | goto fail; |
136 | } | 136 | } |
137 | prev = cur; | 137 | prev = cur; |
138 | } | 138 | } |
139 | 139 | ||
140 | return; | 140 | return; |
141 | 141 | ||
142 | fail: | 142 | fail: |
143 | ret = 1; | 143 | ret = 1; |
144 | return; | 144 | return; |
145 | } | 145 | } |
146 | 146 | ||
147 | 147 | ||
@@ -153,64 +153,64 @@ fail: | |||
153 | * @return 0 ok, 1 on error | 153 | * @return 0 ok, 1 on error |
154 | */ | 154 | */ |
155 | int | 155 | int |
156 | main (int argc, char *const *argv) | 156 | main(int argc, char *const *argv) |
157 | { | 157 | { |
158 | struct GNUNET_GETOPT_CommandLineOption options[] = { | 158 | struct GNUNET_GETOPT_CommandLineOption options[] = { |
159 | 159 | GNUNET_GETOPT_option_filename('d', | |
160 | GNUNET_GETOPT_option_filename ('d', | 160 | "description", |
161 | "description", | 161 | "FILE", |
162 | "FILE", | 162 | gettext_noop("description of the item to be sold"), |
163 | gettext_noop ("description of the item to be sold"), | 163 | &fndesc), |
164 | &fndesc), | 164 | |
165 | 165 | GNUNET_GETOPT_option_filename('p', | |
166 | GNUNET_GETOPT_option_filename ('p', | 166 | "pricemap", |
167 | "pricemap", | 167 | "FILE", |
168 | "FILE", | 168 | gettext_noop("mapping of possible prices"), |
169 | gettext_noop ("mapping of possible prices"), | 169 | &fnprices), |
170 | &fnprices), | 170 | |
171 | 171 | GNUNET_GETOPT_option_relative_time('r', | |
172 | GNUNET_GETOPT_option_relative_time ('r', | 172 | "roundtime", |
173 | "roundtime", | 173 | "DURATION", |
174 | "DURATION", | 174 | gettext_noop("max duration per round"), |
175 | gettext_noop ("max duration per round"), | 175 | &dround), |
176 | &dround), | 176 | |
177 | 177 | GNUNET_GETOPT_option_relative_time('s', | |
178 | GNUNET_GETOPT_option_relative_time ('s', | 178 | "regtime", |
179 | "regtime", | 179 | "DURATION", |
180 | "DURATION", | 180 | gettext_noop("duration until auction starts"), |
181 | gettext_noop ("duration until auction starts"), | 181 | &dstart), |
182 | &dstart), | 182 | GNUNET_GETOPT_option_uint('m', |
183 | GNUNET_GETOPT_option_uint ('m', | 183 | "m", |
184 | "m", | 184 | "NUMBER", |
185 | "NUMBER", | 185 | gettext_noop("number of items to sell\n" |
186 | gettext_noop ("number of items to sell\n" | 186 | "0 for first price auction\n" |
187 | "0 for first price auction\n" | 187 | ">0 for vickrey/M+1st price auction"), |
188 | ">0 for vickrey/M+1st price auction"), | 188 | &m), |
189 | &m), | 189 | |
190 | 190 | GNUNET_GETOPT_option_flag('u', | |
191 | GNUNET_GETOPT_option_flag ('u', | 191 | "public", |
192 | "public", | 192 | gettext_noop("public auction outcome"), |
193 | gettext_noop ("public auction outcome"), | 193 | &outcome), |
194 | &outcome), | 194 | |
195 | 195 | GNUNET_GETOPT_option_flag('i', | |
196 | GNUNET_GETOPT_option_flag ('i', | 196 | "interactive", |
197 | "interactive", | 197 | gettext_noop("keep running in foreground until auction completes"), |
198 | gettext_noop ("keep running in foreground until auction completes"), | 198 | &interactive), |
199 | &interactive), | 199 | |
200 | 200 | GNUNET_GETOPT_OPTION_END | |
201 | GNUNET_GETOPT_OPTION_END | 201 | }; |
202 | }; | 202 | |
203 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | 203 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args(argc, argv, &argc, &argv)) |
204 | return 2; | 204 | return 2; |
205 | 205 | ||
206 | ret = (GNUNET_OK == | 206 | ret = (GNUNET_OK == |
207 | GNUNET_PROGRAM_run (argc, argv, | 207 | GNUNET_PROGRAM_run(argc, argv, |
208 | "gnunet-auction-create", | 208 | "gnunet-auction-create", |
209 | gettext_noop ("create a new auction and " | 209 | gettext_noop("create a new auction and " |
210 | "start listening for bidders"), | 210 | "start listening for bidders"), |
211 | options, | 211 | options, |
212 | &run, | 212 | &run, |
213 | NULL)) ? ret : 1; | 213 | NULL)) ? ret : 1; |
214 | GNUNET_free ((void*) argv); | 214 | GNUNET_free((void*)argv); |
215 | return ret; | 215 | return ret; |
216 | } | 216 | } |