1#! /bin/bash
2#
3# aliasconv.bash - convert csh aliases to bash aliases and functions
4#
5# usage: aliasconv.bash
6#
7# Chet Ramey
8# chet@po.cwru.edu
9#
10trap 'rm -f /tmp/cb$$.?' 0 1 2 3 6 15
11
12T=$'\t'
13
14cat << \EOF >/tmp/cb$$.1
15mkalias ()
16{
17	case $2 in
18	'')	echo alias ${1}="''" ;;
19	*[#\!]*)
20		comm=$(echo $2 | sed  's/\!\*/"$\@"/g
21				      s/\!:\([1-9]\)/"$\1"/g
22			              s/#/\#/g')
23		echo $1 \(\) "{" command "$comm"  "; }"
24		;;
25	*)	echo alias ${1}=\'$(echo "${2}" | sed "s:':'\\\\'':g")\' ;;
26	esac
27}
28EOF
29
30# the first thing we want to do is to protect single quotes in the alias,
31# since they whole thing is going to be surrounded by single quotes when
32# passed to mkalias
33
34sed -e "s:':\\'\\\'\\':" -e "s/^\([a-zA-Z0-9_-]*\)$T\(.*\)$/mkalias \1 '\2'/" >>/tmp/cb$$.1
35
36$BASH /tmp/cb$$.1 | sed -e 's/\$cwd/\$PWD/g' \
37		     -e 's/\$term/\$TERM/g' \
38		     -e 's/\$home/\$HOME/g' \
39		     -e 's/\$user/\$USER/g' \
40		     -e 's/\$prompt/\$PS1/g'
41
42exit 0
43