Merge relevant CXFSQA tests into XFSQA
[xfstests-dev.git] / src / ftrunc.c
1 /*
2  * Copyright (c) 2000-2003 Silicon Graphics, Inc.
3  * All Rights Reserved.
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License as
7  * published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope that it would be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write the Free Software Foundation,
16  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17  */
18
19 #include <unistd.h>
20 #include <sys/types.h>
21 #include <sys/stat.h>
22 #include <fcntl.h>
23 #include <stdio.h>
24
25 int
26 main(argc, argv)
27 int     argc;
28 char    **argv;
29
30 {
31 char    ch, *filename="testfile";
32 int c;
33 int fd, err;
34
35 if(argc != 3)
36         {        printf("Usage: cxfs_ftrunc -f filename\n");
37                 exit(1);
38         }
39
40 while((c=getopt(argc,argv,"f:"))!=EOF) {
41                 ch = (char)c;
42                 switch (c) {
43                 case 'f':
44                         filename = optarg;
45                         break;
46                 default:
47                         fprintf(stderr,"Usage: ftrunc -f filename\n");
48                         exit(1);
49                 }
50         }
51
52
53
54
55           /* open RDWR but with read-only perms */
56           fd = open(filename, O_CREAT|O_RDWR, 0400);
57           if (fd < 0) {
58                 perror("open failed");
59                 return 1;
60                 }
61
62           err = ftruncate(fd, 1000);
63           if (err < 0) {
64               perror("ftruncate failed");
65               return 1;
66            }
67
68           err = unlink(filename);
69           if (err < 0) {
70                 perror("unlink failed");
71                 return 1;
72           }     
73
74           return 0;
75
76 }