Skip to content

Conversation

Mikachu2333
Copy link
Contributor

@Mikachu2333 Mikachu2333 commented Sep 29, 2025

问题描述

  1. 修复 cargo 换源的一些问题 #288 有以下问题
    • 对于win用户极不友好(刚需sed和grep)
    • 正则也有问题,在win上无法正确匹配,set和get都炸了
  2. re-fix rust 换源提示有误 #281

方案与实现

  1. 设置文件更改
    • + gitignore 更新
    • + launch 更新(改不改的无所谓反正)
  2. xy.h
    • xy_str_find 用于查找str子串并返回 (bool, pos_begin, pos_end)
    • xy_str_take_until_newline 与上面的函数结合使用,用于获取从传入字符串的 [0] 开始直到下一个换行符的所有字符,主要在提取配置时使用
    • xy_file_to_str 用于读取文件并返回全部内容(以字符串形式返回),已处理所有换行符为 \n
  3. core.c
    • chsrc_log_overwrite 对覆写特别设置
    • ± chsrc_log_backup
      1. 更正笔误
      2. 更换变量名避免歧义
      3. 返回时规范化路径(好像没啥用不过)
      4. 我认为这个函数需要改进,应该直接返回一个文件路径一个操作句柄,或者干脆直接返回路径,句柄自己搞去,没有路径只有句柄太难受了
      5. 更新docs
    • ± chsrc_prepend_to_file impl for win
  4. cargo.c
    • note_get_src_default 把部分重复的通知逻辑抽出来了
    • note_get_src_mirror
    • ± pl_rust_cargo_getsrc
      1. 去除所有需要 sed / grep 的代码
      2. 纯手工解析(感觉解析的代码 set 和 get 还能再抽象一个函数出来,但是懒得动了)
    • write_rust_config 把重复的逻辑抽出来了
    • ± pl_rust_cargo_getsrc 用了很笨的办法,读取文件 -> 查找字段 -> 手动获取有效信息 -> 手动格式化,好消息是对所有系统都适用,因为mirror必须按官方规范来否则rust不识别,所以“获取有效信息”和“格式化”这两步也没啥额外问题,感觉现在错误处理有些太繁琐了,似乎可以精简
    • 格式化
  5. rustup.c 格式化
  6. rawstr4c.h 删除无用数据
  7. fw.c
    • ± 调整了测试的顺序,优化逻辑
    • + 增加了相应的 tests
    • ± 根据上面修改的函数进行适配

其它

  1. 我认为有必要把各种函数整理一下了……用的时候经常找不着(
  2. 此外,根据 @ccmywish 此前的要求,此文件因为大幅修改(或者说回退)了你( @happy-game )的更改,因此您可能需要一起参与审阅
  3. 此pr增加了大量函数,但极少对现有函数进行修改,因此与其它代码的逻辑关联性低,主要修改的只有一个 chsrc_prepend_to_file 并且暂未发现问题。因为引用关系错综复杂,我认为有且仅有 chsrc_prepend_to_file 可以被单独提取成一个pr但不是很值得……
  4. 不是很确定增加的函数是不是有必要与已有函数合并
  5. 本地测试无误

@Mikachu2333 Mikachu2333 changed the title re-fix get rust re-fix rust Sep 29, 2025
@Mikachu2333 Mikachu2333 marked this pull request as ready for review September 29, 2025 15:07
@Mikachu2333 Mikachu2333 marked this pull request as draft September 29, 2025 15:45
@Mikachu2333 Mikachu2333 marked this pull request as ready for review September 29, 2025 17:21
@Mikachu2333
Copy link
Contributor Author

可恶,怎么win和linux还不通用啊

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant