summaryrefslogtreecommitdiffstats
path: root/usr.bin/vi/catalog/Makefile
blob: 30bc12cc410cf69730ae3ae7e1b7d9f05eb8682b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#	$Id: Makefile,v 9.0 2012/10/19 15:13:11 zy Exp $
# $FreeBSD$

.include <bsd.own.mk>

V=	${.CURDIR}/../../../contrib/nvi

CAT=	dutch english french german polish ru_RU.KOI8-R spanish swedish \
	uk_UA.KOI8-U zh_CN.GB2312

SCAN=	${V}/cl/*.c ${V}/common/*.c ${V}/ex/*.c ${V}/vi/*.c

.PATH: ${V}/catalog

all:		dump

build-tools:	dump

# Helper since iconv is non trivial to make a build tool
utf8convert:
.for c in dutch french german spanish swedish
	iconv -f ISO8859-1 -t UTF-8 $V/catalog/$c.base > $c.UTF-8.base
.endfor
	iconv -f ISO8859-2 -t UTF-8 $V/catalog/polish.base > polish.UTF-8.base
	iconv -f GB2312 -t UTF-8 $V/catalog/zh_CN.GB2312.base > zh_CN.UTF-8.base
	iconv -f KOI8-R -t UTF-8 $V/catalog/ru_RU.KOI8-R.base > ru_RU.UTF-8.base
	iconv -f KOI8-U -t UTF-8 $V/catalog/uk_UA.KOI8-U.base > uk_UA.UTF-8.base
	
.for c in dutch french german polish spanish swedish zh_CN ru_RU uk_UA
CAT+=	$c.UTF-8
.endfor

.for c in ${CAT}
${c}:	${c}.base 
	@echo "... $c";							\
	rm -f $c;							\
	sort -u ${.ALLSRC} |						\
	awk '{								\
		if ($$1 == 1) {						\
			print "\nMESSAGE NUMBER 1 IS NOT LEGAL";	\
			exit 1;						\
		}							\
		if (++nline > $$1) {					\
			print "DUPLICATE MESSAGE NUMBER " $$1;		\
			exit 1;						\
		}							\
		print $0;						\
	}' |								\
	sed -e '1s/^/$$set 1~$$quote "~/; 1y/~/\n/' |			\
	gencat $c /dev/stdin;						\
	chmod 444 $c;							\
	if grep DUPLICATE $c > /dev/null; then				\
		grep DUPLICATE $@;					\
	fi;								\
	if grep 'NOT LEGAL' $c > /dev/null; then			\
		grep 'NOT LEGAL' $@;					\
	fi
.endfor

CHK=	dutch.check english.check french.check german.check \
	polish.check ru_RU.KOI8-R.check spanish.check swedish.check \
	uk_UA.KOI8-U.check zh_CN.GB2312.check
check: ${CHK}
.for c in ${CAT}
${c}.check: ${c}.base
	@echo "... $c";							\
	f=${.ALLSRC:S;.base$;;};					\
	(echo "Unused message id's (this is okay):";			\
	awk '{								\
		while (++nline < $$1)					\
			printf "%03d\n", nline;				\
	}' < $$f.base;							\
	echo =========================;					\
	echo "MISSING ERROR MESSAGES (Please add!):";			\
	awk '{print $$1}' < $$f.base | sort -u > __ck1;			\
	awk '{print $$1}' < english.base | sort -u > __ck2;		\
	comm -13 __ck1 __ck2;						\
	echo =========================;					\
	echo "Extra error messages (just delete them):";		\
	comm -23 __ck1 __ck2;						\
	echo =========================;					\
	echo "MESSAGES WITH THE SAME MESSAGE ID's (FIX!):";		\
	for j in							\
	    `sed '/^$$/d' < $$f.base | LANG=C sort -u |			\
	    awk '{print $$1}' | uniq -d`; do				\
		egrep $$j $$f.base;					\
	done;								\
	echo =========================;					\
	echo "Duplicate messages, both id and message (this is okay):";	\
	sed '/^$$/d' < $$f.base | LANG=C sort | uniq -c |			\
	awk '$$1 != 1 { print $$0 }' | sort -n;				\
	echo =========================) > $c
.endfor

english.base: dump ${SCAN} #Makefile
	./dump ${SCAN} |\
	sed -e '/|/!d' \
	    -e 's/|/ "/' \
	    -e 's/^"//' |\
	sort -nu > $@


dump: dump.c
	${CC} -o dump ${.ALLSRC}

CLEANFILES+= dump ${CAT} english.base *.check __ck1 __ck2

CATALOGS= ${CAT}
NLLINKS= nl_NL
ENLINKS= en_AU en_CA en_GB en_NZ en_US
FRLINKS= fr_BE fr_CA fr_CH fr_FR
DELINKS= de_AT de_CH de_DE
ESLINKS= es_ES
SVLINKS= sv_SE
PLLINKS= pl_PL

FILES=	${CATALOGS}
FILESDIR= ${SHAREDIR}/vi/catalog
SYMLINKS=
.for l in ${NLLINKS}
SYMLINKS+= dutch ${FILESDIR}/$l.ISO8859-1
SYMLINKS+= dutch ${FILESDIR}/$l.ISO8859-15
SYMLINKS+= dutch.UTF-8 ${FILESDIR}/$l.UTF-8
.endfor
.for l in ${ENLINKS}
SYMLINKS+= english ${FILESDIR}/$l.ISO8859-1
SYMLINKS+= english ${FILESDIR}/$l.ISO8859-15
SYMLINKS+= english ${FILESDIR}/$l.US-ASCII
SYMLINKS+= english ${FILESDIR}/$l.UTF-8
.endfor
SYMLINKS+= english ${FILESDIR}/POSIX
SYMLINKS+= english ${FILESDIR}/C
.for l in ${FRLINKS}
SYMLINKS+= french ${FILESDIR}/$l.ISO8859-1
SYMLINKS+= french ${FILESDIR}/$l.ISO8859-15
SYMLINKS+= french.UTF-8 ${FILESDIR}/$l.UTF-8
.endfor
.for l in ${DELINKS}
SYMLINKS+= german ${FILESDIR}/$l.ISO8859-1
SYMLINKS+= german ${FILESDIR}/$l.ISO8859-15
SYMLINKS+= german.UTF-8 ${FILESDIR}/$l.UTF-8
.endfor
.for l in ${ESLINKS}
SYMLINKS+= spanish ${FILESDIR}/$l.ISO8859-1
SYMLINKS+= spanish ${FILESDIR}/$l.ISO8859-15
SYMLINKS+= spanish.UTF-8 ${FILESDIR}/$l.UTF-8
.endfor
.for l in ${SVLINKS}
SYMLINKS+= swedish ${FILESDIR}/$l.ISO8859-1
SYMLINKS+= swedish ${FILESDIR}/$l.ISO8859-15
SYMLINKS+= swedish.UTF-8 ${FILESDIR}/$l.UTF-8
.endfor
.for l in ${PLLINKS}
SYMLINKS+= polish ${FILESDIR}/$l.ISO8859-2
SYMLINKS+= polish.UTF-8 ${FILESDIR}/$l.UTF-8
.endfor
SYMLINKS+= zh_CN.GB2312 ${FILESDIR}/zh_CN.GB18030
SYMLINKS+= zh_CN.GB2312 ${FILESDIR}/zh_CN.GBK
SYMLINKS+= zh_CN.GB2312 ${FILESDIR}/zh_CN.eucCN

.include <bsd.prog.mk>
OpenPOWER on IntegriCloud