add a testsuite, align CR handling with Java™ code
[shellsnippets/shellsnippets.git] / mksh / mergelines
1 #!/bin/mksh
2 # $MirOS: src/share/misc/licence.template,v 1.28 2008/11/14 15:33:44 tg Rel $
3 #-
4 # Copyright © 2016
5 #       mirabilos <m@mirbsd.org>
6 #
7 # Provided that these terms and disclaimer and all copyright notices
8 # are retained or reproduced in an accompanying document, permission
9 # is granted to deal in this work without restriction, including un‐
10 # limited rights to use, publicly perform, distribute, sell, modify,
11 # merge, give away, or sublicence.
12 #
13 # This work is provided “AS IS” and WITHOUT WARRANTY of any kind, to
14 # the utmost extent permitted by applicable law, neither express nor
15 # implied; without malicious intent or gross negligence. In no event
16 # may a licensor, author or contributor be held liable for indirect,
17 # direct, other damage, loss, or other issues arising in any way out
18 # of dealing in the work, even if advised of the possibility of such
19 # damage or existence of a defect, except proven that it results out
20 # of said person’s immediate fault when using the work as intended.
21
22 [[ -n $1 ]] && IFS=$1
23
24 l1=
25 l2=
26 lp=0
27 while read -r n1 n2; do
28         if [[ $n1 = $l1 ]]; then
29                 l2+=$IFS$n2
30                 lp=1
31                 continue
32         fi
33         if (( lp )); then
34                 print -r -- "$l1$IFS$l2"
35                 lp=0
36         fi
37         l1=$n1
38         l2=$n2
39 done
40 (( lp )) && print -r -- "$l1$IFS$l2"