@@ -142,31 +142,72 @@ chef_set_repoURL (Target_t *target, SourceProvider_t *provider, char *url)
142142 xy_unreached ();
143143}
144144
145+
145146/**
146- * @breif 设置 或 修改 某个镜像站的 *精准*测速链接,即修改 Source_t.speed_measure_url
147+ * @brief 提供一个函数,这个函数基于 "换源链接" 和用户提供的数据来构造和填充精准测速链接
147148 */
148149void
149- chef_set_smURL (Target_t * target , SourceProvider_t * provider , char * url )
150+ chef_set_smURL_with_func (
151+ Target_t * target ,
152+ SourceProvider_t * provider ,
153+ char * (* func )(const char * url , const char * user_data ),
154+ char * user_data )
150155{
151156 xy_cant_be_null (target );
152157 xy_cant_be_null (provider );
153- xy_cant_be_null (url );
158+ xy_cant_be_null (func );
154159
155160 for (int i = 0 ; i < target -> sources_n ; i ++ )
156161 {
157162 Source_t * src = & target -> sources [i ];
158163 SourceProvider_t * p = src -> provider ;
159164 if (p == provider )
160165 {
161- src -> speed_measure_url = xy_strdup (url );
162- return ;
166+ if (src -> url )
167+ {
168+ src -> speed_measure_url = func (src -> url , user_data );
169+ return ;
170+ }
171+ else
172+ {
173+ chsrc_panic ("该函数基于已有的换源链接来生成测速链接,但该源的换源链接为空" );
174+ }
163175 }
164176 }
165177
166178 xy_unreached ();
167179}
168180
169181
182+ /**
183+ * @brief 给 "换源链接" 增加一个后缀来构造和填充专用测速链接
184+ */
185+ void
186+ chef_set_smURL_with_postfix (Target_t * target , SourceProvider_t * provider , char * postfix )
187+ {
188+ chef_set_smURL_with_func (target , provider , xy_2strcat , postfix );
189+ }
190+
191+
192+ /**
193+ * @internal 该函数仅用于实现 chef_set_smURL()
194+ */
195+ void
196+ _chef_strdup_2nd_argument (const char * DUMMY , const char * str )
197+ {
198+ return xy_strdup (str );
199+ }
200+
201+ /**
202+ * @breif 设置 或 修改 某个镜像站的 *精准*测速链接,即修改 Source_t.speed_measure_url
203+ */
204+ void
205+ chef_set_smURL (Target_t * target , SourceProvider_t * provider , char * url )
206+ {
207+ chef_set_smURL_with_func (target , provider , _chef_strdup_2nd_argument , url );
208+ }
209+
210+
170211/**
171212 * @brief 提供一个函数,这个函数基于 "换源链接" 和用户提供的数据来构造和填充精准测速链接
172213 */
0 commit comments