aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormerakor <cem@ckyln.com>2020-05-04 10:24:50 +0000
committermerakor <cem@ckyln.com>2020-05-04 10:24:50 +0000
commit40ceb8f388be5a3662ba53cf298b451ab4ec5c2a (patch)
tree8a9b0011a4beaa670f654acde3ee59d2ebbd64d8
parent0897228d01ff2aae1b9773f2a93d6f9942dd241b (diff)
downloadcpt-40ceb8f388be5a3662ba53cf298b451ab4ec5c2a.tar.gz
kiss-readlink: add 'readlink -f' replacement
FossilOrigin-Name: 9e79f1a481f6d703182f086417f76c41b67e5ac180b9c3c79029cb151a770ec8
-rw-r--r--.gitignore3
-rw-r--r--Makefile19
-rw-r--r--bin/kiss-readlink.c25
-rwxr-xr-xkiss4
-rw-r--r--man/kiss-contrib.15
5 files changed, 46 insertions, 10 deletions
diff --git a/.gitignore b/.gitignore
index 950efb2..363f352 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
-kiss-stat \ No newline at end of file
+kiss-stat
+kiss-readlink
diff --git a/Makefile b/Makefile
index c82168c..634816b 100644
--- a/Makefile
+++ b/Makefile
@@ -4,21 +4,25 @@ MANPREFIX = ${PREFIX}/share/man
MAN1 = ${MANPREFIX}/man1
CC = cc
-all: kiss-stat
+all: kiss-stat kiss-readlink
kiss-stat:
${CC} -o kiss-stat bin/kiss-stat.c
+kiss-readlink:
+ ${CC} -o kiss-readlink bin/kiss-readlink.c
+
clean:
- rm -f kiss-stat
+ rm -f kiss-stat kiss-readlink
install: all
mkdir -p ${DESTDIR}${BINDIR}
- cp kiss ${DESTDIR}${BINDIR}/kiss
- chmod 755 ${DESTDIR}${BINDIR}/kiss
- cp kiss-stat ${DESTDIR}${BINDIR}/kiss-stat
- chmod 755 ${DESTDIR}${BINDIR}/kiss-stat
- for bin in contrib/* ; do cp $${bin} ${DESTDIR}${BINDIR}/$${bin##*/}; \
+ cp kiss kiss-stat kiss-readlink ${DESTDIR}${BINDIR}
+ chmod 755 ${DESTDIR}${BINDIR}/kiss \
+ ${DESTDIR}${BINDIR}/kiss-stat \
+ ${DESTDIR}${BINDIR}/kiss-readlink
+ for bin in contrib/* ; do \
+ cp $${bin} ${DESTDIR}${BINDIR}/$${bin##*/}; \
chmod 755 ${DESTDIR}${BINDIR}/$${bin##*/} ; done
mkdir -p ${DESTDIR}${MAN1}
@@ -29,6 +33,7 @@ install: all
uninstall:
rm -f ${DESTDIR}${BINDIR}/kiss
rm -f ${DESTDIR}${BINDIR}/kiss-stat
+ rm -f ${DESTDIR}${BINDIR}/kiss-readlink
for bin in contrib/* ; do rm -f ${DESTDIR}${BINDIR}/$${bin##*/} ; done
rm -f ${DESTDIR}${MAN1}/kiss.1 ${DESTDIR}${MAN1}/kiss.1
rm -f ${DESTDIR}${MAN1}/kiss-contrib.1 ${DESTDIR}${MAN1}/kiss-contrib.1
diff --git a/bin/kiss-readlink.c b/bin/kiss-readlink.c
new file mode 100644
index 0000000..15a5fa3
--- /dev/null
+++ b/bin/kiss-readlink.c
@@ -0,0 +1,25 @@
+// kiss-readlink --- a utility replacement for readlink
+// See LICENSE for copyright information
+
+// This is basically a 'readlink -f' command.
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ char buf[512];
+
+ if (argc != 2) {
+ printf("usage: %s FILE\n", argv[0]);
+ return(1);
+ }
+
+ if (!realpath(argv[1], buf)) {
+ perror("realpath:");
+ return(1);
+ }
+
+ // fputs(buf,stdout);
+ printf("%s\n", buf);
+ return(0);
+}
diff --git a/kiss b/kiss
index 59d6de5..45d6023 100755
--- a/kiss
+++ b/kiss
@@ -448,7 +448,7 @@ pkg_fixdeps() {
# canonicalize the path.
dep=${dep#* => }
dep=${dep% *}
- dep=$(readlink -f "$dep")
+ dep=$(kiss-readlink "$dep")
# Figure out which package owns the file.
own=$("$grep" -lFx "${dep#$KISS_ROOT}" "$@")
@@ -746,7 +746,7 @@ pkg_conflicts() {
case $file in */) continue; esac
printf '%s/%s\n' \
- "$(readlink -f "$KISS_ROOT/${file%/*}" 2>/dev/null)" \
+ "$(kiss-readlink "$KISS_ROOT/${file%/*}" 2>/dev/null)" \
"${file##*/}"
done < "$tar_dir/$1/$pkg_db/$1/manifest" > "$cac_dir/$pid-m"
diff --git a/man/kiss-contrib.1 b/man/kiss-contrib.1
index 0ad4475..fed5c16 100644
--- a/man/kiss-contrib.1
+++ b/man/kiss-contrib.1
@@ -122,6 +122,11 @@ can be used to check if personal packages are outdated.
<file>
Checks which package has installed the given file.
+.SH KISS-READLINK
+.B kiss-readlink
+<file>
+
+A 'readlink -f' replacement to be used inside the package manager.
.SH KISS-REPODEPENDS
.B kiss-repodepends
<pkg>