1#!/bin/sh
2#
3# $OpenBSD: xargs-L.sh,v 1.4 2023/12/22 17:12:13 millert Exp $
4#
5# written by Ingo Schwarze <schwarze@openbsd.org> 2010
6# and placed in the public domain
7
8test_xargs()
9{
10	printf 'Testing %13.13s with options "%s"\n' "\"$1\"" "$2"
11        expect=`printf "$3"`
12	result=`printf "$1" | $XARGS $2 ./showargs`
13	if [ "$result" != "$expect" ]; then
14		printf 'Expected "%s", but got "%s"\n' "$expect" "$result"
15		exit 1
16	fi
17}
18
19XARGS=${1:-/usr/bin/xargs}
20
21test_xargs 'a b'         ''        'a|b|'
22test_xargs 'a  b'        ''        'a|b|'
23test_xargs 'a\nb'        ''        'a|b|'
24test_xargs 'a\n\nb'      ''        'a|b|'
25test_xargs 'a \nb'       ''        'a|b|'
26test_xargs 'a\n b'       ''        'a|b|'
27test_xargs 'a \n b'      ''        'a|b|'
28test_xargs 'a\n \nb'     ''        'a|b|'
29test_xargs 'a \n\nb'     ''        'a|b|'
30
31test_xargs 'a\\ b'       ''        'a b|'
32test_xargs 'a\\ \nb'     ''        'a |b|'
33test_xargs 'a\n\\ b'     ''        'a| b|'
34
35test_xargs 'a\\\nb'      ''        'a\nb|'
36test_xargs 'a\n\\\nb'    ''        'a|\nb|'
37test_xargs 'a \\\nb'     ''        'a|\nb|'
38test_xargs 'a\\\n b'     ''        'a\n|b|'
39test_xargs 'a \\\n b'    ''        'a|\n|b|'
40
41test_xargs 'a b'         '-L 1'    'a|b|'
42test_xargs 'a  b'        '-L 1'    'a|b|'
43test_xargs 'a\nb'        '-L 1'    'a|\nb|'
44test_xargs 'a\n\nb'      '-L 1'    'a|\nb|'
45test_xargs 'a \nb'       '-L 1'    'a|b|'
46test_xargs 'a\n b'       '-L 1'    'a|\nb|'
47test_xargs 'a \n b'      '-L 1'    'a|b|'
48test_xargs 'a\n \nb'     '-L 1'    'a|\nb|'
49test_xargs 'a \n\nb'     '-L 1'    'a|b|'
50
51test_xargs 'a\\ b'       '-L 1'    'a b|'
52test_xargs 'a\\ \nb'     '-L 1'    'a |\nb|'
53test_xargs 'a\n\\ b'     '-L 1'    'a|\n b|'
54
55test_xargs 'a\\\nb'      '-L 1'    'a\nb|'
56test_xargs 'a\n\\\nb'    '-L 1'    'a|\n\nb|'
57test_xargs 'a \\\nb'     '-L 1'    'a|\nb|'
58test_xargs 'a\\\n b'     '-L 1'    'a\n|b|'
59test_xargs 'a \\\n b'    '-L 1'    'a|\n|b|'
60
61test_xargs 'a b'         '-0'      'a b|'
62test_xargs 'a  b'        '-0'      'a  b|'
63test_xargs 'a\nb'        '-0'      'a\nb|'
64test_xargs 'a\n\nb'      '-0'      'a\n\nb|'
65test_xargs 'a \nb'       '-0'      'a \nb|'
66test_xargs 'a\n b'       '-0'      'a\n b|'
67test_xargs 'a \n b'      '-0'      'a \n b|'
68test_xargs 'a\n \nb'     '-0'      'a\n \nb|'
69test_xargs 'a \n\nb'     '-0'      'a \n\nb|'
70
71test_xargs 'a\\ b'       '-0'      'a\\ b|'
72test_xargs 'a\\ \nb'     '-0'      'a\\ \nb|'
73test_xargs 'a\n\\ b'     '-0'      'a\n\\ b|'
74
75test_xargs 'a\\\nb'      '-0'      'a\\\nb|'
76test_xargs 'a\n\\\nb'    '-0'      'a\n\\\nb|'
77test_xargs 'a \\\nb'     '-0'      'a \\\nb|'
78test_xargs 'a\\\n b'     '-0'      'a\\\n b|'
79test_xargs 'a \\\n b'    '-0'      'a \\\n b|'
80
81test_xargs 'a b\0c'      '-0 -L 1' 'a b|\nc|'
82test_xargs 'a  b\0c'     '-0 -L 1' 'a  b|\nc|'
83test_xargs 'a\nb\0c'     '-0 -L 1' 'a\nb|\nc|'
84test_xargs 'a\n\nb\0c'   '-0 -L 1' 'a\n\nb|\nc|'
85test_xargs 'a \nb\0c'    '-0 -L 1' 'a \nb|\nc|'
86test_xargs 'a\n b\0c'    '-0 -L 1' 'a\n b|\nc|'
87test_xargs 'a \n b\0c'   '-0 -L 1' 'a \n b|\nc|'
88test_xargs 'a\n \nb\0c'  '-0 -L 1' 'a\n \nb|\nc|'
89test_xargs 'a \n\nb\0c'  '-0 -L 1' 'a \n\nb|\nc|'
90
91test_xargs 'a\\ b\0c'    '-0 -L 1' 'a\\ b|\nc|'
92test_xargs 'a\\ \nb\0c'  '-0 -L 1' 'a\\ \nb|\nc|'
93test_xargs 'a\n\\ b\0c'  '-0 -L 1' 'a\n\\ b|\nc|'
94
95test_xargs 'a\\\nb\0c'   '-0 -L 1' 'a\\\nb|\nc|'
96test_xargs 'a\n\\\nb\0c' '-0 -L 1' 'a\n\\\nb|\nc|'
97test_xargs 'a \\\nb\0c'  '-0 -L 1' 'a \\\nb|\nc|'
98test_xargs 'a\\\n b\0c'  '-0 -L 1' 'a\\\n b|\nc|'
99test_xargs 'a \\\n b\0c' '-0 -L 1' 'a \\\n b|\nc|'
100
101test_xargs 'a'           '-0 -L 1' 'a|\n'
102test_xargs 'a\0'         '-0 -L 1' 'a|\n'
103test_xargs 'a\0\0'       '-0 -L 1' 'a|\n|\n'
104test_xargs 'a\0\0b'      '-0 -L 2' 'a||\nb|'
105test_xargs 'a\0\0b'      '-0 -L 1' 'a|\n|\nb|'
106test_xargs 'a\0\0b'      '-0 -L 3' 'a||b|'
107test_xargs 'a\0\0b'      '-0 -L 9' 'a||b|'
108