[tex-live] texlinks patch - unlink option
Edd Barrett
vext01 at gmail.com
Wed Oct 10 12:05:55 CEST 2007
Hi there,
I have added an option to the texlinks script which allows the user to
unlink, effectively reversing the texlinks process. I needed this to
clean up the filesystem before the texlive package is removed.
a) Is the code correct? It appears to do what I think it should, but a
second pair of eyes might reveal more.
b) Can this go upstream? I would find it useful, as I wouldn't have to
re-patch my port each year.
--- texk/tetex/texlinks.orig Tue Oct 9 14:21:16 2007
+++ texk/tetex/texlinks Tue Oct 9 14:24:11 2007
@@ -6,6 +6,9 @@
# the lines given in fmtutil.cnf.
# History:
+# Tue Oct 9 14:23:01 BST 2007
+# Added unlink option (-u) to aid OpenBSD package uninstall
+# Edd Barrett <vext01 at gmail.com>
# Sun Aug 28 21:41:06 CEST 2005
# remove special cases for csplain,cslatex,pdfcslatex,pdfcsplain
# Fr Apr 8 19:15:05 CEST 2005
@@ -57,6 +60,8 @@ Valid options:
--silent
-s silently skip over existing scripts / binaries
instead of creating a warning
+ --unlink Delete symlinks created by texlinks
+ -u
directories is an optional list of directories in which to operate.
If no directories are specified the list of directories depends on the
@@ -205,6 +210,25 @@ upd_symlinkdir()
}
###############################################################################
+# rm_link()
+# Delete a previously installed link
+###############################################################################
+
+rm_link()
+{
+ link=$1;
+ if test -e $link; then
+ if test -h $link; then
+ verbose_do rm -Rf $link
+ else
+ verbose_echo "$link: Not a symlink. Keeping"
+ fi
+ else
+ verbose_echo "$link: Non-existent. Skipping"
+ fi
+}
+
+###############################################################################
# main()
# parse commandline arguments, initialize variables,
# switch into temp. direcrory, execute desired command
@@ -217,6 +241,7 @@ main()
multiplatform=false
verbose=false
+ unlink=false
silent=false
thisdir=`pwd`
: ${KPSE_DOT=$thisdir}; export KPSE_DOT
@@ -232,6 +257,7 @@ main()
--v*|-v) verbose=true;;
--s*|-s) silent=true;;
--m*|-m) multiplatform=true;;
+ --u*|-u) unlink=true;;
-*) errmsg "fmtutil: unknown option \`$1' ignored.";;
*) break;;
esac
@@ -278,7 +304,12 @@ main()
test "x$fmt" = "x$engine" && continue
if test -f "$d/$engine"; then
- install_link "$engine" "$d/$fmt"
+ case $unlink in
+ true)
+ rm_link "$d/$fmt";;
+ *)
+ install_link "$engine" "$d/$fmt";;
+ esac
else
verbose_echo "$d/$engine: engine does not exist. Skipping..."
fi
Thanks
--
Best Regards
Edd
---------------------------------------------------
http://students.dec.bournemouth.ac.uk/ebarrett
More information about the tex-live
mailing list