From d076e6b8554656f8d1458d1eb18cfc944bf70109 Mon Sep 17 00:00:00 2001 From: Hiers Date: Thu, 26 Dec 2024 08:48:30 +0000 Subject: [PATCH] Provide windows support for new feature --- Makefile | 26 ++++++++++++++++++++++---- src/kanji_search.rs | 13 +++++++++---- src/main.rs | 2 +- 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 7c48f03..6cea720 100644 --- a/Makefile +++ b/Makefile @@ -4,18 +4,36 @@ build: src/kanji_search.rs src/main.rs src/sentence_search.rs src/util.rs src/wo release: src/kanji_search.rs src/main.rs src/sentence_search.rs src/util.rs src/word_search.rs cargo build --release -clean: - rm -r target/debug/ - rm -r target/release/ +clean: +ifeq ($(OS),Windows_NT) + powershell "if (Test-Path .\target\debug) { rm -r .\target\debug };\ + if (Test-Path .\target\release) { rm -r .\target\release }" +else + rm -rf target/debug/ + rm -rf target/release/ +endif -install: target/release/ykdt +install: target/release/ykdt* +ifeq ($(OS),Windows_NT) + powershell "if (-Not (Test-Path $(DESTDIR)\"C:\Program Files\ykdt\")) { mkdir $(DESTDIR)\"C:\Program Files\ykdt\" };\ + [Environment]::SetEnvironmentVariable(\"Path\", $$env:Path + \";C:\Program Files\ykdt\", \"Machine\");\ + cp target\release\ykdt.exe $(DESTDIR)\"C:\Program Files\ykdt\";\ + cp kanji_strokes $(DESTDIR)\"C:\Program Files\ykdt\"" +else mkdir -p $(DESTDIR)/usr/bin mkdir -p $(DESTDIR)/usr/local/share/ykdt cp target/release/ykdt $(DESTDIR)/usr/bin cp kanji_strokes $(DESTDIR)/usr/local/share/ykdt +endif uninstall: +ifeq ($(OS),Windows_NT) + powershell $$path = "([System.Environment]::GetEnvironmentVariable(\"PATH\", \"Machine\").Split(\";\") | Where-Object { $$_ -ne \"C:\Program Files\ykdt\" }) -join \";\";\ + [System.Environment]::SetEnvironmentVariable(\"PATH\",$$path,\"Machine\");\ + if (Test-Path $(DESTDIR)\"C:\Program Files\ykdt\") { rm -r $(DESTDIR)\"C:\Program Files\ykdt\" }" +else rm $(DESTDIR)/usr/bin/ykdt rm -r $(DESTDIR)/usr/local/share/ykdt +endif .PHONY: build release install uninstall clean diff --git a/src/kanji_search.rs b/src/kanji_search.rs index a870fef..85adce7 100644 --- a/src/kanji_search.rs +++ b/src/kanji_search.rs @@ -148,10 +148,15 @@ fn search_by_strokes(query: &mut String, radk_list: &[radk::Membership], n: usiz } pub fn get_stroke_info() -> Result, std::io::Error> { - #[allow(deprecated)] - let file = fs::read_to_string("/usr/local/share/ykdt/kanji_strokes")?; - + let file: String; + #[cfg(unix)] + { + file = fs::read_to_string("/usr/local/share/ykdt/kanji_strokes")?; + } + #[cfg(windows)] + { + file = fs::read_to_string("C:\\Program Files\\ykdt\\kanji_strokes")?; + } let stroke_info: Vec = Vec::from_iter(file.split('\n').map(|s| s.to_owned())); - Ok(stroke_info) } diff --git a/src/main.rs b/src/main.rs index 593bdf8..e01f340 100644 --- a/src/main.rs +++ b/src/main.rs @@ -285,7 +285,7 @@ fn get_radkfile_path() -> Option { None => { unsafe { let mut path: Vec = Vec::with_capacity(MAX_PATH as usize); - match SHGetFolderPathW(0, CSIDL_PROFILE as i32, 0, 0, path.as_mut_ptr()) { + match SHGetFolderPathW(std::ptr::null_mut(), CSIDL_PROFILE as i32, std::ptr::null_mut(), 0, path.as_mut_ptr()) { S_OK => { let len = wcslen(path.as_ptr()); path.set_len(len);