1#!/bin/sh
2# ensure that dd's iflag=direct and oflag=direct work
3
4# Copyright (C) 2009-2023 Free Software Foundation, Inc.
5
6# This program is free software: you can redistribute it and/or modify
7# it under the terms of the GNU General Public License as published by
8# the Free Software Foundation, either version 3 of the License, or
9# (at your option) any later version.
10
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14# GNU General Public License for more details.
15
16# You should have received a copy of the GNU General Public License
17# along with this program.  If not, see <https://www.gnu.org/licenses/>.
18
19. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
20print_ver_ dd
21
22truncate -s 8192 in || framework_failure_
23dd if=in oflag=direct of=out 2> /dev/null \
24  || skip_ '512 byte aligned O_DIRECT is not supported on this (file) system'
25
26truncate -s 511 short || framework_failure_
27truncate -s 8191 m1 || framework_failure_
28truncate -s 8193 p1 || framework_failure_
29
30for i in short m1 p1; do
31  rm -f out
32  dd if=$i iflag=direct oflag=direct of=out || fail=1
33done
34
35Exit $fail
36