1#!/bin/sh
2set -e
3
4if [ $# -lt 1 ]; then
5    argv0=`basename $0`
6    echo "$argv0: Convert source code written for Xr to use Cairo instead." >&2
7    echo "" >&2
8    echo "Usage: $argv0 file [...]" >&2
9    exit 1
10fi
11
12xr2cairo() {
13	file=$1
14	backup=$file.xr
15
16	if [ -e $backup ]; then
17		echo "Warning: Backup file $backup already exists --- not backing up this time." >&2
18	else
19		cp $file $backup
20	fi
21	sed -e '
22		s/\(Xr[a-zA-Z]*\)RGB/\1Rgb/g
23		s/\(Xr[a-zA-Z]*\)NextTo/\1Similar/g
24
25		s/Xr\([A-Z]\+[a-z]\+\)\([A-Z]\+[a-z]\+\)\([A-Z]\+[a-z]\+\)\([A-Z]\+[a-z]\+\)\([A-Z]\+[a-z]\+\)/\Lcairo_\1_\2_\3_\4_\5\E/g
26		s/Xr\([A-Z]\+[a-z]\+\)\([A-Z]\+[a-z]\+\)\([A-Z]\+[a-z]\+\)\([A-Z]\+[a-z]\+\)/\Lcairo_\1_\2_\3_\4\E/g
27		s/Xr\([A-Z]\+[a-z]\+\)\([A-Z]\+[a-z]\+\)\([A-Z]\+[a-z]\+\)/\Lcairo_\1_\2_\3\E/g
28		s/Xr\([A-Z]\+[a-z]\+\)\([A-Z]\+[a-z0-9]\+\)/\Lcairo_\1_\2\E/g
29		s/Xr\([A-Z]\+[a-z]\+\)/\Lcairo_\1\E/g
30
31		s/\(cairo_\(operator\|status\|fill_rule\|line_cap\|line_join\|filter\|format\)_[a-z0-9_]\{2,\}\)/\U\1/g
32
33		s/cairo_\(fill_rule\|line_cap\|line_join\|format\|operator\|status\|filter\|surface\|matrix\)$/cairo_\1_t/g
34		s/cairo_\(fill_rule\|line_cap\|line_join\|format\|operator\|status\|filter\|surface\|matrix\)\([^_]\)/cairo_\1_t\2/g
35		s/_cairo_\(fill_rule\|line_cap\|line_join\|format\|operator\|status\|filter\|surface\|matrix\)_t/cairo_\1/g
36		s/cairo_state/cairo_t/g
37		s/_cairo_t\([^a-zA-Z0-9_]\)/cairo\1/g
38
39		s/Xr\.h/cairo.h/g
40
41		' $backup > $file
42}
43
44while [ $# -gt 0 ]; do
45	file=$1
46	shift
47	xr2cairo $file
48done
49
50