1587e0d2c4486fd4b75957db78b70e11394c8fbb
[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 #include <stdlib.h>
25 #include <string.h>
26
27 int
28 main(argc, argv)
29 int     argc;
30 char    **argv;
31
32 {
33 char    ch, *filename="testfile";
34 int c;
35 int fd, err;
36
37 if(argc != 3)
38         {        printf("Usage: cxfs_ftrunc -f filename\n");
39                 exit(1);
40         }
41
42 while((c=getopt(argc,argv,"f:"))!=EOF) {
43                 ch = (char)c;
44                 switch (c) {
45                 case 'f':
46                         filename = optarg;
47                         break;
48                 default:
49                         fprintf(stderr,"Usage: ftrunc -f filename\n");
50                         exit(1);
51                 }
52         }
53
54
55
56
57           /* open RDWR but with read-only perms */
58           fd = open(filename, O_CREAT|O_RDWR, 0400);
59           if (fd < 0) {
60                 perror("open failed");
61                 return 1;
62                 }
63
64           err = ftruncate(fd, 1000);
65           if (err < 0) {
66               perror("ftruncate failed");
67               return 1;
68            }
69
70           err = unlink(filename);
71           if (err < 0) {
72                 perror("unlink failed");
73                 return 1;
74           }     
75
76           return 0;
77
78 }