Skip to content

Commit 1eb0e7e

Browse files
committed
重构部分 cli_print 函数重新使编译成功
1 parent ed4545d commit 1eb0e7e

File tree

1 file changed

+70
-53
lines changed

1 file changed

+70
-53
lines changed

src/chsrc-main.c

Lines changed: 70 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ iterate_aliases (const char *aliases, bool (*callback)(const char *alias, void *
164164

165165

166166
/**
167-
* 用于 cli_print_supported_targets_ 的回调函数,打印每个别名
167+
* 用于 cli_print_targets_for_menu 的回调函数,打印每个别名
168168
*/
169169
bool
170170
callback_print_alias (const char *alias, void *user_data)
@@ -174,17 +174,18 @@ callback_print_alias (const char *alias, void *user_data)
174174
}
175175

176176
void
177-
cli_print_supported_targets_ (TargetRegisterInfo_t menu[], size_t size)
177+
callback_print_targets (void *data)
178178
{
179-
for (int i = 0; i < size; i++)
180-
{
181-
TargetRegisterInfo_t *entry = &menu[i];
182-
183-
// 使用通用的别名遍历函数打印所有别名
184-
iterate_aliases (entry->target->aliases, callback_print_alias, NULL);
179+
Target_t *target = (Target_t *) data;
180+
// 使用通用的别名遍历函数打印所有别名
181+
iterate_aliases (target->aliases, callback_print_alias, NULL);
182+
br(); // 每个target换行
183+
}
185184

186-
br(); // 每个target换行
187-
}
185+
void
186+
cli_print_targets_for_menu (XySeq_t *menu)
187+
{
188+
xy_seq_each (menu, callback_print_targets);
188189
br(); // 最后额外换行
189190
}
190191

@@ -201,50 +202,51 @@ cli_print_supported_targets ()
201202
char *msg = ENGLISH ? "Programming Languages" : "编程语言";
202203
say (bdgreen(msg));
203204
say ("-------------------------");
204-
cli_print_supported_targets_ (chsrc_pl_menu, xy_arylen(chsrc_pl_menu));
205+
cli_print_targets_for_menu (ProgStore.pl);
205206
}
206207

207208
{
208209
char *msg = ENGLISH ? "Operating Systems" : "操作系统";
209210
say (bdgreen(msg));
210211
say ("-------------------------");
211-
cli_print_supported_targets_ (chsrc_os_menu, xy_arylen(chsrc_os_menu));
212+
cli_print_targets_for_menu (ProgStore.os);
212213
}
213214

214215
{
215216
char *msg = ENGLISH ? "Softwares" : "软件";
216217
say (bdgreen(msg));
217218
say ("-------------------------");
218-
cli_print_supported_targets_ (chsrc_wr_menu, xy_arylen(chsrc_wr_menu));
219+
cli_print_targets_for_menu (ProgStore.wr);
219220
}
220221
}
221222

222223
void
223-
cli_print_supported_pl ()
224-
{
225-
char *msg = ENGLISH ? "Support following Programming Languages (same line indicates these targets are compatible)\n"
226-
: "支持对以下编程语言生态换源 (同一行表示这几个目标兼容)\n";
227-
say (bdgreen(msg));
228-
229-
cli_print_supported_targets_ (chsrc_pl_menu, xy_arylen(chsrc_pl_menu));
230-
}
231-
232-
void
233-
cli_print_supported_os ()
234-
{
235-
char *msg = ENGLISH ? "Support following Operating Systems (same line indicates these targets are compatible)\n"
236-
: "支持对以下操作系统换源 (同一行表示这几个目标兼容)\n";
237-
say (bdgreen(msg));
238-
cli_print_supported_targets_ (chsrc_os_menu, xy_arylen(chsrc_os_menu));
239-
}
240-
241-
void
242-
cli_print_supported_wr ()
224+
cli_print_menu (char *menu)
243225
{
244-
char *msg = ENGLISH ? "Support following Softwares (same line indicates these targets are compatible)\n"
245-
: "支持对以下软件换源 (同一行表示这几个目标兼容)\n";
246-
say (bdgreen(msg));
247-
cli_print_supported_targets_ (chsrc_wr_menu, xy_arylen(chsrc_wr_menu));
226+
if (xy_streql (menu, "pl"))
227+
{
228+
char *msg =
229+
ENGLISH ? "Support following Programming Languages (same line indicates these targets are compatible)\n"
230+
: "支持对以下编程语言生态换源 (同一行表示这几个目标兼容)\n";
231+
say (bdgreen(msg));
232+
cli_print_targets_for_menu (ProgStore.pl);
233+
}
234+
else if (xy_streql (menu, "os"))
235+
{
236+
char *msg =
237+
ENGLISH ? "Support following Operating Systems (same line indicates these targets are compatible)\n"
238+
: "支持对以下操作系统换源 (同一行表示这几个目标兼容)\n";
239+
say (bdgreen(msg));
240+
cli_print_targets_for_menu (ProgStore.os);
241+
}
242+
else if (xy_streql (menu, "wr"))
243+
{
244+
char *msg =
245+
ENGLISH ? "Support following Softwares (same line indicates these targets are compatible)\n"
246+
: "支持对以下软件换源 (同一行表示这几个目标兼容)\n";
247+
say (bdgreen(msg));
248+
cli_print_targets_for_menu (ProgStore.wr);
249+
}
248250
}
249251

