From 8a4a0fb7d032cd725cea00a7b4587faaa8535cea Mon Sep 17 00:00:00 2001 From: jstmax! Date: Fri, 14 Nov 2025 19:46:20 +0100 Subject: updated std::cerr and std::cout to std::print --- README.md | 6 +++--- xsc.cpp | 58 +++++++++++++++++++++++++++++++++------------------------- 2 files changed, 36 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index c40fcb1..acaa977 100644 --- a/README.md +++ b/README.md @@ -14,12 +14,12 @@ install it with your favourite AUR helper: * `aurman` : `aurman -S xsc` ## dependencies🤓 -* `figlet` : `pacman -S figlet` -* `lolcat` : `pacman -S lolcat` +* `figlet` : `paru -S figlet` +* `lolcat` : `paru -S lolcat` ## manual installation one-liner🤖 #### downloads dependencies, clones repo and compiles **xsc3** ; -`pacman -S figlet lolcat gcc && git clone https://github.com/jstmaxlol/xsc && cd ./xsc && g++ -o xsc xsc.cpp -O2` +`paru -S figlet lolcat gcc && git clone https://github.com/jstmaxlol/xsc && cd ./xsc && g++ -o xsc xsc.cpp -O2 -std=c++23` #### (optional, but recommended for actually using xsc) moves **xsc3** to PATH ; `mv ./xsc /usr/bin/xsc` \ if didn't know, adding a binary to PATH makes it so that you do not have to find yourself in the installation path of the binary to execute it! diff --git a/xsc.cpp b/xsc.cpp index 170017a..ea72feb 100644 --- a/xsc.cpp +++ b/xsc.cpp @@ -1,4 +1,5 @@ #include +#include #include #include @@ -10,12 +11,12 @@ void usage(); int main(int argc, char** argv) { if (argc > 5) { - std::cerr << "::> " << red << "xsc.Error" << def << "/" << red << "too_many_arguments " << def; - return -1; + std::print("::> {}xsc.Error{}/{}too_many_arguments{}\n", red, def, red, def); + return 1; } if (argc < 2) { - std::cerr << "::> " << red << "xsc.Error" << def << "/" << red << "not_enough_arguments " << def; - return -1; + std::print("::> {}xsc.Error{}/{}not_enough_arguments{}\n", red, def, red, def); + return 1; } std::string arg1 = argv[1]; @@ -26,10 +27,10 @@ int main(int argc, char** argv) { return 0; } if (arg1 == "--help" || arg1 == "-h") { - std::cerr << "::> " << red << "xsc.Warning" << def << "/" << red << "non_existing_argument\n" - << def << "::> did you mean: " << yellow << "h" << def << " || " << yellow << "help" << def << "?\n"; + std::print("::> {}xsc.Warning{}/{}non_existing_argument{}\n", red, def, red, def); + std::print("::> did you mean: {}h{} || {}help{}?\n", yellow, def, yellow, def); usage(); - return -1; + return 1; } // square root: xsc r @@ -38,16 +39,16 @@ int main(int argc, char** argv) { try { n1 = std::stod(arg1); } catch (...) { - std::cerr << "::> " << red << "xsc.Error" << def << "/" << red << "invalid_number " << def; - return -1; + std::print("::> {}xsc.Error{}/{}invalid_number{}\n", red, def, red, def); + return 1; } std::string opstr = argv[2]; if (opstr == "r") { - std::cout << sqrt(n1) << std::endl; + std::print("{}\n", sqrt(n1)); return 0; } else { - std::cerr << "::> " << red << "xsc.Error" << def << "/" << red << "invalid_operator " << def; - return -1; + std::print("::> {}xsc.Error{}/{}invalid_operator{}\n", red, def, red, def); + return 1; } } @@ -59,44 +60,51 @@ int main(int argc, char** argv) { n1 = std::stod(arg1); n2 = std::stod(argv[3]); } catch (...) { - std::cerr << "::> " << red << "xsc.Error" << def << "/" << red << "invalid_number " << def; - return -1; + std::print("::> {}xsc.Error{}/{}invalid_number{}\n", red, def, red, def); + return 1; } op = argv[2][0]; return calculate(n1, op, n2); } // if only 1 argument and not help - std::cerr << "::> " << red << "xsc.Error" << def << "/" << red << "not_enough_arguments " << def; - return -1; + // TODO: remove this shit because it *is* redundant(, right?) + std::print("::> {}xsc.Error{}/{}not_enough_arguments{}\n", red, def, red, def); + return 1; } int calculate(double& n1, char& op, double& n2) { switch (op) { - case '+': + case '+': { std::cout << n1 + n2 << "\n"; return 0; - case '-': + } + case '-': { std::cout << n1 - n2 << "\n"; return 0; - case 'x': + } + case 'x': { std::cout << n1 * n2 << "\n"; return 0; - case '/': + } + case '/': { if (n2 == 0) { - std::cerr << "::> " << red << "xsc.MathError" << def << "/" << red << "divsion_by_zero"; - return -1; + std::print("::> {}xsc.MathError{}/{}division_by_zero{}\n", red, def, red, def); + return 1; } std::cout << n1 / n2 << "\n"; return 0; - case '%': + } + case '%': { std::cout << (n1 / n2) * 100 << "\n"; return 0; - case '^': + } + case '^': { std::cout << pow(n1, n2) << "\n"; return 0; + } } - return -1; + return 1; } void usage() { -- cgit v1.3.1