]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/blob - io/truncate.c
a74b6131ede3f38cc9f1b8bc9a23ebe527f56aba
[thirdparty/xfsprogs-dev.git] / io / truncate.c
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3 * Copyright (c) 2003-2005 Silicon Graphics, Inc.
4 * All Rights Reserved.
5 */
6
7 #include "command.h"
8 #include "input.h"
9 #include "init.h"
10 #include "io.h"
11
12 static cmdinfo_t truncate_cmd;
13
14 static int
15 truncate_f(
16 int argc,
17 char **argv)
18 {
19 off_t offset;
20 size_t blocksize, sectsize;
21
22 init_cvtnum(&blocksize, &sectsize);
23 offset = cvtnum(blocksize, sectsize, argv[1]);
24 if (offset < 0) {
25 printf(_("non-numeric truncate argument -- %s\n"), argv[1]);
26 exitcode = 1;
27 return 0;
28 }
29
30 if (ftruncate(file->fd, offset) < 0) {
31 perror("ftruncate");
32 exitcode = 1;
33 return 0;
34 }
35 return 0;
36 }
37
38 void
39 truncate_init(void)
40 {
41 truncate_cmd.name = "truncate";
42 truncate_cmd.altname = "t";
43 truncate_cmd.cfunc = truncate_f;
44 truncate_cmd.argmin = 1;
45 truncate_cmd.argmax = 1;
46 truncate_cmd.flags = CMD_NOMAP_OK | CMD_FOREIGN_OK;
47 truncate_cmd.args = _("off");
48 truncate_cmd.oneline =
49 _("truncates the current file at the given offset");
50
51 add_command(&truncate_cmd);
52 }