250252

@@ -464,15 +466,16 @@ callback_match_alias (const char *alias, void *user_data)
464466
* @brief 用于 iterate_menu() 的回调函数
465467
*/
466468
bool
467-
callback_find_target (void *data)
469+
callback_is_one_of_target_aliases (void *data, void *input)
468470
{
469-
target = (Target_t *) data;
470-
if (iterate_aliases (target->aliases, callback_match_alias, (void *)input))
471+
Target_t *target = (Target_t *) data;
472+
if (iterate_aliases (target->aliases, callback_match_alias, input))
471473
{
472-
target->prelude();
473-
474+
target->preludefn();
474475
return true;
475476
}
477+
else
478+
return false;
476479
}
477480

478481
/**
@@ -486,9 +489,9 @@ callback_find_target (void *data)
486489
* @return 匹配到则返回true,未匹配到则返回false
487490
*/
488491
bool
489-
iterate_menu (XySeq_t *menu, const char *input, Target_t **target)
492+
iterate_menu (XySeq_t *menu, const char *input, Target_t **target)
490493
{
491-
Target_t *t = xy_seq_find (menu, callback_find_target);
494+
Target_t *t = xy_seq_find (menu, callback_is_one_of_target_aliases, (void *) input);
492495

493496
if (t)
494497
{
@@ -754,25 +757,39 @@ main (int argc, char const *argv[])
754757
else
755758
{
756759
target = argv[cli_arg_Target_pos];
757-
if (xy_streql (target, "mirrors") || xy_streql (target, "mirror"))
760+
if ( xy_streql (target, "mirrors")
761+
|| xy_streql (target, "mirror"))
758762
{
759-
cli_print_available_mirrors (); return Exit_OK;
763+
cli_print_available_mirrors ();
764+
return Exit_OK;
760765
}
761-
else if (xy_streql (target, "targets") || xy_streql (target, "target"))
766+
767+
else if ( xy_streql (target, "targets")
768+
|| xy_streql (target, "target"))
762769
{
763-
cli_print_supported_targets (); return Exit_OK;
770+
cli_print_supported_targets ();
771+
return Exit_OK;
764772
}
773+
765774
else if (xy_streql (target, "os"))
766775
{
767-
cli_print_supported_os (); return Exit_OK;
776+
cli_print_menu ("os");
777+
return Exit_OK;
768778
}
769-
else if (xy_streql (target, "lang") || xy_streql (target, "pl") || xy_streql (target, "language"))
779+
780+
else if ( xy_streql (target, "lang")
781+
|| xy_streql (target, "pl")
782+
|| xy_streql (target, "language"))
770783
{
771-
cli_print_supported_pl(); return Exit_OK;
784+
cli_print_menu ("pl");
785+
return Exit_OK;
772786
}
773-
else if (xy_streql (target, "ware") || xy_streql (target, "software"))
787+
788+
else if ( xy_streql (target, "ware")
789+
|| xy_streql (target, "software"))
774790
{
775-
cli_print_supported_wr (); return Exit_OK;
791+
cli_print_menu ("wr");
792+
return Exit_OK;
776793
}
777794

778795
matched = get_target (target, TargetOp_List_Config, NULL);

0 commit comments

Comments
 (0)