mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-05-30 03:01:15 -03:00
Silence unexpected_cfgs error about unknown cygwin target
Extract our own cfg value, to avoid noisy warnings like: warning: unexpected `cfg` condition value: `cygwin` --> src/fallback.rs:78:23 | 78 | #[cfg(not(target_os = "cygwin"))] | ^^^^^^^^^^^^^^^^^^^^ | The cygwin target will be added to Rust 1.86, so we can get rid of this after some time.
This commit is contained in:
6
build.rs
6
build.rs
@@ -90,6 +90,7 @@ fn detect_cfgs(target: &mut Target) {
|
|||||||
),
|
),
|
||||||
("apple", &detect_apple),
|
("apple", &detect_apple),
|
||||||
("bsd", &detect_bsd),
|
("bsd", &detect_bsd),
|
||||||
|
("cygwin", &detect_cygwin),
|
||||||
("gettext", &have_gettext),
|
("gettext", &have_gettext),
|
||||||
("small_main_stack", &has_small_stack),
|
("small_main_stack", &has_small_stack),
|
||||||
// See if libc supports the thread-safe localeconv_l(3) alternative to localeconv(3).
|
// See if libc supports the thread-safe localeconv_l(3) alternative to localeconv(3).
|
||||||
@@ -128,6 +129,11 @@ fn detect_apple(_: &Target) -> Result<bool, Box<dyn Error>> {
|
|||||||
Ok(cfg!(any(target_os = "ios", target_os = "macos")))
|
Ok(cfg!(any(target_os = "ios", target_os = "macos")))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(unexpected_cfgs)]
|
||||||
|
fn detect_cygwin(_: &Target) -> Result<bool, Box<dyn Error>> {
|
||||||
|
Ok(cfg!(target_os = "cygwin"))
|
||||||
|
}
|
||||||
|
|
||||||
/// Detect if we're being compiled for a BSD-derived OS, allowing targeting code conditionally with
|
/// Detect if we're being compiled for a BSD-derived OS, allowing targeting code conditionally with
|
||||||
/// `#[cfg(bsd)]`.
|
/// `#[cfg(bsd)]`.
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -1072,7 +1072,7 @@ pub fn get_obfuscation_read_char() -> char {
|
|||||||
/// the multiline prompt usable. See [#2859](https://github.com/fish-shell/fish-shell/issues/2859)
|
/// the multiline prompt usable. See [#2859](https://github.com/fish-shell/fish-shell/issues/2859)
|
||||||
/// and <https://github.com/Microsoft/BashOnWindows/issues/545>
|
/// and <https://github.com/Microsoft/BashOnWindows/issues/545>
|
||||||
pub fn has_working_tty_timestamps() -> bool {
|
pub fn has_working_tty_timestamps() -> bool {
|
||||||
if cfg!(any(target_os = "windows", target_os = "cygwin")) {
|
if cfg!(any(target_os = "windows", cygwin)) {
|
||||||
false
|
false
|
||||||
} else if cfg!(target_os = "linux") {
|
} else if cfg!(target_os = "linux") {
|
||||||
!is_windows_subsystem_for_linux(WSL::V1)
|
!is_windows_subsystem_for_linux(WSL::V1)
|
||||||
|
|||||||
@@ -199,9 +199,9 @@ fn guess_emoji_width(vars: &EnvStack) {
|
|||||||
} else {
|
} else {
|
||||||
// Default to whatever the system's wcwidth gives for U+1F603, but only if it's at least
|
// Default to whatever the system's wcwidth gives for U+1F603, but only if it's at least
|
||||||
// 1 and at most 2.
|
// 1 and at most 2.
|
||||||
#[cfg(not(target_os = "cygwin"))]
|
#[cfg(not(cygwin))]
|
||||||
let width = crate::fallback::wcwidth('😃').clamp(1, 2);
|
let width = crate::fallback::wcwidth('😃').clamp(1, 2);
|
||||||
#[cfg(target_os = "cygwin")]
|
#[cfg(cygwin)]
|
||||||
let width = 2_isize;
|
let width = 2_isize;
|
||||||
FISH_EMOJI_WIDTH.store(width, Ordering::Relaxed);
|
FISH_EMOJI_WIDTH.store(width, Ordering::Relaxed);
|
||||||
FLOG!(term_support, "default emoji width:", width);
|
FLOG!(term_support, "default emoji width:", width);
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
static WC_LOOKUP_TABLE: Lazy<WcLookupTable> = Lazy::new(WcLookupTable::new);
|
static WC_LOOKUP_TABLE: Lazy<WcLookupTable> = Lazy::new(WcLookupTable::new);
|
||||||
|
|
||||||
/// A safe wrapper around the system `wcwidth()` function
|
/// A safe wrapper around the system `wcwidth()` function
|
||||||
#[cfg(not(target_os = "cygwin"))]
|
#[cfg(not(cygwin))]
|
||||||
pub fn wcwidth(c: char) -> isize {
|
pub fn wcwidth(c: char) -> isize {
|
||||||
extern "C" {
|
extern "C" {
|
||||||
pub fn wcwidth(c: libc::wchar_t) -> libc::c_int;
|
pub fn wcwidth(c: libc::wchar_t) -> libc::c_int;
|
||||||
@@ -49,7 +49,7 @@ pub fn fish_wcwidth(c: char) -> isize {
|
|||||||
// The system version of wcwidth should accurately reflect the ability to represent characters
|
// The system version of wcwidth should accurately reflect the ability to represent characters
|
||||||
// in the console session, but knows nothing about the capabilities of other terminal emulators
|
// in the console session, but knows nothing about the capabilities of other terminal emulators
|
||||||
// or ttys. Use it from the start only if we are logged in to the physical console.
|
// or ttys. Use it from the start only if we are logged in to the physical console.
|
||||||
#[cfg(not(target_os = "cygwin"))]
|
#[cfg(not(cygwin))]
|
||||||
if crate::common::is_console_session() {
|
if crate::common::is_console_session() {
|
||||||
return wcwidth(c);
|
return wcwidth(c);
|
||||||
}
|
}
|
||||||
@@ -75,12 +75,12 @@ pub fn fish_wcwidth(c: char) -> isize {
|
|||||||
let width = WC_LOOKUP_TABLE.classify(c);
|
let width = WC_LOOKUP_TABLE.classify(c);
|
||||||
match width {
|
match width {
|
||||||
WcWidth::NonCharacter | WcWidth::NonPrint | WcWidth::Combining | WcWidth::Unassigned => {
|
WcWidth::NonCharacter | WcWidth::NonPrint | WcWidth::Combining | WcWidth::Unassigned => {
|
||||||
#[cfg(not(target_os = "cygwin"))]
|
#[cfg(not(cygwin))]
|
||||||
{
|
{
|
||||||
// Fall back to system wcwidth in this case.
|
// Fall back to system wcwidth in this case.
|
||||||
wcwidth(c)
|
wcwidth(c)
|
||||||
}
|
}
|
||||||
#[cfg(target_os = "cygwin")]
|
#[cfg(cygwin)]
|
||||||
{
|
{
|
||||||
// No system wcwidth for UTF-32 on cygwin.
|
// No system wcwidth for UTF-32 on cygwin.
|
||||||
0
|
0
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ fn test_topic_monitor() {
|
|||||||
#[test]
|
#[test]
|
||||||
// FIXME: Does not compile on NetBSD & Cygwin
|
// FIXME: Does not compile on NetBSD & Cygwin
|
||||||
// "`*mut sem` cannot be sent between threads safely"
|
// "`*mut sem` cannot be sent between threads safely"
|
||||||
#[cfg(not(any(target_os = "netbsd", target_os = "cygwin")))]
|
#[cfg(not(any(target_os = "netbsd", cygwin)))]
|
||||||
#[serial]
|
#[serial]
|
||||||
fn test_topic_monitor_torture() {
|
fn test_topic_monitor_torture() {
|
||||||
let _cleanup = test_init();
|
let _cleanup = test_init();
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#[cfg_attr(target_os = "cygwin", link_name = "c32rtomb")]
|
#[cfg_attr(cygwin, link_name = "c32rtomb")]
|
||||||
pub fn wcrtomb(s: *mut libc::c_char, wc: u32, ps: *mut mbstate_t) -> usize;
|
pub fn wcrtomb(s: *mut libc::c_char, wc: u32, ps: *mut mbstate_t) -> usize;
|
||||||
#[cfg_attr(target_os = "cygwin", link_name = "mbrtoc32")]
|
#[cfg_attr(cygwin, link_name = "mbrtoc32")]
|
||||||
pub fn mbrtowc(pwc: *mut u32, s: *const libc::c_char, n: usize, p: *mut mbstate_t) -> usize;
|
pub fn mbrtowc(pwc: *mut u32, s: *const libc::c_char, n: usize, p: *mut mbstate_t) -> usize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user