git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 1/2] t: add a test helper to truncate files

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Oct 12, 2023, 17:49 UTC
Message-ID
<CAPig+cSUvyCS-NOYOoJAmg7LGyU5Dqky5HyS-QTNW1QoHj-0bA@mail.gmail.com>
In-Reply-To
<20231012160930.330618-2-sandals@crustytoothpaste.net>

On Thu, Oct 12, 2023 at 12:10 PM brian m. carlson <sandals@crustytoothpaste.net> wrote:

Show 25 quoted lines
> In a future commit, we're going to work with some large files which will
> be at least 4 GiB in size.  To take advantage of the sparseness
> functionality on most Unix systems and avoid running the system out of
> disk, it would be convenient to use truncate(2) to simply create a
> sparse file of sufficient size.
>
> However, the GNU truncate(1) utility isn't portable, so let's write a
> tiny test helper that does the work for us.
>
> Signed-off-by: brian m. carlson <bk2204@github.com>
> ---
> diff --git a/t/helper/test-truncate.c b/t/helper/test-truncate.c
> @@ -0,0 +1,27 @@
> +int cmd__truncate(int argc, const char **argv)
> +{
> +       char *p = NULL;
> +       uintmax_t sz = 0;
> +       int fd = -1;
> +
> +       if (argc != 3)
> +               die("expected filename and size");
> +
> +       sz = strtoumax(argv[2], &p, 0);
> +       if (*p)
> +               die("invalid size");
Do you want to check 'errno' here, as well (probably before the '*p' check)?
Or is that being too defensive for a 'test-tool' command?
Show 8 quoted lines
> +       fd = open(argv[1], O_WRONLY | O_CREAT, 0600);
> +       if (fd < 0)
> +               die_errno("failed to open file %s", argv[1]);
> +
> +       if (ftruncate(fd, (off_t) sz) < 0)
> +               die_errno("failed to truncate file");
> +       return 0;
> +}
Previous: brian m. carlsonNext: brian m. carlson
Message 3 of 16 in “Prevent re-reading 4 GiB files on every status”
  1. 0/2 Prevent re-reading 4 GiB files on every statusbrian m. carlson, Oct 12, 2023
  2. 1/2 t: add a test helper to truncate filesbrian m. carlson, Oct 12, 2023
  3. Eric SunshineOct 12, 2023
  4. brian m. carlsonOct 13, 2023
  5. Junio C HamanoOct 12, 2023
  6. brian m. carlsonOct 13, 2023
  7. Junio C HamanoOct 13, 2023
  8. Jeff KingOct 16, 2023
  9. 2/2 Prevent git from rehashing 4GiB filesbrian m. carlson, Oct 12, 2023
  10. Junio C HamanoOct 12, 2023
  11. brian m. carlsonOct 12, 2023
  12. Junio C HamanoOct 12, 2023
  13. Jeff KingOct 17, 2023
  14. Jason HattonOct 17, 2023
  15. Junio C HamanoOct 17, 2023
  16. brian m. carlsonOct 18, 2023

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.