• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3  * Copyright (c) 2000 Silicon Graphics, Inc.  All Rights Reserved.
4  * Copyright (c) 2017 Fujitsu Ltd.
5  */
6 
7 #include <stdio.h>
8 #include <string.h>
9 #include <errno.h>
10 #include "tst_test.h"
11 
12 static int fd;
13 
verify_write(void)14 static void verify_write(void)
15 {
16 	int i, badcount = 0;
17 	char buf[BUFSIZ];
18 
19 	memset(buf, 'w', BUFSIZ);
20 
21 	SAFE_LSEEK(fd, 0, SEEK_SET);
22 
23 	for (i = BUFSIZ; i > 0; i--) {
24 		TEST(write(fd, buf, i));
25 		if (TST_RET == -1) {
26 			tst_res(TFAIL | TTERRNO, "write failed");
27 			return;
28 		}
29 
30 		if (TST_RET != i) {
31 			badcount++;
32 			tst_res(TINFO, "write() returned %ld, expected %d",
33 				TST_RET, i);
34 		}
35 	}
36 
37 	if (badcount != 0)
38 		tst_res(TFAIL, "write() failed to return proper count");
39 	else
40 		tst_res(TPASS, "write() passed");
41 }
42 
setup(void)43 static void setup(void)
44 {
45 	fd = SAFE_OPEN("test_file", O_RDWR | O_CREAT, 0700);
46 }
47 
cleanup(void)48 static void cleanup(void)
49 {
50 	if (fd > 0)
51 		SAFE_CLOSE(fd);
52 }
53 
54 static struct tst_test test = {
55 	.setup = setup,
56 	.cleanup = cleanup,
57 	.test_all = verify_write,
58 	.needs_tmpdir = 1,
59 };
60