.
This commit is contained in:
parent
d3d24e46b4
commit
3bbadc8f11
13
TODO
13
TODO
@ -1,17 +1,22 @@
|
|||||||
Makefile(
|
|
||||||
|
|
||||||
*Todo:
|
*Todo:
|
||||||
dirname
|
|
||||||
basename
|
|
||||||
mktemp
|
mktemp
|
||||||
ln
|
ln
|
||||||
nice
|
nice
|
||||||
nohup
|
nohup
|
||||||
chmod
|
chmod
|
||||||
chown
|
chown
|
||||||
|
split
|
||||||
|
truncate
|
||||||
|
date
|
||||||
|
tee
|
||||||
|
tr
|
||||||
|
cut
|
||||||
shuf
|
shuf
|
||||||
id
|
id
|
||||||
df
|
df
|
||||||
dd
|
dd
|
||||||
|
stty
|
||||||
|
stat
|
||||||
|
sort
|
||||||
printf
|
printf
|
||||||
test
|
test
|
||||||
|
40
coreutils/basename.c
Normal file
40
coreutils/basename.c
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <libgen.h>
|
||||||
|
|
||||||
|
void remove_suffix(char *base, const char *suffix) {
|
||||||
|
char *ptr = base + strlen(base) - strlen(suffix);
|
||||||
|
if (!strcmp(ptr, suffix))
|
||||||
|
*ptr = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(const int argc, char **argv) {
|
||||||
|
char *suffix = NULL;
|
||||||
|
char *base = NULL;
|
||||||
|
|
||||||
|
int i;
|
||||||
|
for (i = 1; i < argc; i++) {
|
||||||
|
if (argv[i][0] != '-')
|
||||||
|
break;
|
||||||
|
|
||||||
|
else if (!strcmp(argv[i], "--help")) {
|
||||||
|
printf("basename [name] [suffix]\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argc - i < 1) {
|
||||||
|
fprintf(stderr, "basename: missing operand\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (argc - i == 2)
|
||||||
|
suffix = argv[i + 1];
|
||||||
|
|
||||||
|
base = basename(argv[i]);
|
||||||
|
if (suffix)
|
||||||
|
remove_suffix(base, suffix);
|
||||||
|
|
||||||
|
puts(base);
|
||||||
|
return 0;
|
||||||
|
}
|
@ -4,7 +4,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
unsigned int flag;
|
unsigned int n_flag;
|
||||||
unsigned int lines;
|
unsigned int lines;
|
||||||
void cat(const int fd) {
|
void cat(const int fd) {
|
||||||
char buf[4024];
|
char buf[4024];
|
||||||
@ -12,7 +12,7 @@ void cat(const int fd) {
|
|||||||
|
|
||||||
while ((len = read(fd, buf, sizeof(buf))) > 0) {
|
while ((len = read(fd, buf, sizeof(buf))) > 0) {
|
||||||
for (ssize_t i = 0; i < len; i++) {
|
for (ssize_t i = 0; i < len; i++) {
|
||||||
if (((i > 0) ? buf[i - 1] == '\n' : 1) && flag)
|
if (((i > 0) ? buf[i - 1] == '\n' : 1) && n_flag)
|
||||||
printf(" %d ", ++lines);
|
printf(" %d ", ++lines);
|
||||||
|
|
||||||
printf("%c", buf[i]);
|
printf("%c", buf[i]);
|
||||||
@ -27,7 +27,7 @@ int main(const int argc, const char **argv) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
else if (!strcmp(argv[i], "-n"))
|
else if (!strcmp(argv[i], "-n"))
|
||||||
flag = 1;
|
n_flag = 1;
|
||||||
|
|
||||||
else if (!strcmp(argv[i], "--help")) {
|
else if (!strcmp(argv[i], "--help")) {
|
||||||
printf("cat [-n (numerate)] [file1 file2 ...]\n");
|
printf("cat [-n (numerate)] [file1 file2 ...]\n");
|
||||||
|
32
coreutils/chmod.c
Normal file
32
coreutils/chmod.c
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
|
||||||
|
//TODO
|
||||||
|
int main(const int argc, const char **argv) {
|
||||||
|
unsigned int r_flag = 0;
|
||||||
|
unsigned int s_flag = 0;
|
||||||
|
|
||||||
|
int i;
|
||||||
|
for (i = 1; i < argc; i++) {
|
||||||
|
if (argv[i][0] != '-')
|
||||||
|
break;
|
||||||
|
|
||||||
|
else if (!strcmp(argv[i], "-r"))
|
||||||
|
r_flag = 1;
|
||||||
|
|
||||||
|
else if (!strcmp(argv[i], "-s"))
|
||||||
|
s_flag = 1;
|
||||||
|
|
||||||
|
else if (!strcmp(argv[i], "--help")) {
|
||||||
|
printf("chmod [-r (recursive)] [-s (silent)] [file1 file2...]\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
16
coreutils/dirname.c
Normal file
16
coreutils/dirname.c
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <libgen.h>
|
||||||
|
|
||||||
|
int main(const int argc, const char **argv) {
|
||||||
|
|
||||||
|
if (argc <= 1) {
|
||||||
|
printf("dirname [dirname]\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 1; i < argc; i++)
|
||||||
|
puts(dirname(argv[i]));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
16
coreutils/logname.c
Normal file
16
coreutils/logname.c
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
char *p = getlogin();
|
||||||
|
if (p != NULL) {
|
||||||
|
puts(p);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf(stderr, "logname: %s\n", strerror(errno));
|
||||||
|
return 1;
|
||||||
|
}
|
@ -1,8 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
#define MSG "Micro-coreutils: Version 0.1 LICENSE: wtfpl\n"
|
|
||||||
|
|
||||||
int main(void) {
|
|
||||||
puts(MSG);
|
|
||||||
return 0;
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user