Make the refactor run correctly

This commit is contained in:
Aoran Zeng 2023-09-02 19:38:32 +08:00
parent 906aef50a5
commit 540d25fdf1

29
chsrc.c
View File

@ -841,12 +841,12 @@ print_help ()
/** /**
* targets列表`input`target匹配 * targets列表`input`target匹配
* *
* @param[out] target_func targets列表中最后的target_info信息 * @param[out] target_info targets列表中最后的target_info信息
* *
* @return truefalse * @return truefalse
*/ */
bool bool
iterate_targets_(const char const*** array, size_t size, const char* input, const char const*** target_func) iterate_targets_(const char const*** array, size_t size, const char* input, const char const*** target_info)
{ {
int matched = 0; int matched = 0;
@ -869,7 +869,7 @@ iterate_targets_(const char const*** array, size_t size, const char* input, cons
} }
if(!matched) { if(!matched) {
*target_func = NULL; *target_info = NULL;
return false; return false;
} }
@ -877,11 +877,11 @@ iterate_targets_(const char const*** array, size_t size, const char* input, cons
k++; k++;
alias = target[k]; alias = target[k];
} while (NULL!=alias); } while (NULL!=alias);
*target_func = target + k; *target_info = target + k + 1;
return true; return true;
} }
#define iterate_targets(ary, input, target_func) iterate_targets_(ary, xy_arylen(ary), input, target_func) #define iterate_targets(ary, input, target) iterate_targets_(ary, xy_arylen(ary), input, target)
#define Target_Set_Source 1 #define Target_Set_Source 1
#define Target_Get_Source 2 #define Target_Get_Source 2
@ -898,27 +898,28 @@ iterate_targets_(const char const*** array, size_t size, const char* input, cons
bool bool
get_target (const char* input, int code) get_target (const char* input, int code)
{ {
const char const** target_func = NULL; const char const** target_tmp = NULL;
bool matched = iterate_targets(pl_packagers, input, &target_func); bool matched = iterate_targets(pl_packagers, input, &target_tmp);
if (!matched) matched = iterate_targets(os_systems, input, &target_func); if (!matched) matched = iterate_targets(os_systems, input, &target_tmp);
if (!matched) matched = iterate_targets(wr_softwares, input, &target_func); if (!matched) matched = iterate_targets(wr_softwares, input, &target_tmp);
if (!matched) { if (!matched) {
return false; return false;
} }
target_info* target = (target_info*) *target_tmp;
if (Target_Set_Source==code) { if (Target_Set_Source==code) {
puts("chsrc: 对该软件换源"); puts("chsrc: 对该软件换源");
call_cmd ((void*) *(target_func+code), NULL); // call_cmd ((void*) *(target_func+code), NULL);
target->setfn(NULL);
} }
else if (Target_Get_Source==code) { else if (Target_Get_Source==code) {
puts("chsrc: 查看该软件的换源情况"); target->getfn("");
call_cmd ((void*) *(target_func+code), NULL);
} }
else if (Target_List_Sources==code) { else if (Target_List_Sources==code) {
source_info* sources = (source_info*) * (target_func + Target_List_Sources); print_supported_sources_for_target (target->sources);
print_supported_sources_for_target (sources);
} }
return true; return true;
} }