mirror of
https://github.com/RubyMetric/chsrc.git
synced 2025-02-02 16:10:45 +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内部定义的专用镜像站
|
||||
|
||||
另外特别感谢以下组织或项目:
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
#define Chsrc_Maintain_URL "https://github.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"
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/** ------------------------------------------------------------
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* -------------------------------------------------------------
|
||||
* File Name : chsrc-framework.h
|
||||
* File Name : core.h
|
||||
* File Authors : Aoran Zeng <ccmywish@qq.com>
|
||||
* | Heng Guo <2085471348@qq.com>
|
||||
* Contributors : Peng Gao <gn3po4g@outlook.com>
|
||||
|
@ -14,8 +14,8 @@
|
|||
* ------------------------------------------------------------*/
|
||||
|
||||
#include "xy.h"
|
||||
#include "source.h"
|
||||
// #include <pthread.h>
|
||||
#include "struct.h"
|
||||
#include "mirror.c"
|
||||
|
||||
#define App_Name "chsrc"
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
/** ------------------------------------------------------------
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* -------------------------------------------------------------
|
||||
* File Name : mirror.c
|
||||
* File Authors : Aoran Zeng <ccmywish@qq.com>
|
||||
* | Heng Guo <2085471348@qq.com>
|
||||
* Contributors : Shengwei Chen <414685209@qq.com>
|
||||
|
@ -8,39 +9,14 @@
|
|||
* Created On : <2023-08-29>
|
||||
* 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_ctan "/systems/texlive/Images/texlive.iso" // 4.8 GB
|
||||
#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
|
||||
|
||||
|
||||
/**
|
||||
* 教育网镜像
|
||||
*
|
||||
|
@ -208,76 +184,3 @@ UserDefine = {
|
|||
"user", "用户自定义", "用户自定义", 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…
Reference in New Issue
Block a user