)]}'
{
  "commit": "86508983eca6b615f198b3bf52db67b7725540af",
  "tree": "5cb596f8f7d19fb146b95cd9c97d5ab8890f1f00",
  "parents": [
    "ec8fc480edc61e2af2dcba216d7543895e8b91c1"
  ],
  "author": {
    "name": "Pali Rohár",
    "email": "pali.rohar@gmail.com",
    "time": "Sun Apr 13 18:34:38 2025 +0200"
  },
  "committer": {
    "name": "Martin Storsjö",
    "email": "martin@martin.st",
    "time": "Mon May 05 23:43:59 2025 +0300"
  },
  "message": "crt: Fix ABI of mingw-w64 emulation of POSIX stat* functions\n\nPOSIX struct stat has 4 variants in mingw-w64 based on the macros\n_FILE_OFFSET_BITS and _USE_32BIT_TIME_T settings. st_size can be either\n32-bit or 64-bit, and st_atime/st_mtime/st_ctime can also be 32-bit or\n64-bit.\n\nSo for each ABI of struct stat there has to be separate POSIX stat function\nwhich correctly fills either 32-bit or 64-bit st_* values.\n\nTo follow existing msvcrt/UCRT symbol naming convention, provide 4 symbols\nfor stat function: stat32, stat32i64, stat64i32 and stat64. And also\nprovide stat symbol as alias to stat32 on 32-bit systems or to stat64i32 on\n64-bit systems. Same as existing msvcrt/UCRT ABI for _stat function.\n\nNote that stat64 function is part of the Large File Specification but it\ndoes not describe if the st_atime/st_mtime/st_ctime should be also 64-bit\nor only 32-bit. msvcrt/UCRT ABI expects them to be also 64-bit.\n\nDo same for wstat symbol, wide UTF-16 variant of stat.\n\nAt the same time remove old and broken stat and wstat symbols, they are\nreplaced by the new alias.\n\nExtract existing and duplicated function _mingw_no_trailing_slash into new\nfile and rename it to __mingw_fix_stat_path which better describe its\npurpose. Do same for wide variant __mingw_fix_wstat_path. These two\nfunctions have some known bugs and will be fixed later.\n\nThis change is not fixing bugs in these functions, it is only fixing the\nAPI/ABI incompatibility which comes from the _FILE_OFFSET_BITS and\n_USE_32BIT_TIME_T settings.\n\nSigned-off-by: Martin Storsjö \u003cmartin@martin.st\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8a41cbbd100a6a6bba3a166b6f89b93c80f7866c",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/Makefile.am",
      "new_id": "a0492743901ebb27650070c00f394a5cfde40a0d",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/Makefile.am"
    },
    {
      "type": "modify",
      "old_id": "8875354301834e56999f43b96cb53c8a3a681365",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/def-include/crt-aliases.def.in",
      "new_id": "6335237900f1d4d6fcc5b1dec763e2f83f1ad2d0",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/def-include/crt-aliases.def.in"
    },
    {
      "type": "modify",
      "old_id": "684baf712dcf4999cd3d7e7ba8f402b91c1fa80a",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/lib-common/api-ms-win-crt-filesystem-l1-1-0.def.in",
      "new_id": "a0665a3a3d3112ae808b50bf7d9ef57d039df6bc",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/lib-common/api-ms-win-crt-filesystem-l1-1-0.def.in"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "564658473f02a6287b2b70287fc315d6dc6cb392",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/stdio/__mingw_fix_stat_path.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "838e4aa30d39c44a959abb701f1f19c461a930af",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/stdio/__mingw_fix_wstat_path.c"
    },
    {
      "type": "delete",
      "old_id": "cc39a90af4eae9952c664fe7292bff4aea210d86",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/stdio/_stat.c",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "fb6b1c69ec427e95fbdbf8d43fb3b93576b06a08",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/stdio/_wstat.c",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9623c80f5b3529a9996e6621a1eefe59c7704128",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/stdio/stat32.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3291ef6b8a01a5b57d93cef9bc378e1e7d518941",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/stdio/stat32i64.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0f1c73fe094617875dda26472c1178f59491b166",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/stdio/stat64.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2799ed42e36835bb8ec5d0ba67ccf7bf78093661",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/stdio/stat64i32.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0123148d56b68a891fcc774909be87a48780af37",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/stdio/wstat32.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ea190f5737e41eea289c9009d2a333f82d3626c7",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/stdio/wstat32i64.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "96b0475cf4aed366fd74c7ce2fd4bc918a270a76",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/stdio/wstat64.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1ad9b53b45f339e078316ac72a11316b6a688a6a",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/stdio/wstat64i32.c"
    }
  ]
}
