mirror of
https://github.com/RubyMetric/chsrc
synced 2025-06-09 04:16:21 +08:00
Rename source.h to mirror.c
This commit is contained in:
parent
7fb00280a8
commit
5d7a13a56b
@ -426,7 +426,7 @@ make clean
|
|||||||
## ❤️ 致谢
|
## ❤️ 致谢
|
||||||
|
|
||||||
感谢各个镜像站提供的优质免费镜像服务
|
感谢各个镜像站提供的优质免费镜像服务
|
||||||
1. [source.h](./include/source.h) 包含了通用的镜像站信息
|
1. [mirror.c](./src/framework/mirror.c) 包含了通用的镜像站信息
|
||||||
2. 各个recipe内部定义的专用镜像站
|
2. 各个recipe内部定义的专用镜像站
|
||||||
|
|
||||||
另外特别感谢以下组织或项目:
|
另外特别感谢以下组织或项目:
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
#define Chsrc_Maintain_URL "https://github.com/RubyMetric/chsrc"
|
#define Chsrc_Maintain_URL "https://github.com/RubyMetric/chsrc"
|
||||||
#define Chsrc_Maintain_URL2 "https://gitee.com/RubyMetric/chsrc"
|
#define Chsrc_Maintain_URL2 "https://gitee.com/RubyMetric/chsrc"
|
||||||
|
|
||||||
#include "chsrc-framework.h"
|
#include "framework/core.c"
|
||||||
|
|
||||||
#include "recipe/lang/Ruby.c"
|
#include "recipe/lang/Ruby.c"
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** ------------------------------------------------------------
|
/** ------------------------------------------------------------
|
||||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
* -------------------------------------------------------------
|
* -------------------------------------------------------------
|
||||||
* File Name : chsrc-framework.h
|
* File Name : core.h
|
||||||
* File Authors : Aoran Zeng <ccmywish@qq.com>
|
* File Authors : Aoran Zeng <ccmywish@qq.com>
|
||||||
* | Heng Guo <2085471348@qq.com>
|
* | Heng Guo <2085471348@qq.com>
|
||||||
* Contributors : Peng Gao <gn3po4g@outlook.com>
|
* Contributors : Peng Gao <gn3po4g@outlook.com>
|
||||||
@ -14,8 +14,8 @@
|
|||||||
* ------------------------------------------------------------*/
|
* ------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "xy.h"
|
#include "xy.h"
|
||||||
#include "source.h"
|
#include "struct.h"
|
||||||
// #include <pthread.h>
|
#include "mirror.c"
|
||||||
|
|
||||||
#define App_Name "chsrc"
|
#define App_Name "chsrc"
|
||||||
|
|
@ -1,6 +1,7 @@
|
|||||||
/** ------------------------------------------------------------
|
/** ------------------------------------------------------------
|
||||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
* -------------------------------------------------------------
|
* -------------------------------------------------------------
|
||||||
|
* File Name : mirror.c
|
||||||
* File Authors : Aoran Zeng <ccmywish@qq.com>
|
* File Authors : Aoran Zeng <ccmywish@qq.com>
|
||||||
* | Heng Guo <2085471348@qq.com>
|
* | Heng Guo <2085471348@qq.com>
|
||||||
* Contributors : Shengwei Chen <414685209@qq.com>
|
* Contributors : Shengwei Chen <414685209@qq.com>
|
||||||
@ -8,39 +9,14 @@
|
|||||||
* Created On : <2023-08-29>
|
* Created On : <2023-08-29>
|
||||||
* Last Modified : <2024-11-21>
|
* Last Modified : <2024-11-21>
|
||||||
*
|
*
|
||||||
* 通用镜像站与换源信息
|
* 通用镜像站
|
||||||
* ------------------------------------------------------------*/
|
* ------------------------------------------------------------*/
|
||||||
|
|
||||||
typedef struct SpeedMeasureInfo_t
|
|
||||||
{
|
|
||||||
bool skip; /* 是否默认跳过 */
|
|
||||||
const char *skip_reason_CN; /* 跳过的原因(中文)*/
|
|
||||||
const char *skip_reason_EN; /* 跳过的原因(英文)*/
|
|
||||||
const char *url; /* 测速链接 */
|
|
||||||
}
|
|
||||||
SpeedMeasureInfo;
|
|
||||||
|
|
||||||
#define SKIP true
|
|
||||||
#define NotSkip false
|
|
||||||
#define ToFill NULL
|
|
||||||
#define NA NULL
|
|
||||||
|
|
||||||
typedef struct MirrorSite_t
|
|
||||||
{
|
|
||||||
const char *code; /* 用于用户指定镜像站 */
|
|
||||||
const char *abbr; /* 需要使用镜像站的英文名时,用这个代替,因为大部分镜像站没有提供正式的英文名 */
|
|
||||||
const char *name; /* 镜像站中文名 */
|
|
||||||
const char *site; /* 镜像站首页 */
|
|
||||||
SpeedMeasureInfo smi;
|
|
||||||
}
|
|
||||||
MirrorSite;
|
|
||||||
|
|
||||||
#define Big_File_ubuntu "/24.04/ubuntu-24.04.1-desktop-amd64.iso" // 5.8 GB
|
#define Big_File_ubuntu "/24.04/ubuntu-24.04.1-desktop-amd64.iso" // 5.8 GB
|
||||||
#define Big_File_ctan "/systems/texlive/Images/texlive.iso" // 4.8 GB
|
#define Big_File_ctan "/systems/texlive/Images/texlive.iso" // 4.8 GB
|
||||||
#define Big_File_archlinux "/iso/latest/archlinux-x86_64.iso" // 800 MB
|
#define Big_File_archlinux "/iso/latest/archlinux-x86_64.iso" // 800 MB
|
||||||
#define Big_File_deepin "/20.9/deepin-desktop-community-20.9-amd64.iso" // 4 GB
|
#define Big_File_deepin "/20.9/deepin-desktop-community-20.9-amd64.iso" // 4 GB
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 教育网镜像
|
* 教育网镜像
|
||||||
*
|
*
|
||||||
@ -208,76 +184,3 @@ UserDefine = {
|
|||||||
"user", "用户自定义", "用户自定义", NULL,
|
"user", "用户自定义", "用户自定义", NULL,
|
||||||
{SKIP, "用户自定义源不测速", "SKIP for user-defined source", NULL}
|
{SKIP, "用户自定义源不测速", "SKIP for user-defined source", NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
typedef struct SourceInfo_t
|
|
||||||
{
|
|
||||||
const MirrorSite *mirror;
|
|
||||||
const char *url;
|
|
||||||
}
|
|
||||||
SourceInfo;
|
|
||||||
|
|
||||||
#define def_sources_n(t) const size_t t##_sources_n = xy_arylen(t##_sources)
|
|
||||||
|
|
||||||
enum Capability
|
|
||||||
{
|
|
||||||
CanNot,
|
|
||||||
FullyCan,
|
|
||||||
PartiallyCan
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/* Target Feature Info */
|
|
||||||
typedef struct FeatInfo_t
|
|
||||||
{
|
|
||||||
bool can_get;
|
|
||||||
bool can_reset; /* 有的reset不是暂时没有实现,而是现在的实现根本就无法重置 */
|
|
||||||
|
|
||||||
bool can_english;
|
|
||||||
|
|
||||||
bool can_user_define; /* 用户自定义换源URL */
|
|
||||||
|
|
||||||
enum Capability cap_locally;
|
|
||||||
char *cap_locally_explain;
|
|
||||||
|
|
||||||
char *note;
|
|
||||||
}
|
|
||||||
FeatInfo;
|
|
||||||
|
|
||||||
|
|
||||||
/* Target Info */
|
|
||||||
typedef struct TargetInfo_t
|
|
||||||
{
|
|
||||||
void (*getfn) (char *option);
|
|
||||||
void (*setfn) (char *option);
|
|
||||||
void (*resetfn) (char *option);
|
|
||||||
|
|
||||||
FeatInfo (*featfn) (char *option);
|
|
||||||
|
|
||||||
SourceInfo *sources;
|
|
||||||
size_t sources_n;
|
|
||||||
}
|
|
||||||
TargetInfo;
|
|
||||||
|
|
||||||
|
|
||||||
#define def_target_inner_s(t) NULL, t##_setsrc, NULL, NULL
|
|
||||||
#define def_target_inner_sr(t) NULL, t##_setsrc, t##_resetsrc, NULL
|
|
||||||
#define def_target_inner_sf(t) NULL, t##_setsrc, NULL, t##_feat
|
|
||||||
#define def_target_inner_srf(t) NULL, t##_setsrc, t##_resetsrc, t##_feat
|
|
||||||
#define def_target_inner_gs(t) t##_getsrc, t##_setsrc, NULL, NULL
|
|
||||||
#define def_target_inner_gsr(t) t##_getsrc, t##_setsrc, t##_resetsrc, NULL
|
|
||||||
#define def_target_inner_gsf(t) t##_getsrc, t##_setsrc, NULL, t##_feat
|
|
||||||
#define def_target_inner_gsrf(t) t##_getsrc, t##_setsrc, t##_resetsrc, t##_feat
|
|
||||||
|
|
||||||
#define def_target_sourcesn(t) t##_sources, t##_sources_n
|
|
||||||
|
|
||||||
// 大部分target还不支持reset,所以暂时先默认设置为NULL来过渡
|
|
||||||
#define def_target(t) TargetInfo t##_target = {def_target_inner_gs(t),def_target_sourcesn(t)}
|
|
||||||
#define def_target_s(t) TargetInfo t##_target = {def_target_inner_s(t),def_target_sourcesn(t)}
|
|
||||||
#define def_target_sr(t) TargetInfo t##_target = {def_target_inner_sr(t),def_target_sourcesn(t)}
|
|
||||||
#define def_target_sf(t) TargetInfo t##_target = {def_target_inner_sf(t),def_target_sourcesn(t)}
|
|
||||||
#define def_target_srf(t) TargetInfo t##_target = {def_target_inner_srf(t),def_target_sourcesn(t)}
|
|
||||||
#define def_target_gs(t) TargetInfo t##_target = {def_target_inner_gs(t),def_target_sourcesn(t)}
|
|
||||||
#define def_target_gsr(t) TargetInfo t##_target = {def_target_inner_gsr(t),def_target_sourcesn(t)}
|
|
||||||
#define def_target_gsf(t) TargetInfo t##_target = {def_target_inner_gsf(t),def_target_sourcesn(t)}
|
|
||||||
#define def_target_gsrf(t) TargetInfo t##_target = {def_target_inner_gsrf(t),def_target_sourcesn(t)}
|
|
110
src/framework/struct.h
Normal file
110
src/framework/struct.h
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
/** ------------------------------------------------------------
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
* -------------------------------------------------------------
|
||||||
|
* File Name : struct.h
|
||||||
|
* File Authors : Aoran Zeng <ccmywish@qq.com>
|
||||||
|
* | Heng Guo <2085471348@qq.com>
|
||||||
|
* Contributors : Shengwei Chen <414685209@qq.com>
|
||||||
|
* |
|
||||||
|
* Created On : <2023-08-29>
|
||||||
|
* Last Modified : <2024-11-21>
|
||||||
|
*
|
||||||
|
* chsrc struct
|
||||||
|
* ------------------------------------------------------------*/
|
||||||
|
|
||||||
|
typedef struct SpeedMeasureInfo_t
|
||||||
|
{
|
||||||
|
bool skip; /* 是否默认跳过 */
|
||||||
|
const char *skip_reason_CN; /* 跳过的原因(中文)*/
|
||||||
|
const char *skip_reason_EN; /* 跳过的原因(英文)*/
|
||||||
|
const char *url; /* 测速链接 */
|
||||||
|
}
|
||||||
|
SpeedMeasureInfo;
|
||||||
|
|
||||||
|
#define SKIP true
|
||||||
|
#define NotSkip false
|
||||||
|
#define ToFill NULL
|
||||||
|
#define NA NULL
|
||||||
|
|
||||||
|
typedef struct MirrorSite_t
|
||||||
|
{
|
||||||
|
const char *code; /* 用于用户指定镜像站 */
|
||||||
|
const char *abbr; /* 需要使用镜像站的英文名时,用这个代替,因为大部分镜像站没有提供正式的英文名 */
|
||||||
|
const char *name; /* 镜像站中文名 */
|
||||||
|
const char *site; /* 镜像站首页 */
|
||||||
|
SpeedMeasureInfo smi;
|
||||||
|
}
|
||||||
|
MirrorSite;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct SourceInfo_t
|
||||||
|
{
|
||||||
|
const MirrorSite *mirror;
|
||||||
|
const char *url;
|
||||||
|
}
|
||||||
|
SourceInfo;
|
||||||
|
|
||||||
|
#define def_sources_n(t) const size_t t##_sources_n = xy_arylen(t##_sources)
|
||||||
|
|
||||||
|
enum Capability
|
||||||
|
{
|
||||||
|
CanNot,
|
||||||
|
FullyCan,
|
||||||
|
PartiallyCan
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* Target Feature Info */
|
||||||
|
typedef struct FeatInfo_t
|
||||||
|
{
|
||||||
|
bool can_get;
|
||||||
|
bool can_reset; /* 有的reset不是暂时没有实现,而是现在的实现根本就无法重置 */
|
||||||
|
|
||||||
|
bool can_english;
|
||||||
|
|
||||||
|
bool can_user_define; /* 用户自定义换源URL */
|
||||||
|
|
||||||
|
enum Capability cap_locally;
|
||||||
|
char *cap_locally_explain;
|
||||||
|
|
||||||
|
char *note;
|
||||||
|
}
|
||||||
|
FeatInfo;
|
||||||
|
|
||||||
|
|
||||||
|
/* Target Info */
|
||||||
|
typedef struct TargetInfo_t
|
||||||
|
{
|
||||||
|
void (*getfn) (char *option);
|
||||||
|
void (*setfn) (char *option);
|
||||||
|
void (*resetfn) (char *option);
|
||||||
|
|
||||||
|
FeatInfo (*featfn) (char *option);
|
||||||
|
|
||||||
|
SourceInfo *sources;
|
||||||
|
size_t sources_n;
|
||||||
|
}
|
||||||
|
TargetInfo;
|
||||||
|
|
||||||
|
|
||||||
|
#define def_target_inner_s(t) NULL, t##_setsrc, NULL, NULL
|
||||||
|
#define def_target_inner_sr(t) NULL, t##_setsrc, t##_resetsrc, NULL
|
||||||
|
#define def_target_inner_sf(t) NULL, t##_setsrc, NULL, t##_feat
|
||||||
|
#define def_target_inner_srf(t) NULL, t##_setsrc, t##_resetsrc, t##_feat
|
||||||
|
#define def_target_inner_gs(t) t##_getsrc, t##_setsrc, NULL, NULL
|
||||||
|
#define def_target_inner_gsr(t) t##_getsrc, t##_setsrc, t##_resetsrc, NULL
|
||||||
|
#define def_target_inner_gsf(t) t##_getsrc, t##_setsrc, NULL, t##_feat
|
||||||
|
#define def_target_inner_gsrf(t) t##_getsrc, t##_setsrc, t##_resetsrc, t##_feat
|
||||||
|
|
||||||
|
#define def_target_sourcesn(t) t##_sources, t##_sources_n
|
||||||
|
|
||||||
|
// 大部分target还不支持reset,所以暂时先默认设置为NULL来过渡
|
||||||
|
#define def_target(t) TargetInfo t##_target = {def_target_inner_gs(t),def_target_sourcesn(t)}
|
||||||
|
#define def_target_s(t) TargetInfo t##_target = {def_target_inner_s(t),def_target_sourcesn(t)}
|
||||||
|
#define def_target_sr(t) TargetInfo t##_target = {def_target_inner_sr(t),def_target_sourcesn(t)}
|
||||||
|
#define def_target_sf(t) TargetInfo t##_target = {def_target_inner_sf(t),def_target_sourcesn(t)}
|
||||||
|
#define def_target_srf(t) TargetInfo t##_target = {def_target_inner_srf(t),def_target_sourcesn(t)}
|
||||||
|
#define def_target_gs(t) TargetInfo t##_target = {def_target_inner_gs(t),def_target_sourcesn(t)}
|
||||||
|
#define def_target_gsr(t) TargetInfo t##_target = {def_target_inner_gsr(t),def_target_sourcesn(t)}
|
||||||
|
#define def_target_gsf(t) TargetInfo t##_target = {def_target_inner_gsf(t),def_target_sourcesn(t)}
|
||||||
|
#define def_target_gsrf(t) TargetInfo t##_target = {def_target_inner_gsrf(t),def_target_sourcesn(t)}
|
Loading…
x
Reference in New Issue
Block a user