Skip to content

Commit

Permalink
Merge pull request #361 from fox0/env-sys
Browse files Browse the repository at this point in the history
Use compile-time macro env! and split signal into mod
  • Loading branch information
jgarzik authored Oct 25, 2024
2 parents 8fe9286 + a252197 commit 3ba8f56
Show file tree
Hide file tree
Showing 33 changed files with 388 additions and 456 deletions.
1 change: 0 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion pathnames/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,13 @@ edition.workspace = true
rust-version.workspace = true

[dependencies]
plib = { path = "../plib" }
clap.workspace = true
gettext-rs.workspace = true
libc.workspace = true

[dev-dependencies]
plib = { path = "../plib" }

[lints]
workspace = true

Expand Down
13 changes: 6 additions & 7 deletions pathnames/basename.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
// SPDX-License-Identifier: MIT
//

use std::path::Path;

use clap::Parser;
use gettextrs::{bind_textdomain_codeset, gettext, setlocale, textdomain, LocaleCategory};
use plib::PROJECT_NAME;
use std::path::Path;

#[derive(Parser)]
#[command(
Expand Down Expand Up @@ -52,12 +52,11 @@ fn show_basename(args: &Args) {
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
// parse command line arguments
let args = Args::parse();

setlocale(LocaleCategory::LcAll, "");
textdomain(PROJECT_NAME)?;
bind_textdomain_codeset(PROJECT_NAME, "UTF-8")?;
textdomain(env!("PROJECT_NAME"))?;
bind_textdomain_codeset(env!("PROJECT_NAME"), "UTF-8")?;

let args = Args::parse();

show_basename(&args);

Expand Down
15 changes: 7 additions & 8 deletions pathnames/dirname.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@
// SPDX-License-Identifier: MIT
//

use clap::Parser;
use gettextrs::{bind_textdomain_codeset, gettext, setlocale, textdomain, LocaleCategory};
use plib::PROJECT_NAME;
use std::ffi::OsString;
use std::path::PathBuf;

use clap::Parser;
use gettextrs::{bind_textdomain_codeset, gettext, setlocale, textdomain, LocaleCategory};

#[derive(Parser)]
#[command(
version,
Expand Down Expand Up @@ -40,12 +40,11 @@ fn show_dirname(args: &Args) {
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
// parse command line arguments
let args = Args::parse();

setlocale(LocaleCategory::LcAll, "");
textdomain(PROJECT_NAME)?;
bind_textdomain_codeset(PROJECT_NAME, "UTF-8")?;
textdomain(env!("PROJECT_NAME"))?;
bind_textdomain_codeset(env!("PROJECT_NAME"), "UTF-8")?;

let args = Args::parse();

show_dirname(&args);

Expand Down
15 changes: 7 additions & 8 deletions pathnames/pathchk.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@
// SPDX-License-Identifier: MIT
//

use clap::Parser;
use gettextrs::{bind_textdomain_codeset, gettext, setlocale, textdomain, LocaleCategory};
use plib::PROJECT_NAME;
use std::ffi::CString;
use std::path::{Component, Path};

use clap::Parser;
use gettextrs::{bind_textdomain_codeset, gettext, setlocale, textdomain, LocaleCategory};

const _POSIX_PATH_MAX: usize = 255;
const _POSIX_NAME_MAX: usize = 14;

Expand Down Expand Up @@ -142,12 +142,11 @@ fn check_path(args: &Args, pathname: &str) -> Result<(), &'static str> {
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
// parse command line arguments
let args = Args::parse();

setlocale(LocaleCategory::LcAll, "");
textdomain(PROJECT_NAME)?;
bind_textdomain_codeset(PROJECT_NAME, "UTF-8")?;
textdomain(env!("PROJECT_NAME"))?;
bind_textdomain_codeset(env!("PROJECT_NAME"), "UTF-8")?;

let args = Args::parse();

let mut exit_code = 0;

Expand Down
12 changes: 6 additions & 6 deletions pathnames/realpath.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
// SPDX-License-Identifier: MIT
//

use std::path::{Component, Path, PathBuf};

use clap::Parser;
use gettextrs::{bind_textdomain_codeset, gettext, setlocale, textdomain, LocaleCategory};
use plib::PROJECT_NAME;
use std::path::{Component, Path, PathBuf};

/// realpath -- return resolved canonical path
#[derive(Parser)]
Expand Down Expand Up @@ -63,11 +63,11 @@ fn normalize<P: AsRef<Path>>(path: P) -> std::io::Result<PathBuf> {
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
let args = Args::parse();

setlocale(LocaleCategory::LcAll, "");
textdomain(PROJECT_NAME)?;
bind_textdomain_codeset(PROJECT_NAME, "UTF-8")?;
textdomain(env!("PROJECT_NAME"))?;
bind_textdomain_codeset(env!("PROJECT_NAME"), "UTF-8")?;

let args = Args::parse();

let mut exit_code = 0;

Expand Down
2 changes: 1 addition & 1 deletion pathnames/tests/basename/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
// SPDX-License-Identifier: MIT
//

use plib::{run_test, TestPlan};
use plib::testing::{run_test, TestPlan};

#[test]
fn basename_basic() {
Expand Down
2 changes: 1 addition & 1 deletion pathnames/tests/dirname/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
// SPDX-License-Identifier: MIT
//

use plib::{run_test, TestPlan};
use plib::testing::{run_test, TestPlan};

#[test]
fn dirname_basic() {
Expand Down
2 changes: 1 addition & 1 deletion pathnames/tests/realpath/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
// SPDX-License-Identifier: MIT
//

use plib::{run_test, TestPlan};
use plib::testing::{run_test, TestPlan};

fn realpath_test(args: &[&str], stdout: &str, stderr: &str, expected_code: i32) {
let str_args: Vec<String> = args.iter().map(|s| String::from(*s)).collect();
Expand Down
15 changes: 7 additions & 8 deletions process/env.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@
// SPDX-License-Identifier: MIT
//

use clap::Parser;
use gettextrs::{bind_textdomain_codeset, gettext, setlocale, textdomain, LocaleCategory};
use plib::PROJECT_NAME;
use std::collections::HashMap;
use std::env;
use std::io;
use std::os::unix::process::CommandExt;
use std::process::{Command, Stdio};

use clap::Parser;
use gettextrs::{bind_textdomain_codeset, gettext, setlocale, textdomain, LocaleCategory};

#[derive(Parser)]
#[command(version, about = gettext("env - set the environment for command invocation"))]
struct Args {
Expand Down Expand Up @@ -92,12 +92,11 @@ fn exec_util(envs: HashMap<String, String>, util_args: Vec<String>) -> io::Resul
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
// parse command line arguments
let args = Args::parse();

setlocale(LocaleCategory::LcAll, "");
textdomain(PROJECT_NAME)?;
bind_textdomain_codeset(PROJECT_NAME, "UTF-8")?;
textdomain(env!("PROJECT_NAME"))?;
bind_textdomain_codeset(env!("PROJECT_NAME"), "UTF-8")?;

let args = Args::parse();

let (envs, util_args) = separate_ops(&args.operands);
let new_env = merge_env(&envs, args.ignore_env);
Expand Down
83 changes: 41 additions & 42 deletions process/fuser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,18 @@
// SPDX-License-Identifier: MIT
//

use clap::{CommandFactory, Parser};
use gettextrs::{bind_textdomain_codeset, setlocale, textdomain, LocaleCategory};
use plib::PROJECT_NAME;
use std::collections::BTreeMap;
use std::ffi::CStr;
use std::fs::{metadata, Metadata};
use std::io::{self, Write};
use std::os::unix::fs::MetadataExt;
use std::path::{Path, PathBuf};
use std::sync::mpsc;
use std::thread;
use std::time::Duration;
use std::{
collections::BTreeMap,
ffi::CStr,
os::unix::fs::MetadataExt,
path::{Path, PathBuf},
};

use clap::{CommandFactory, Parser};
use gettextrs::{bind_textdomain_codeset, setlocale, textdomain, LocaleCategory};

const NAME_FIELD: usize = 20;

Expand Down Expand Up @@ -1358,39 +1356,6 @@ struct Args {
/// A pathname on which the file or file system is to be reported.
file: Vec<PathBuf>,
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
setlocale(LocaleCategory::LcAll, "");
textdomain(PROJECT_NAME)?;
bind_textdomain_codeset(PROJECT_NAME, "UTF-8")?;

let Args {
mount, user, file, ..
} = Args::try_parse().unwrap_or_else(|err| match err.kind() {
clap::error::ErrorKind::DisplayHelp | clap::error::ErrorKind::DisplayVersion => {
print!("{err}");
std::process::exit(1);
}
_ => {
let mut stdout = std::io::stdout();
let mut cmd = Args::command();
eprintln!("No process specification given");
cmd.write_help(&mut stdout).unwrap();
std::process::exit(1);
}
});

#[cfg(target_os = "linux")]
let mut names = linux::get_matched_procs(file, mount)?;

#[cfg(target_os = "macos")]
let mut names = macos::get_matched_procs(file, mount)?;

for name in names.iter_mut() {
print_matches(name, user)?;
}

std::process::exit(0);
}

/// Prints process matches for a given `Names` object to `stderr` and `stdout`.
///
Expand Down Expand Up @@ -1515,3 +1480,37 @@ fn timeout(path: &str, seconds: u32) -> Result<Metadata, io::Error> {
}
}
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
setlocale(LocaleCategory::LcAll, "");
textdomain(env!("PROJECT_NAME"))?;
bind_textdomain_codeset(env!("PROJECT_NAME"), "UTF-8")?;

let Args {
mount, user, file, ..
} = Args::try_parse().unwrap_or_else(|err| match err.kind() {
clap::error::ErrorKind::DisplayHelp | clap::error::ErrorKind::DisplayVersion => {
print!("{err}");
std::process::exit(1);
}
_ => {
let mut stdout = std::io::stdout();
let mut cmd = Args::command();
eprintln!("No process specification given");
cmd.write_help(&mut stdout).unwrap();
std::process::exit(1);
}
});

#[cfg(target_os = "linux")]
let mut names = linux::get_matched_procs(file, mount)?;

#[cfg(target_os = "macos")]
let mut names = macos::get_matched_procs(file, mount)?;

for name in names.iter_mut() {
print_matches(name, user)?;
}

std::process::exit(0);
}
Loading

0 comments on commit 3ba8f56

Please sign in to comment.