Skip to content

Commit

Permalink
Add support for macOS
Browse files Browse the repository at this point in the history
  • Loading branch information
bjorn3 committed Nov 12, 2024
1 parent 84e6a56 commit 3bfbd5f
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 13 deletions.
16 changes: 8 additions & 8 deletions .github/workflows/checks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,14 @@ jobs:
os: ubuntu-latest
features: ""
target: "x86_64-unknown-linux-gnu"
# - rust: "stable"
# os: macos-latest
# features: ""
# target: "x86_64-apple-darwin"
# - rust: "stable"
# os: macos-14
# features: ""
# target: "aarch64-apple-darwin"
- rust: "stable"
os: macos-latest
features: ""
target: "x86_64-apple-darwin"
- rust: "stable"
os: macos-14
features: ""
target: "aarch64-apple-darwin"
# - rust: stable-x86_64-gnu
# os: windows-2022
# features: ""
Expand Down
16 changes: 14 additions & 2 deletions bzip2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,22 @@ use libc::{
perror, remove, rewind, signal, stat, strcat, strcmp, strlen, strncpy, ungetc, utimbuf, write,
FILE,
};

// FIXME remove this
extern "C" {
#[cfg(all(target_os = "linux", target_env = "gnu"))]
static mut stdin: *mut FILE;
#[cfg(all(target_os = "linux", target_env = "gnu"))]
static mut stdout: *mut FILE;

#[cfg(target_os = "macos")]
#[link_name = "__stdinp"]
static mut stdin: *mut FILE;
#[cfg(target_os = "macos")]
#[link_name = "__stdoutp"]
static mut stdout: *mut FILE;
}

type Bool = libc::c_uchar;

type IntNative = libc::c_int;
Expand Down Expand Up @@ -971,13 +983,13 @@ unsafe fn countHardLinks(name: *mut c_char) -> i32 {

#[cfg(unix)]
fn count_hardlinks(path: &Path) -> u64 {
use std::os::linux::fs::MetadataExt;
use std::os::unix::fs::MetadataExt;

let Ok(metadata) = path.metadata() else {
return 0;
};

metadata.st_nlink().saturating_sub(1)
metadata.nlink().saturating_sub(1)
}

#[cfg(not(unix))]
Expand Down
3 changes: 2 additions & 1 deletion bzip2recover.rs
Original file line number Diff line number Diff line change
Expand Up @@ -343,7 +343,8 @@ fn main_help(program_name: &Path, in_filename: &Path) -> Result<(), Error> {
options.write(true).create(true);

#[cfg(unix)]
options.mode(libc::S_IWUSR | libc::S_IRUSR);
#[allow(clippy::unnecessary_cast)]
options.mode(libc::S_IWUSR as u32 | libc::S_IRUSR as u32);

#[cfg(unix)]
options.custom_flags(libc::O_EXCL);
Expand Down
14 changes: 12 additions & 2 deletions bzlib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,19 @@ use crate::decompress::{self, decompress};
use crate::libbzip2_rs_sys_version;
use crate::BZ_MAX_UNUSED;

// FIXME remove this
extern "C" {
static stdin: *mut FILE;
static stdout: *mut FILE;
#[cfg(all(target_os = "linux", target_env = "gnu"))]
static mut stdin: *mut FILE;
#[cfg(all(target_os = "linux", target_env = "gnu"))]
static mut stdout: *mut FILE;

#[cfg(target_os = "macos")]
#[link_name = "__stdinp"]
static mut stdin: *mut FILE;
#[cfg(target_os = "macos")]
#[link_name = "__stdoutp"]
static mut stdout: *mut FILE;
}

pub(crate) const BZ_MAX_ALPHA_SIZE: usize = 258;
Expand Down

0 comments on commit 3bfbd5f

Please sign in to comment.