summaryrefslogtreecommitdiff
path: root/tests/dd/ascii.sh
blob: da6e12814951db01786ab89b934b0da22f09c5be (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
#!/bin/sh
# test conv=ascii

# Copyright (C) 2014 Free Software Foundation, Inc.

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
print_ver_ dd

{
  # Two lines, EBCDIC " A A" and " A  ", followed by all the bytes in order.
  printf '\100\301\100\301\100\301\100\100' &&
  printf $(printf "\\%03o" $(seq 0 255 ));
} >in || framework_failure_

{
  # The converted lines, with trailing spaces removed.
  printf ' A A\n A\n' &&
  printf '\000\001\002\003\n\234\011\206\177\n' &&
  printf '\227\215\216\013\n\014\015\016\017\n' &&
  printf '\020\021\022\023\n\235\205\010\207\n' &&
  printf '\030\031\222\217\n\034\035\036\037\n' &&
  printf '\200\201\202\203\n\204\012\027\033\n' &&
  printf '\210\211\212\213\n\214\005\006\007\n' &&
  printf '\220\221\026\223\n\224\225\226\004\n' &&
  printf '\230\231\232\233\n\024\025\236\032\n' &&
  printf '\040\240\241\242\n\243\244\245\246\n' &&
  printf '\247\250\325\056\n\074\050\053\174\n' &&
  printf '\046\251\252\253\n\254\255\256\257\n' &&
  printf '\260\261\041\044\n\052\051\073\176\n' &&
  printf '\055\057\262\263\n\264\265\266\267\n' &&
  printf '\270\271\313\054\n\045\137\076\077\n' &&
  printf '\272\273\274\275\n\276\277\300\301\n' &&
  printf '\302\140\072\043\n\100\047\075\042\n' &&
  printf '\303\141\142\143\n\144\145\146\147\n' &&
  printf '\150\151\304\305\n\306\307\310\311\n' &&
  printf '\312\152\153\154\n\155\156\157\160\n' &&
  printf '\161\162\136\314\n\315\316\317\320\n' &&
  printf '\321\345\163\164\n\165\166\167\170\n' &&
  printf '\171\172\322\323\n\324\133\326\327\n' &&
  printf '\330\331\332\333\n\334\335\336\337\n' &&
  printf '\340\341\342\343\n\344\135\346\347\n' &&
  printf '\173\101\102\103\n\104\105\106\107\n' &&
  printf '\110\111\350\351\n\352\353\354\355\n' &&
  printf '\175\112\113\114\n\115\116\117\120\n' &&
  printf '\121\122\356\357\n\360\361\362\363\n' &&
  printf '\134\237\123\124\n\125\126\127\130\n' &&
  printf '\131\132\364\365\n\366\367\370\371\n' &&
  printf '\060\061\062\063\n\064\065\066\067\n' &&
  printf '\070\071\372\373\n\374\375\376\377\n';
} >exp || framework_failure_

dd if=in of=out conv=ascii cbs=4 || fail=1

compare exp out \
  || { od -v -to1 exp > exp2 || framework_failure_;
       od -v -to1 out > out2 || framework_failure_;
       compare exp2 out2;
       fail=1; }

Exit $fail