added readlink
This commit is contained in:
parent
e5b250b721
commit
2eb86c9525
|
@ -185,7 +185,7 @@ int main(int argc, char **argv) {
|
|||
break;
|
||||
|
||||
default:
|
||||
printf("cp [rfv] [src1 src2...] [dst]\n\t-f Silent\n\t-r Recursive\n\t-v Verbose\n\t-L Follow all symlinks\n");
|
||||
printf("cp [frvL] [src1 src2...] [dst]\n\t-f Silent\n\t-r Recursive\n\t-v Verbose\n\t-L Follow all symlinks\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/sh
|
||||
project_dir=$(pwd)
|
||||
echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC
|
|
@ -0,0 +1,48 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <limits.h>
|
||||
#include <errno.h>
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
char n_flag = 0;
|
||||
|
||||
int opt;
|
||||
while ((opt = getopt(argc, argv, "n")) != -1) {
|
||||
switch (opt) {
|
||||
case 'n':
|
||||
n_flag = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("readlink [n] [file1 file2...]\n\t-n Don't add newline\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
argv += optind;
|
||||
argc -= optind;
|
||||
|
||||
for (int i = 0; i < argc; i++) {
|
||||
char path[PATH_MAX + 1];
|
||||
ssize_t r = readlink(argv[i], path, sizeof(path));
|
||||
if (r < 0) {
|
||||
fprintf(stderr, "readlink: %s: %s\n", argv[i], strerror(errno));
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (r > (ssize_t)sizeof(path)) {
|
||||
fprintf(stderr, "readlink: %s: path too long\n", argv[i]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (n_flag)
|
||||
fputs(path, stdout);
|
||||
|
||||
else
|
||||
puts(path);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue