SPECS: man.spec - use case...esac and get rid of sed, basename - m...

sparky sparky at pld-linux.org
Tue Nov 7 05:10:07 CET 2006


Author: sparky                       Date: Tue Nov  7 04:10:07 2006 GMT
Module: SPECS                         Tag: HEAD
---- Log message:
- use case...esac and get rid of sed, basename - much faster and readable

---- Files affected:
SPECS:
   man.spec (1.133 -> 1.134) 

---- Diffs:

================================================================
Index: SPECS/man.spec
diff -u SPECS/man.spec:1.133 SPECS/man.spec:1.134
--- SPECS/man.spec:1.133	Tue Nov  7 04:19:20 2006
+++ SPECS/man.spec	Tue Nov  7 05:10:02 2006
@@ -235,30 +235,33 @@
 done
 
 for src in $(find msgs -type f -name 'mess.[a-z][a-z]'); do
-	lang=$(echo ${src} | sed -r 's;.*([a-z]{2})$;\1;')
-	if   [ ${lang} = ja ]; then charset=euc-jp
-	elif [ ${lang} = ko ]; then charset=euc-kr
-	elif [ ${lang} = ru ]; then charset=koi8-r
-	elif [ ${lang} = da ]; then charset=iso-8859-1
-	elif [ ${lang} = de ]; then charset=iso-8859-1
-	elif [ ${lang} = en ]; then charset=iso-8859-1
-	elif [ ${lang} = es ]; then charset=iso-8859-1
-	elif [ ${lang} = fi ]; then charset=iso-8859-1
-	elif [ ${lang} = fr ]; then charset=iso-8859-1
-	elif [ ${lang} = it ]; then charset=iso-8859-1
-	elif [ ${lang} = pt ]; then charset=iso-8859-1
-	elif [ ${lang} = nl ]; then charset=iso-8859-1
-	elif [ ${lang} = cs ]; then charset=iso-8859-2
-	elif [ ${lang} = hr ]; then charset=iso-8859-2
-	elif [ ${lang} = pl ]; then charset=iso-8859-2
-	elif [ ${lang} = ro ]; then charset=iso-8859-2
-	elif [ ${lang} = sl ]; then charset=iso-8859-2
-	elif [ ${lang} = bg ]; then charset=cp1251
-	elif [ ${lang} = el ]; then charset=iso-8859-7
-	else
-		echo === LANGUAGE ${lang}: MUST SPECIFY CHARSET/ENCODING
-		exit 1
-	fi
+	lang=${src##*.}
+	case ${lang} in
+		ja) charset=euc-jp ;;
+		ko) charset=euc-kr ;;
+		ru) charset=koi8-r ;;
+		da) charset=iso-8859-1 ;;
+		de) charset=iso-8859-1 ;;
+		en) charset=iso-8859-1 ;;
+		es) charset=iso-8859-1 ;;
+		fi) charset=iso-8859-1 ;;
+		fr) charset=iso-8859-1 ;;
+		it) charset=iso-8859-1 ;;
+		pt) charset=iso-8859-1 ;;
+		nl) charset=iso-8859-1 ;;
+		cs) charset=iso-8859-2 ;;
+		hr) charset=iso-8859-2 ;;
+		pl) charset=iso-8859-2 ;;
+		ro) charset=iso-8859-2 ;;
+		sl) charset=iso-8859-2 ;;
+		hu) charset=iso-8859-2 ;;
+		bg) charset=cp1251 ;;
+		el) charset=iso-8859-7 ;;
+		*)
+			echo "=== LANGUAGE ${lang}: MUST SPECIFY CHARSET/ENCODING"
+			exit 1
+		;;
+	esac
 	iconv -t utf-8 -f ${charset} -o ${src}.utf ${src} && mv ${src}.utf ${src}
 done
 
@@ -316,42 +319,48 @@
 %{__make} -C man2html install-scripts \
 	PREFIX="$RPM_BUILD_ROOT"
 
+dir=$RPM_BUILD_ROOT%{_mandir}
 for src in $(find man -type f -name '*.[1-9n]'); do
