resetting manifest requested domain to floor
[platform/upstream/db4.git] / os_brew / os_truncate.c
1 /*-
2  * See the file LICENSE for redistribution information.
3  *
4  * Copyright (c) 2004-2009 Oracle.  All rights reserved.
5  *
6  * $Id$
7  */
8
9 #include "db_config.h"
10
11 #include "db_int.h"
12
13 /*
14  * __os_truncate --
15  *      Truncate the file.
16  */
17 int
18 __os_truncate(env, fhp, pgno, pgsize)
19         ENV *env;
20         DB_FH *fhp;
21         db_pgno_t pgno;
22         u_int32_t pgsize;
23 {
24         IFileMgr *pIFileMgr;
25         off_t offset;
26         int ret;
27
28         FILE_MANAGER_CREATE(env, pIFileMgr, ret);
29         if (ret != 0)
30                 return (ret);
31
32         /*
33          * Truncate a file so that "pgno" is discarded from the end of the
34          * file.
35          */
36         offset = (off_t)pgsize * pgno;
37
38         LAST_PANIC_CHECK_BEFORE_IO(env);
39
40         if (IFILE_Truncate(fhp->ifp, offset) == SUCCESS)
41                 ret = 0;
42         else
43                 FILE_MANAGER_ERR(env, pIFileMgr, NULL, "IFILE_Truncate", ret);
44
45         IFILEMGR_Release(pIFileMgr);
46
47         return (ret);
48 }