#!/usr/bin/env perl # $Id$ # Return information given a TL package name (i.e., a tpm file name). # Currently just the ctan directory for package, but maybe we'll do more # later. # exit (&main ()); sub main { $CTAN = $ENV{"CTAN"} || "/home/ftp/tex-archive"; if ($ARGV[0] eq "--ctan-dir") { return &find_ctan_dir ($ARGV[1]); } else { die "$0: only know about --ctan-dir PKGNAME.\n"; } } # # The CTAN path to a package is sometimes stored in the TeX Catalogue, # but old entries don't have it, etc. Still, we should use it if present.xx # Return 0 for success if we find a path (and print it on stdout), else # return 1. # sub find_ctan_dir { my ($me) = @_; return 1 unless $me; (my $menobin = $me) =~ s,^bin-,,; (my $menodash = $me) =~ s,^.*-,,; (my $menopowerdot = $me) =~ s,^powerdot-,,; (my $menotype1 = $me) =~ s,-type1$,,; my $ctan_dir = ""; for my $dir ( "macros/latex/contrib/$me", # most everything "macros/latex/contrib/\L$me", # HA-prosper "macros/latex/contrib/powerdot/contrib/$menopowerdot", # powerdot-doc-vn "macros/latex/exptl/$me", # semioneside "macros/latex/required/$me", # babel "macros/plain/$me", # plnfss "macros/xetex/latex/$me", # xetex "macros/generic/$me", # abbr "macros/generic/diagrams/$me", # circ "macros/$me", # eplain "support/$me", # thumbpdf "support/$menobin", # bin-thumbpdf "language/vietnamese/$me/unpacked", # vntex "language/hebrew/$me", # cjhebrew "language/greek/package-babel/$me", # ibycus-babel "language/coptic/$me", # cbcoptic "info/math/voss/$me", # mathmode "info/lshort/$menodash", # lshort-english "info/bibtex/$me", # tamethebeast "info/symbols/$me", # comprehensive "info/$me", # Type1fonts "graphics/$me", # sparklines "graphics/metapost/contrib/macros/$me", # mpattern "graphics/pstricks/contrib/pedigree/$me", # pst-pdgr "graphics/pstricks/contrib/$me", # pstricks-add "fonts/$me", # MnSymbol "fonts/gothic/$me", # blacklettert1 "fonts/cyrillic/$me/texmf", # lh "fonts/greek/$me", # lfb "fonts/ps-type1/$me", # cm-super "fonts/ps-type1/$menotype1", # esint-type1 "fonts/utilities/$me", # accfonts "biblio/bibtex/contrib/$me", # dk-bib ) { if (-d "$CTAN/$dir") { $ctan_dir = $dir; last; } } # names totally dissimilar $ctan_dir = "fonts/fourier-GUT" if $me eq "fourier"; $ctan_dir = "info/biblio" if $me eq "beebe"; $ctan_dir = "info/italian/amsldoc" if $me eq "amsldoc-it"; $ctan_dir = "info/italian/amsthdoc" if $me eq "amsthdoc-it"; $ctan_dir = "info/tex-references" if $me eq "tex-refs"; $ctan_dir = "language/basque" if $me eq "hyphen-basque"; $ctan_dir = "language/devanagari/velthuis" if $me eq "devanagr"; $ctan_dir = "language/hyphenation" if $me eq "hyphen-german"; $ctan_dir = "language/hyphenation/elhyphen" if $me eq "hyphen-greek"; $ctan_dir = "macros/latex/contrib/misc" if $me eq "ltxmisc"; $ctan_dir = "macros/generic" if $me eq "genmisc"; # do last, for sake of subdirs above. $ctan_dir = "language/hyphenation" if $me =~ /^hyphen-/ && ! $ctan_dir; print "$CTAN/$ctan_dir\n" if $ctan_dir; return $ctan_dir ? 0 : 1; } # this was the inverse code from ctan2tl, saving for a while until i get # a better grip. ## case "$pkg" in ## biblio) pkg=beebe;; ## fourier-GUT) pkg=fourier;; ## generic) pkg=genmisc;; # $ctan/macros/generic ## ha-prosper) pkg=HA-prosper;; ## misc) pkg=ltxmisc;; # until we do real misc package. ## tex-references) pkg=tex-refs;; ## velthuis) pkg=devanagr;; ## voss) pkg=voss-de;; ## esac ## ## # lshort is arranged by language. ## pkgdir=`dirname $ctan_dir1` ## up=`basename $pkgdir` ## test "$up" = lshort && pkg=lshort-$pkg ## ## # esint is split into two. ## test "$pkg" = esint && test "$up" = ps-type1 && pkg=esint-type1 ## ## # vntex, powerdot, lh aare in unpacked subdirs. ## test "$pkg" = unpacked && test "$up" = vntex && pkg=vntex ## test "$pkg" = distrib && test "$up" = powerdot && pkg=powerdot ## test "$pkg" = texmf && test "$up" = lh && pkg=lh ## ## # powerdot-doc-vn is a couple subdirs down. ## test "$pkg" = doc-vn && test "$up" = contrib && pkg=powerdot-doc-vn ## ## # amslatex/vietnamese. ## test "$pkg" = vietnamese && test "$up" = amslatex && pkg=amsldoc-vn