-   lang=$(echo ${src} | sed -r 's;.*/([a-z]{2})/.*;\1;')
-   page=$(basename ${src})
-   sect=$(echo ${page} | sed -r 's;.*([1-9n])$;man\1;')
-   dir=${RPM_BUILD_ROOT}%{_mandir}
-   if   [ ${lang} = ja ]; then charset=euc-jp
-   elif [ ${lang} = ko ]; then charset=euc-kr
-   elif [ ${lang} = da ]; then charset=iso-8859-1
-   elif [ ${lang} = de ]; then charset=iso-8859-1
-   elif [ ${lang} = en ]; then charset=iso-8859-1
-   elif [ ${lang} = es ]; then charset=iso-8859-1
-   elif [ ${lang} = fi ]; then charset=iso-8859-1
-   elif [ ${lang} = fr ]; then charset=iso-8859-1
-   elif [ ${lang} = it ]; then charset=iso-8859-1
-   elif [ ${lang} = pt ]; then charset=iso-8859-1
-   elif [ ${lang} = nl ]; then charset=iso-8859-1
-   elif [ ${lang} = cs ]; then charset=iso-8859-2
-   elif [ ${lang} = hr ]; then charset=iso-8859-2
-   elif [ ${lang} = pl ]; then charset=iso-8859-2
-   elif [ ${lang} = ro ]; then charset=iso-8859-2
-   elif [ ${lang} = sl ]; then charset=iso-8859-2
-   elif [ ${lang} = hu ]; then charset=iso-8859-2
-   elif [ ${lang} = bg ]; then charset=cp1251
-   elif [ ${lang} = el ]; then charset=iso-8859-7
-   else
-      echo === LANGUAGE ${lang}: MUST SPECIFY CHARSET/ENCODING
-      exit 1
-   fi
-   mkdir -p ${dir}/${lang}/${sect}
-   iconv -t utf-8 -f ${charset} -o ${dir}/${lang}/${sect}/${page} ${src}
-
-   # ensure POSIX/C locale only has ASCII subset and no latin-1
-   if [ ${lang} = en ]; then
-      mkdir -p ${dir}/${sect}
-      iconv -t ascii//translit -f ${charset} -o ${dir}/${sect}/${page} ${src}
-   fi
+	# src is like: man/nl/man.config.5 or man/pl/man1/man2html.1
+	noman=${src#*/}
+	lang=${noman%%%%/*}
+	page=${src##*/}
+	sect=man${src##*.}
+
+	case ${lang} in
+		ja) charset=euc-jp ;;
+		ko) charset=euc-kr ;;
+		ru) charset=koi8-r ;;
+		da) charset=iso-8859-1 ;;
+		de) charset=iso-8859-1 ;;
+		en) charset=iso-8859-1 ;;
+		es) charset=iso-8859-1 ;;
+		fi) charset=iso-8859-1 ;;
+		fr) charset=iso-8859-1 ;;
+		it) charset=iso-8859-1 ;;
+		pt) charset=iso-8859-1 ;;
+		nl) charset=iso-8859-1 ;;
+		cs) charset=iso-8859-2 ;;
+		hr) charset=iso-8859-2 ;;
+		pl) charset=iso-8859-2 ;;
+		ro) charset=iso-8859-2 ;;
+		sl) charset=iso-8859-2 ;;
+		hu) charset=iso-8859-2 ;;
+		bg) charset=cp1251 ;;
+		el) charset=iso-8859-7 ;;
+		*)
+			echo "=== LANGUAGE ${lang}: MUST SPECIFY CHARSET/ENCODING"
+			exit 1
+		;;
+	esac
+	mkdir -p ${dir}/${lang}/${sect}
+	iconv -t utf-8 -f ${charset} -o ${dir}/${lang}/${sect}/${page} ${src}
+
+	# ensure POSIX/C locale only has ASCII subset and no latin-1
+	if [ ${lang} = en ]; then
+		mkdir -p ${dir}/${sect}
+		iconv -t ascii//translit -f ${charset} -o ${dir}/${sect}/${page} ${src}
+	fi
 done
 
 rm -rf $RPM_BUILD_ROOT%{_mandir}/en
@@ -577,6 +586,9 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.134  2006/11/07 04:10:02  sparky
+- use case...esac and get rid of sed, basename - much faster and readable
+
 Revision 1.133  2006/11/07 03:19:20  sparky
 - man-sec.patch obsoleted long time ago
 
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/SPECS/man.spec?r1=1.133&r2=1.134&f=u



More information about the pld-cvs-commit mailing list