- Also examine the resized file to check it has the new size.
[AROS.git] / test / setfilesize.c
blob1bde7358091362f742685ab8e00fbf66d7ff7052
1 /*
2 Copyright © 1995-2015, The AROS Development Team. All rights reserved.
3 $Id$
4 */
6 #include <exec/types.h>
8 #include <proto/exec.h>
9 #include <proto/dos.h>
11 #include <stdio.h>
12 #include <stdlib.h>
14 int main(int argc, char **argv)
16 BPTR fh = BNULL;
17 LONG result = RETURN_OK, error = 0, size;
18 struct FileInfoBlock *fib;
20 fib = AllocDosObject(DOS_FIB, NULL);
21 if (fib == NULL)
23 error = IoErr();
24 result = RETURN_FAIL;
27 if (error == 0 && argc != 3)
29 printf("Usage: %s filename newsize\n", argv[0]);
30 error = ERROR_REQUIRED_ARG_MISSING;
31 result = RETURN_WARN;
34 if (error == 0)
36 fh = Open(argv[1], MODE_READWRITE);
37 if (fh == BNULL)
39 error = IoErr();
40 result = RETURN_ERROR;
44 if (error == 0)
46 size = atol(argv[2]);
47 if (SetFileSize(fh, atol(argv[2]), OFFSET_BEGINNING) != size)
49 error = IoErr();
50 result = RETURN_ERROR;
54 if (error == 0)
56 if (!ExamineFH(fh, fib))
58 error = IoErr();
59 result = RETURN_ERROR;
63 if (error == 0)
65 Printf("New size is %ld bytes\n", fib->fib_Size);
66 if (fib->fib_Size != size)
68 if (fib->fib_Size > size)
69 error = ERROR_OBJECT_TOO_LARGE;
70 else
71 error = ERROR_UNKNOWN;
72 result = RETURN_ERROR;
76 if (fib != NULL)
77 FreeDosObject(DOS_FIB, fib);
78 if (fh != BNULL)
79 Close(fh);
81 PrintFault(error, "SetFileSize");
82 return result;