forked from bonsai/harakit
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
abb8fdf935
|
|||
|
dac7567405
|
|||
|
97382b79fd
|
|||
|
64a1a19bd8
|
|||
|
cc93389232
|
|||
|
42c5c5642e
|
|||
|
c753eeea9c
|
32
README
32
README
@@ -17,6 +17,31 @@ purposes beyond its scope.
|
|||||||
|
|
||||||
See docs/ for more on the specific utilities currently implemented.
|
See docs/ for more on the specific utilities currently implemented.
|
||||||
|
|
||||||
|
Building
|
||||||
|
|
||||||
|
The coreutils require a POSIX-compliant environment to compile, including a C
|
||||||
|
compiler and preprocessor (cc(1) and cpp(1) by default) with the -idirafter
|
||||||
|
flag, a Rust compiler (rustc(1) by default), bindgen(1), and a POSIX-compliant
|
||||||
|
make(1) utility.
|
||||||
|
|
||||||
|
To build and install:
|
||||||
|
|
||||||
|
$ make
|
||||||
|
$ make PREFIX="/your/preferred/location" install
|
||||||
|
|
||||||
|
To build with a different compiler than the default:
|
||||||
|
|
||||||
|
$ make CC=clang
|
||||||
|
$ make RUSTC=gccrs
|
||||||
|
|
||||||
|
To test the utilities:
|
||||||
|
|
||||||
|
$ make test
|
||||||
|
|
||||||
|
To remove all untracked files:
|
||||||
|
|
||||||
|
$ make clean
|
||||||
|
|
||||||
Read More
|
Read More
|
||||||
|
|
||||||
An Introduction to the Unix Shell
|
An Introduction to the Unix Shell
|
||||||
@@ -30,3 +55,10 @@ Master Foo Discourses on the Unix-Nature
|
|||||||
|
|
||||||
Shell Programming!
|
Shell Programming!
|
||||||
<https://tldp.org/LDP/abs/html/why-shell.html>
|
<https://tldp.org/LDP/abs/html/why-shell.html>
|
||||||
|
|
||||||
|
--
|
||||||
|
Copyright © 2023–2024 Emma Tebibyte <emma@tebibyte.media>
|
||||||
|
Copyright © 2024 DTB <trinity@trinity.moe>
|
||||||
|
|
||||||
|
This work is licensed under CC BY-SA 4.0. To view a copy of this license, visit
|
||||||
|
<http://creativecommons.org/licenses/by-sa/4.0/>.
|
||||||
|
|||||||
15
src/scrut.c
15
src/scrut.c
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
#include <stdio.h> /* fprintf(3), stderr, NULL */
|
#include <stdio.h> /* fprintf(3), stderr, NULL */
|
||||||
#include <stdlib.h> /* EXIT_FAILURE */
|
#include <stdlib.h> /* EXIT_FAILURE */
|
||||||
#include <string.h> /* strchr(3) */
|
#include <string.h> /* memset(3), strchr(3) */
|
||||||
#include <unistd.h> /* access(3), getopt(3), F_OK, R_OK, W_OK, X_OK */
|
#include <unistd.h> /* access(3), getopt(3), F_OK, R_OK, W_OK, X_OK */
|
||||||
#include <sys/stat.h> /* lstat(3), stat struct, S_ISBLK, S_ISCHR, S_ISDIR,
|
#include <sys/stat.h> /* lstat(3), stat struct, S_ISBLK, S_ISCHR, S_ISDIR,
|
||||||
* S_ISFIFO, S_ISGID, S_ISREG, S_ISLNK, S_ISSOCK,
|
* S_ISFIFO, S_ISGID, S_ISREG, S_ISLNK, S_ISSOCK,
|
||||||
@@ -33,17 +33,24 @@ int main(int argc, char *argv[]){
|
|||||||
struct stat buf;
|
struct stat buf;
|
||||||
int c;
|
int c;
|
||||||
size_t i;
|
size_t i;
|
||||||
|
char *p;
|
||||||
|
|
||||||
if(argc < 2)
|
if(argc < 2)
|
||||||
goto usage;
|
goto usage;
|
||||||
|
|
||||||
i = 0;
|
memset(ops, '\0', sizeof ops);
|
||||||
while((c = getopt(argc, argv, args)) != -1)
|
while((c = getopt(argc, argv, args)) != -1)
|
||||||
if(strchr(args, c) == NULL)
|
if((p = strchr(args, c)) == NULL)
|
||||||
goto usage;
|
goto usage;
|
||||||
else
|
else
|
||||||
ops[i++] = c;
|
ops[p - args] = c;
|
||||||
|
/* straighten out ops */
|
||||||
|
for(i = 0, p = ops; i < (sizeof ops) / (sizeof *ops); ++i)
|
||||||
|
if(ops[i] != '\0'){
|
||||||
|
*p = ops[i];
|
||||||
|
if(&ops[i] != p++)
|
||||||
ops[i] = '\0';
|
ops[i] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
if(optind == argc)
|
if(optind == argc)
|
||||||
goto usage;
|
goto usage;
|
||||||
|
|||||||
Reference in New Issue
Block a user