diff --git a/tree/chgrp.rs b/tree/chgrp.rs index d790d9c6..96d7d0e1 100644 --- a/tree/chgrp.rs +++ b/tree/chgrp.rs @@ -12,7 +12,6 @@ use clap::Parser; use gettextrs::{bind_textdomain_codeset, setlocale, textdomain, LocaleCategory}; -use plib::PROJECT_NAME; use std::ffi::CString; use std::path::Path; use std::{fs, io}; @@ -92,13 +91,11 @@ fn parse_group(group: &str) -> Result { } fn main() -> Result<(), Box> { - // parse command line arguments - let args = Args::parse(); - - // initialize translations 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; diff --git a/tree/chmod.rs b/tree/chmod.rs index b1db2256..80f27080 100644 --- a/tree/chmod.rs +++ b/tree/chmod.rs @@ -10,7 +10,7 @@ use clap::Parser; use gettextrs::{bind_textdomain_codeset, setlocale, textdomain, LocaleCategory}; use modestr::{ChmodMode, ChmodSymbolic}; -use plib::{modestr, PROJECT_NAME}; +use plib::modestr; use std::os::unix::fs::PermissionsExt; use std::path::Path; use std::{fs, io}; @@ -75,13 +75,11 @@ fn chmod_file(filename: &str, mode: &ChmodMode, recurse: bool) -> Result<(), io: } fn main() -> Result<(), Box> { - // parse command line arguments - let args = Args::parse(); - - // initialize translations 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; diff --git a/tree/chown.rs b/tree/chown.rs index 2567cf0b..c2e00499 100644 --- a/tree/chown.rs +++ b/tree/chown.rs @@ -12,7 +12,6 @@ use clap::Parser; use gettextrs::{bind_textdomain_codeset, setlocale, textdomain, LocaleCategory}; -use plib::PROJECT_NAME; use std::ffi::CString; use std::os::unix::fs::MetadataExt; use std::path::Path; @@ -132,13 +131,11 @@ fn parse_owner_group(owner_group: &str) -> Result<(u32, Option), &'static s } fn main() -> Result<(), Box> { - // parse command line arguments - let args = Args::parse(); - - // initialize translations 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; diff --git a/tree/cp.rs b/tree/cp.rs index f87bf5ea..93ba28d5 100644 --- a/tree/cp.rs +++ b/tree/cp.rs @@ -12,7 +12,6 @@ mod common; use self::common::{copy_file, copy_files, error_string, CopyConfig}; use clap::Parser; use gettextrs::{bind_textdomain_codeset, gettext, setlocale, textdomain, LocaleCategory}; -use plib::PROJECT_NAME; use std::collections::HashSet; use std::path::PathBuf; use std::{fs, io}; @@ -103,13 +102,11 @@ fn prompt_user(prompt: &str) -> bool { } fn main() -> Result<(), Box> { - // parse command line arguments - let args = Args::parse(); - - // Initialize translation system 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(); if args.files.len() < 2 { eprintln!("{}", gettext("Must supply a source and target for copy")); diff --git a/tree/du.rs b/tree/du.rs index d13d90a8..a414ef6a 100644 --- a/tree/du.rs +++ b/tree/du.rs @@ -12,7 +12,6 @@ use clap::Parser; use gettextrs::{bind_textdomain_codeset, setlocale, textdomain, LocaleCategory}; -use plib::PROJECT_NAME; use std::os::unix::fs::MetadataExt; use std::path::Path; use std::{fs, io}; @@ -104,19 +103,16 @@ fn du_cli_arg( } fn main() -> Result<(), Box> { - // parse command line arguments + setlocale(LocaleCategory::LcAll, ""); + textdomain(env!("PROJECT_NAME"))?; + bind_textdomain_codeset(env!("PROJECT_NAME"), "UTF-8")?; + let mut args = Args::parse(); // default to current directory if args.files.is_empty() { args.files.push(".".to_string()); } - - // initialize translations - setlocale(LocaleCategory::LcAll, ""); - textdomain(PROJECT_NAME)?; - bind_textdomain_codeset(PROJECT_NAME, "UTF-8")?; - let mut exit_code = 0; let mut total = 0; diff --git a/tree/link.rs b/tree/link.rs index 5a699d08..9cfdda5e 100644 --- a/tree/link.rs +++ b/tree/link.rs @@ -9,7 +9,6 @@ use clap::Parser; use gettextrs::{bind_textdomain_codeset, setlocale, textdomain, LocaleCategory}; -use plib::PROJECT_NAME; use std::{fs, io}; /// link - call link function @@ -29,12 +28,11 @@ fn do_link(file1: &str, file2: &str) -> io::Result<()> { } fn main() -> Result<(), Box> { - // 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; diff --git a/tree/ln.rs b/tree/ln.rs index 447e0b04..7bcbb561 100644 --- a/tree/ln.rs +++ b/tree/ln.rs @@ -9,7 +9,6 @@ use clap::Parser; use gettextrs::{bind_textdomain_codeset, gettext, setlocale, textdomain, LocaleCategory}; -use plib::PROJECT_NAME; use std::path::{Path, PathBuf}; use std::{fs, io}; @@ -48,12 +47,11 @@ fn do_link_into(args: &Args, src: &str, target_dir: &str) -> io::Result<()> { } fn main() -> Result<(), Box> { - // 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(); if args.files.len() < 2 { eprintln!("{}", gettext("Must supply a source and target for linking")); diff --git a/tree/ls.rs b/tree/ls.rs index 918a5751..1f53cc39 100644 --- a/tree/ls.rs +++ b/tree/ls.rs @@ -12,7 +12,7 @@ mod ls_util; use self::ls_util::{ls_from_utf8_lossy, Entry, LongFormatPadding, MultiColumnPadding}; use clap::{CommandFactory, FromArgMatches, Parser}; use gettextrs::{bind_textdomain_codeset, gettext, setlocale, textdomain, LocaleCategory}; -use plib::{platform::P_WINSIZE_REQUEST_CODE, PROJECT_NAME}; +use plib::platform::P_WINSIZE_REQUEST_CODE; use std::{ collections::HashMap, ffi::{CString, OsStr}, @@ -1320,9 +1320,8 @@ fn process_single_dir( fn main() -> ExitCode { setlocale(LocaleCategory::LcAll, ""); - textdomain(PROJECT_NAME).unwrap(); - bind_textdomain_codeset(PROJECT_NAME, "UTF-8").unwrap(); - + textdomain(env!("PROJECT_NAME")).unwrap(); + bind_textdomain_codeset(env!("PROJECT_NAME"), "UTF-8").unwrap(); let (config, paths) = Config::new(); match ls(paths, &config) { diff --git a/tree/mkdir.rs b/tree/mkdir.rs index b6b96240..989a45fc 100644 --- a/tree/mkdir.rs +++ b/tree/mkdir.rs @@ -10,7 +10,7 @@ use clap::Parser; use gettextrs::{bind_textdomain_codeset, setlocale, textdomain, LocaleCategory}; use modestr::ChmodMode; -use plib::{modestr, PROJECT_NAME}; +use plib::modestr; use std::ffi::CString; use std::io; use std::path::PathBuf; @@ -66,12 +66,11 @@ fn do_mkdir(dirname: &str, mode: &ChmodMode, parents: bool) -> io::Result<()> { } fn main() -> Result<(), Box> { - // 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; diff --git a/tree/mkfifo.rs b/tree/mkfifo.rs index 9354a8f2..8822eb38 100644 --- a/tree/mkfifo.rs +++ b/tree/mkfifo.rs @@ -10,7 +10,7 @@ use clap::Parser; use gettextrs::{bind_textdomain_codeset, setlocale, textdomain, LocaleCategory}; use modestr::ChmodMode; -use plib::{modestr, PROJECT_NAME}; +use plib::modestr; use std::io; /// mkfifo - make FIFO special files @@ -40,12 +40,11 @@ fn do_mkfifo(filename: &str, mode: &ChmodMode) -> io::Result<()> { } fn main() -> Result<(), Box> { - // 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; diff --git a/tree/mv.rs b/tree/mv.rs index a572322b..b2963967 100644 --- a/tree/mv.rs +++ b/tree/mv.rs @@ -14,7 +14,6 @@ use self::common::{copy_file, error_string}; use clap::Parser; use common::CopyConfig; use gettextrs::{bind_textdomain_codeset, gettext, setlocale, textdomain, LocaleCategory}; -use plib::PROJECT_NAME; use std::{ collections::{HashMap, HashSet}, ffi::CString, @@ -371,13 +370,11 @@ fn move_files(cfg: &MvConfig, sources: &[PathBuf], target: &Path) -> Option<()> } fn main() -> Result<(), Box> { - // parse command line arguments - let args = Args::parse(); - - // Initialize translation system 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(); if args.files.len() < 2 { eprintln!( diff --git a/tree/readlink.rs b/tree/readlink.rs index ddbbf251..ba994740 100644 --- a/tree/readlink.rs +++ b/tree/readlink.rs @@ -9,7 +9,6 @@ use clap::Parser; use gettextrs::{bind_textdomain_codeset, setlocale, textdomain, LocaleCategory}; -use plib::PROJECT_NAME; use std::io::Write; use std::path::PathBuf; use std::{fs, io}; @@ -54,12 +53,11 @@ fn do_readlink(args: &Args) -> Result { } fn main() -> Result<(), Box> { - // 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; diff --git a/tree/rm.rs b/tree/rm.rs index 220d51ec..0f3830ba 100644 --- a/tree/rm.rs +++ b/tree/rm.rs @@ -13,7 +13,6 @@ use self::common::error_string; use clap::Parser; use ftw::{self, traverse_directory}; use gettextrs::{bind_textdomain_codeset, gettext, setlocale, textdomain, LocaleCategory}; -use plib::PROJECT_NAME; use std::{ ffi::CString, fs, @@ -433,12 +432,11 @@ fn rm_path(cfg: &RmConfig, filepath: &Path) -> io::Result { } fn main() -> Result<(), Box> { - // 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 is_tty = io::stdin().is_terminal(); let cfg = RmConfig { args, is_tty }; diff --git a/tree/rmdir.rs b/tree/rmdir.rs index 453c50ca..3e218bc6 100644 --- a/tree/rmdir.rs +++ b/tree/rmdir.rs @@ -9,7 +9,6 @@ use clap::Parser; use gettextrs::{bind_textdomain_codeset, gettext, setlocale, textdomain, LocaleCategory}; -use plib::PROJECT_NAME; use std::fs; use std::io::{self, Error, ErrorKind}; use std::path::Path; @@ -46,12 +45,11 @@ fn remove_dir(dirname: &str, rm_parents: bool) -> io::Result<()> { } fn main() -> Result<(), Box> { - // 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; diff --git a/tree/tests/cp/mod.rs b/tree/tests/cp/mod.rs index a1963aa1..6ccc0d97 100644 --- a/tree/tests/cp/mod.rs +++ b/tree/tests/cp/mod.rs @@ -7,7 +7,7 @@ // SPDX-License-Identifier: MIT // -use plib::{run_test, TestPlan}; +use plib::testing::{run_test, TestPlan}; use std::ffi::CString; use std::io::{Read, Write}; use std::os::unix::fs::FileTypeExt; diff --git a/tree/tests/integration2.rs b/tree/tests/integration2.rs index b85a9f53..54b3a0b0 100644 --- a/tree/tests/integration2.rs +++ b/tree/tests/integration2.rs @@ -11,7 +11,7 @@ //! newly created files in `integration.rs`. They are located here in //! `integration2.rs` because umask is a per-process. -use plib::{run_test, TestPlan}; +use plib::testing::{run_test, TestPlan}; use std::fs; use std::os::unix::fs::{DirBuilderExt, MetadataExt, PermissionsExt}; use std::path::Path; diff --git a/tree/tests/ls/mod.rs b/tree/tests/ls/mod.rs index 60a56c1b..284f18bd 100644 --- a/tree/tests/ls/mod.rs +++ b/tree/tests/ls/mod.rs @@ -7,7 +7,7 @@ // SPDX-License-Identifier: MIT // -use plib::{run_test, run_test_with_checker, TestPlan}; +use plib::testing::{run_test, run_test_with_checker, TestPlan}; use regex::Regex; use std::ffi::CString; use std::fs; diff --git a/tree/tests/mkdir/mod.rs b/tree/tests/mkdir/mod.rs index 96636d4f..50f96434 100644 --- a/tree/tests/mkdir/mod.rs +++ b/tree/tests/mkdir/mod.rs @@ -8,7 +8,7 @@ // SPDX-License-Identifier: MIT // -use plib::{run_test_with_checker, TestPlan}; +use plib::testing::{run_test_with_checker, TestPlan}; use std::fs; use std::path::Path; use std::process::Output; diff --git a/tree/tests/mv/mod.rs b/tree/tests/mv/mod.rs index 82c6ddc9..01ff29b8 100644 --- a/tree/tests/mv/mod.rs +++ b/tree/tests/mv/mod.rs @@ -7,7 +7,7 @@ // SPDX-License-Identifier: MIT // -use plib::{run_test, TestPlan}; +use plib::testing::{run_test, TestPlan}; use std::ffi::CString; use std::fs::{self, Permissions}; use std::io::{self, Read, Write}; diff --git a/tree/tests/readlink/mod.rs b/tree/tests/readlink/mod.rs index bc5bcff0..c574ab4f 100644 --- a/tree/tests/readlink/mod.rs +++ b/tree/tests/readlink/mod.rs @@ -7,7 +7,7 @@ // SPDX-License-Identifier: MIT // -use plib::{run_test, TestPlan}; +use plib::testing::{run_test, TestPlan}; use std::fs::File; use std::io::Write; use std::os::unix::fs::symlink; diff --git a/tree/tests/rm/mod.rs b/tree/tests/rm/mod.rs index 6469b5d5..f8496dc3 100644 --- a/tree/tests/rm/mod.rs +++ b/tree/tests/rm/mod.rs @@ -7,7 +7,7 @@ // SPDX-License-Identifier: MIT // -use plib::{run_test, run_test_with_checker, TestPlan}; +use plib::testing::{run_test, run_test_with_checker, TestPlan}; use std::ffi::CString; use std::fs; use std::io::{self, Write}; diff --git a/tree/tests/rmdir/mod.rs b/tree/tests/rmdir/mod.rs index 245869cd..de82ac45 100644 --- a/tree/tests/rmdir/mod.rs +++ b/tree/tests/rmdir/mod.rs @@ -8,7 +8,7 @@ // SPDX-License-Identifier: MIT // -use plib::{run_test_with_checker, TestPlan}; +use plib::testing::{run_test_with_checker, TestPlan}; use std::fs; use std::path::Path; use std::process::Output; diff --git a/tree/tests/unlink/mod.rs b/tree/tests/unlink/mod.rs index e9981029..c60c96c6 100644 --- a/tree/tests/unlink/mod.rs +++ b/tree/tests/unlink/mod.rs @@ -8,7 +8,7 @@ // SPDX-License-Identifier: MIT // -use plib::{run_test, run_test_with_checker, TestPlan}; +use plib::testing::{run_test, run_test_with_checker, TestPlan}; use std::fs; use tempfile::tempdir; diff --git a/tree/touch.rs b/tree/touch.rs index 040524ad..db88ab5c 100644 --- a/tree/touch.rs +++ b/tree/touch.rs @@ -10,7 +10,6 @@ use chrono::{DateTime, Datelike, LocalResult, TimeZone, Utc}; use clap::Parser; use gettextrs::{bind_textdomain_codeset, setlocale, textdomain, LocaleCategory}; -use plib::PROJECT_NAME; /// touch - change file access and modification times #[derive(Parser)] @@ -248,13 +247,11 @@ fn touch_file( } fn main() -> Result<(), Box> { - // parse command line arguments - let mut args = Args::parse(); - - // initialize translations 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 mut args = Args::parse(); // default to changing both access and modification times if !args.access && !args.mtime { diff --git a/tree/unlink.rs b/tree/unlink.rs index 20a40434..bb4bdc6c 100644 --- a/tree/unlink.rs +++ b/tree/unlink.rs @@ -9,7 +9,6 @@ use clap::Parser; use gettextrs::{bind_textdomain_codeset, setlocale, textdomain, LocaleCategory}; -use plib::PROJECT_NAME; use std::{fs, io}; /// unlink - call the unlink function @@ -27,12 +26,11 @@ fn do_unlink(pathname: &str) -> io::Result<()> { } fn main() -> Result<(), Box> { - // 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; diff --git a/users/id.rs b/users/id.rs index abbdf434..11ce881f 100644 --- a/users/id.rs +++ b/users/id.rs @@ -12,7 +12,7 @@ use clap::Parser; use gettextrs::{bind_textdomain_codeset, setlocale, textdomain, LocaleCategory}; -use plib::PROJECT_NAME; +use plib::group; use std::collections::HashMap; use std::io::Error; @@ -122,7 +122,7 @@ fn get_user_info(args: &Args) -> Result> { } fn get_group_info(userinfo: &mut UserInfo) -> Result<(), Box> { - let groups = plib::group::load(); + let groups = group::load(); for group in &groups { // skip groups that the user is not a member of @@ -193,12 +193,11 @@ fn display_user_info(args: &Args, userinfo: &UserInfo) { } fn main() -> Result<(), Box> { - // 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 userinfo = get_user_info(&args)?; get_group_info(&mut userinfo)?; diff --git a/users/logger.rs b/users/logger.rs index 8e110f85..d6ebd364 100644 --- a/users/logger.rs +++ b/users/logger.rs @@ -8,13 +8,12 @@ // use gettextrs::{bind_textdomain_codeset, setlocale, textdomain, LocaleCategory}; -use plib::PROJECT_NAME; use syslog::{Facility, Formatter3164}; fn main() -> Result<(), Box> { 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 mut args: Vec = std::env::args().collect(); args.remove(0); diff --git a/users/logname.rs b/users/logname.rs index 875b2932..62a76846 100644 --- a/users/logname.rs +++ b/users/logname.rs @@ -7,8 +7,10 @@ // SPDX-License-Identifier: MIT // +use plib::curuser::login_name; + fn main() { - let username = plib::curuser::login_name(); + let username = login_name(); println!("{}", username); } diff --git a/users/mesg.rs b/users/mesg.rs index 561a63bc..b326a75c 100644 --- a/users/mesg.rs +++ b/users/mesg.rs @@ -13,7 +13,6 @@ use clap::Parser; use gettextrs::{bind_textdomain_codeset, gettext, setlocale, textdomain, LocaleCategory}; -use plib::PROJECT_NAME; use std::io::{self, Error, ErrorKind, IsTerminal}; use std::mem; @@ -121,12 +120,11 @@ fn set_mesg(fd: i32, st: libc::stat, setting: &str) -> io::Result<()> { } fn main() -> Result<(), Box> { - // 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 (fd, stat) = stat_tty()?; diff --git a/users/pwd.rs b/users/pwd.rs index 2f518532..13551a3f 100644 --- a/users/pwd.rs +++ b/users/pwd.rs @@ -12,7 +12,6 @@ use clap::Parser; use gettextrs::{bind_textdomain_codeset, setlocale, textdomain, LocaleCategory}; -use plib::PROJECT_NAME; use std::ffi::OsStr; use std::path::{Component, Path}; @@ -53,12 +52,11 @@ fn dirname_valid(name: &OsStr) -> bool { } fn main() -> Result<(), Box> { - // 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 cwd = std::env::current_dir()?.into_os_string(); if args.env { diff --git a/users/talk.rs b/users/talk.rs index 4c80b585..da65da23 100644 --- a/users/talk.rs +++ b/users/talk.rs @@ -8,7 +8,6 @@ use clap::{error::ErrorKind, Parser}; use gettextrs::{bind_textdomain_codeset, gettext, setlocale, textdomain, LocaleCategory}; -use plib::PROJECT_NAME; use thiserror::Error; use binrw::{binrw, BinReaderExt, BinWrite, Endian}; @@ -1721,6 +1720,10 @@ fn get_terminal_size() -> (u16, u16) { } fn main() -> Result<(), Box> { + setlocale(LocaleCategory::LcAll, ""); + textdomain(env!("PROJECT_NAME"))?; + bind_textdomain_codeset(env!("PROJECT_NAME"), "UTF-8")?; + let args = Args::try_parse().unwrap_or_else(|err| { if err.kind() == ErrorKind::DisplayHelp || err.kind() == ErrorKind::DisplayVersion { // Print help or version message @@ -1733,9 +1736,6 @@ fn main() -> Result<(), Box> { // Exit with a non-zero status code std::process::exit(1); }); - setlocale(LocaleCategory::LcAll, ""); - textdomain(PROJECT_NAME)?; - bind_textdomain_codeset(PROJECT_NAME, "UTF-8")?; let mut exit_code = 0; diff --git a/users/tty.rs b/users/tty.rs index 92263f27..815c8bef 100644 --- a/users/tty.rs +++ b/users/tty.rs @@ -7,6 +7,7 @@ // SPDX-License-Identifier: MIT // +use plib::curuser::tty; use std::io::{self, IsTerminal}; fn main() { @@ -16,7 +17,7 @@ fn main() { std::process::exit(1); } - let ttyname = plib::curuser::tty(); + let ttyname = tty(); println!("{}", ttyname); } diff --git a/users/write.rs b/users/write.rs index 88e38156..841fb8b2 100644 --- a/users/write.rs +++ b/users/write.rs @@ -10,9 +10,8 @@ use chrono::Local; use clap::Parser; use gettextrs::{bind_textdomain_codeset, gettext, setlocale, textdomain, LocaleCategory}; -use plib::{platform, PROJECT_NAME}; -use std::fs; -use std::fs::OpenOptions; +use plib::{curuser, platform, utmpx}; +use std::fs::{self, OpenOptions}; use std::io::{self, BufRead, Write}; use std::os::unix::fs::MetadataExt; use std::os::unix::fs::PermissionsExt; @@ -38,7 +37,7 @@ struct Args { // Select terminal in an implementation-defined manner and return terminal // Print an informational message about the chosen terminal fn select_terminal(user_name: &str) -> String { - let entries = plib::utmpx::load(); + let entries = utmpx::load(); // Filter the entries to find terminals for the specified user let user_entries: Vec<_> = entries @@ -106,15 +105,6 @@ fn check_write_permission(terminal: &str) -> bool { } } -// Retrieve the sender's login ID -fn get_login_id() -> String { - plib::curuser::login_name() -} - -fn get_terminal() -> String { - plib::curuser::tty() -} - fn get_current_date() -> String { // Retrieve the current date and time in a human-readable format let now = Local::now(); @@ -213,12 +203,11 @@ fn process_non_printable(line: &str) -> String { } fn main() -> Result<(), Box> { - // 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 user_name = args.username; let terminal = match args.terminal { @@ -237,8 +226,8 @@ fn main() -> Result<(), Box> { exit(1); } - let sender_login_id = get_login_id(); - let sending_terminal = get_terminal(); + let sender_login_id = curuser::login_name(); + let sending_terminal = curuser::tty(); let date = get_current_date(); let message = format!( diff --git a/xform/cksum.rs b/xform/cksum.rs index 9f574227..ce6daa1e 100644 --- a/xform/cksum.rs +++ b/xform/cksum.rs @@ -19,7 +19,8 @@ mod crc32; use clap::Parser; use gettextrs::{bind_textdomain_codeset, setlocale, textdomain, LocaleCategory}; -use plib::PROJECT_NAME; +use plib::io::input_stream; +use plib::BUFSZ; use std::io::{self, Read}; use std::path::PathBuf; @@ -32,9 +33,9 @@ struct Args { } fn cksum_file(filename: &PathBuf) -> io::Result<()> { - let mut file = plib::io::input_stream(filename, false)?; + let mut file = input_stream(filename, false)?; - let mut buffer = [0; plib::BUFSZ]; + let mut buffer = [0; BUFSZ]; let mut n_bytes: usize = 0; let mut crc: u32 = 0; @@ -67,12 +68,11 @@ fn cksum_file(filename: &PathBuf) -> io::Result<()> { } fn main() -> Result<(), Box> { - // parse command line arguments - let mut 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 mut args = Args::parse(); // if no file args, read from stdin if args.files.is_empty() { diff --git a/xform/compress.rs b/xform/compress.rs index a396ece1..9fb499e5 100644 --- a/xform/compress.rs +++ b/xform/compress.rs @@ -9,8 +9,8 @@ use clap::Parser; use gettextrs::{bind_textdomain_codeset, gettext, setlocale, textdomain, LocaleCategory}; +use plib::io::input_stream; use plib::lzw::UnixLZWWriter; -use plib::PROJECT_NAME; use std::fs::{self, File}; use std::io::{self, Write}; use std::path::{Path, PathBuf}; @@ -49,7 +49,7 @@ fn prompt_user(prompt: &str) -> bool { } fn compress_file(args: &Args, pathname: &PathBuf) -> io::Result { - let mut file = plib::io::input_stream(pathname, false)?; + let mut file = input_stream(pathname, false)?; let mut encoder = UnixLZWWriter::new(args.bits); @@ -115,11 +115,11 @@ fn compress_file(args: &Args, pathname: &PathBuf) -> io::Result { } fn main() -> Result<(), Box> { - let mut 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 mut args = Args::parse(); if args.files.is_empty() { args.files.push(PathBuf::new()); diff --git a/xform/tests/cksum/mod.rs b/xform/tests/cksum/mod.rs index 1bddc0c5..83cdbf5e 100644 --- a/xform/tests/cksum/mod.rs +++ b/xform/tests/cksum/mod.rs @@ -7,7 +7,7 @@ // SPDX-License-Identifier: MIT // -use plib::{run_test, TestPlan}; +use plib::testing::{run_test, TestPlan}; fn cksum_test(test_data: &str, expected_output: &str) { run_test(TestPlan { diff --git a/xform/tests/compress/mod.rs b/xform/tests/compress/mod.rs index b2ddd601..cdd00915 100644 --- a/xform/tests/compress/mod.rs +++ b/xform/tests/compress/mod.rs @@ -7,7 +7,7 @@ // SPDX-License-Identifier: MIT // -use plib::{run_test, TestPlan}; +use plib::testing::{run_test, TestPlan}; use std::{ fs::{remove_file, File}, io::Read, diff --git a/xform/tests/uue/mod.rs b/xform/tests/uue/mod.rs index cc29b8b4..022a39bc 100644 --- a/xform/tests/uue/mod.rs +++ b/xform/tests/uue/mod.rs @@ -7,7 +7,7 @@ // SPDX-License-Identifier: MIT // -use plib::{run_test, TestPlan}; +use plib::testing::{run_test, TestPlan}; use std::{ fs::{File, Permissions}, io::Read, diff --git a/xform/uncompress.rs b/xform/uncompress.rs index df3d5189..9d28b569 100644 --- a/xform/uncompress.rs +++ b/xform/uncompress.rs @@ -13,8 +13,8 @@ use clap::Parser; use gettextrs::{bind_textdomain_codeset, setlocale, textdomain, LocaleCategory}; +use plib::io::input_stream; use plib::lzw::UnixLZWReader; -use plib::PROJECT_NAME; use std::io::{self, Write}; use std::path::PathBuf; @@ -39,7 +39,7 @@ struct Args { } fn uncompress_file(pathname: &PathBuf) -> io::Result<()> { - let file = plib::io::input_stream(pathname, false)?; + let file = input_stream(pathname, false)?; let mut decoder = UnixLZWReader::new(file); loop { @@ -60,12 +60,11 @@ fn prog_is_zcat() -> bool { } fn main() -> Result<(), Box> { - // parse command line arguments - let mut 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 mut args = Args::parse(); // if no file args, read from stdin if args.files.is_empty() { diff --git a/xform/uudecode.rs b/xform/uudecode.rs index 10aa218c..b3832ca8 100644 --- a/xform/uudecode.rs +++ b/xform/uudecode.rs @@ -10,7 +10,6 @@ use base64::prelude::*; use clap::Parser; use gettextrs::{bind_textdomain_codeset, setlocale, textdomain, LocaleCategory}; -use plib::PROJECT_NAME; use std::fs::{remove_file, File}; use std::io::{self, Error, Read, Write}; use std::os::unix::fs::PermissionsExt; @@ -176,12 +175,11 @@ fn pathname_display(path: &Option) -> String { } fn main() -> Result<(), Box> { - // 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; diff --git a/xform/uuencode.rs b/xform/uuencode.rs index f5cceec4..3b28df93 100644 --- a/xform/uuencode.rs +++ b/xform/uuencode.rs @@ -10,7 +10,6 @@ use base64::prelude::*; use clap::Parser; use gettextrs::{bind_textdomain_codeset, setlocale, textdomain, LocaleCategory}; -use plib::PROJECT_NAME; use std::fs::{File, Permissions}; use std::io::{self, Read, Write}; use std::os::unix::fs::PermissionsExt; @@ -177,11 +176,11 @@ fn pathname_display(path: &Option) -> String { } fn main() -> Result<(), Box> { - 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;