)]}'
{
  "commit": "c52f1eb09901e038ceb7012730e7cf3395d65a78",
  "tree": "5634683e15edcd4923b637ce4a1f82887ac0ebe1",
  "parents": [
    "1439705763fb0a0ebc0abeafd2f387f408a5fa6e"
  ],
  "author": {
    "name": "Pali Rohár",
    "email": "pali.rohar@gmail.com",
    "time": "Sun Dec 04 01:22:03 2022 +0100"
  },
  "committer": {
    "name": "LIU Hao",
    "email": "lh_mouse@126.com",
    "time": "Sun Dec 04 21:03:29 2022 +0800"
  },
  "message": "crt: Define atoll/strto[u]ll/strto[iu]max functions for all msvcrt builds\n\nFunctions _atoi64, _strtoi64 and _strtoui64 are available since the first\nrelease of msvcrt.dll as part of MS Visual C++ 4.2.\n\nDefine functions atoll, strtoll, strtoull, strtoimax and strtoumax as\naliases for msvcrt _atoi64, _strtoi64 and _strtoui64 functions directly in\ndef files. This would allow applications to directly link to msvcrt\nfunctions. Currently these functions are provided by mingw-w64 functions\nstrtoimax and strtoumax which are (statically) linked into executables.\n\nNote that all these functions are provided since msvcr120.dll which is part\nof MS Visual Studio 2013.\n\nFor compatibility with older msvcrt versions, functions _strtoi64 and\n_strtoui64 are provided by mingw-w64 as aliases to mingw-w64 strtoimax and\nstrtoumax implementations.\n\nAlso implement atoll() and _atoi64() via strtoll() for older msvcrt\nversions.\n\nThis change also removes static inline function atoll as now it is always\nprovided as alias at the link time for every msvcrt version.\n\nNote that mingw-w64 functions strtoimax(), strtoumax() and atoll() should\nnot be packed into libmingwex.a because libmingwex.a takes precedence over\nlibmsvcr*.a. To ensure that version from libmsvcr*.a is used, it is\nrequired to move mingw-w64 implementations from libmingwex.a to libmsvcr*.a\n(for msvcrt versions which do not provide these functions).\n\nTested with following simple program and verified that compiled binary\ncalls _atoi64 and _strtoi64 symbols from msvcrt.dll:\n\n  #include \u003cstdio.h\u003e\n  #include \u003cstdlib.h\u003e\n  #include \u003cinttypes.h\u003e\n  int main(int argc, char *argv[]) {\n    printf(\"%lld\\n\", atoll(argv[1]));\n    printf(\"%lld\\n\", strtoll(argv[1], NULL, 0));\n    printf(\"%lld\\n\", strtoimax(argv[1], NULL, 0));\n  }\n\nSigned-off-by: LIU Hao \u003clh_mouse@126.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "28d74c66a5819e3b09c17d51c6248f4ece1ea44e",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/Makefile.am",
      "new_id": "5aac06e5e5449f83b1538f143ddc23f762acba6f",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/Makefile.am"
    },
    {
      "type": "modify",
      "old_id": "942c4c4ebefe456bbd56e8ffe61c7baee8350a1c",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/lib-common/msvcrt.def.in",
      "new_id": "695a4d7f7cba9dffa8d4eca8c3e242ce3f2d73c1",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/lib-common/msvcrt.def.in"
    },
    {
      "type": "modify",
      "old_id": "8e8dfb46096b8519de163ab16e2f5e76f3d15fe2",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/lib32/msvcr100.def.in",
      "new_id": "676589296de48ec9e120fa5db1b7c57a39277800",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/lib32/msvcr100.def.in"
    },
    {
      "type": "modify",
      "old_id": "b864009b6613d0c48050a35676a6f53314b1bdb0",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/lib32/msvcr110.def.in",
      "new_id": "2f2e19b3ce4842f376268f3cfbc76ab363b099b7",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/lib32/msvcr110.def.in"
    },
    {
      "type": "modify",
      "old_id": "5ec73e781a3f3e03d43f2dfeba4f5e8fa0850b0b",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/lib32/msvcr70.def",
      "new_id": "43c469fc123ef33f81d4064ae847317ba957d882",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/lib32/msvcr70.def"
    },
    {
      "type": "modify",
      "old_id": "1db6d0b58bf5090d8e42a23f182c61e597fd1147",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/lib32/msvcr71.def",
      "new_id": "5ec0f2ab4ac178e988222a4ca249885ef11a1c8d",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/lib32/msvcr71.def"
    },
    {
      "type": "modify",
      "old_id": "bb1ec84442084f9deded99372d03d543ad99e0f7",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/lib32/msvcr80.def.in",
      "new_id": "42ded14affc26b9cc2549fb2251ee998559af653",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/lib32/msvcr80.def.in"
    },
    {
      "type": "modify",
      "old_id": "62789337b7adc2c8e84d633b76b909b28fcdfd6b",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/lib32/msvcr90.def.in",
      "new_id": "f6de7645e35f9175835be2bdb367f2011a814880",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/lib32/msvcr90.def.in"
    },
    {
      "type": "modify",
      "old_id": "1175bfec1b9c13e6f1cf13971e29e743df00bf90",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/lib32/msvcr90d.def.in",
      "new_id": "52c33dcf9751e680f793b0f9ef9638ce2a267fb8",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/lib32/msvcr90d.def.in"
    },
    {
      "type": "modify",
      "old_id": "aab982691303a0da0babb0895c583e149bb31497",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/lib64/msvcr100.def.in",
      "new_id": "1530a719f019d8616abca1df5a9c2a3270bab251",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/lib64/msvcr100.def.in"
    },
    {
      "type": "modify",
      "old_id": "60304f9fd0efd56d80958d587fba4d322ebdb01a",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/lib64/msvcr110.def.in",
      "new_id": "b5b9e3ec5ced6e7dbce209d4586c2c8918a43b56",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/lib64/msvcr110.def.in"
    },
    {
      "type": "modify",
      "old_id": "045052ec8a93c57a5982dd24024b19e3ede72e15",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/lib64/msvcr80.def.in",
      "new_id": "171f5850f1ff541e89992a661b5e81d5be36d196",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/lib64/msvcr80.def.in"
    },
    {
      "type": "modify",
      "old_id": "c8cf9b220262884952c11ff29839472e7ccd9995",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/lib64/msvcr90.def.in",
      "new_id": "876a672ea2344c0313f609415e2e607112144f84",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/lib64/msvcr90.def.in"
    },
    {
      "type": "modify",
      "old_id": "2acdc3fcf7ee0d305c7b4e81e846d4d41594bf1c",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/lib64/msvcr90d.def.in",
      "new_id": "26c5888e681fcd9b15e795b4ce0517ccabbcecf6",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/lib64/msvcr90d.def.in"
    },
    {
      "type": "modify",
      "old_id": "9e75f8a2750307fc4cb6dbe537f5bbcbe030c6e7",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/misc/strtoimax.c",
      "new_id": "7f09869cb0b1ae350cd8468d8286ece5ae0806c0",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/misc/strtoimax.c"
    },
    {
      "type": "modify",
      "old_id": "2c24db14d8296c711161c8a9ab146ecd30a42279",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/misc/strtoumax.c",
      "new_id": "d47a7c90d8f1f0c810777ce115af20459373e0e6",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/misc/strtoumax.c"
    },
    {
      "type": "modify",
      "old_id": "39df0139f3d3504afdb0fcb1046d88ba820f0a4b",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/stdio/atoll.c",
      "new_id": "278c01cf92577f53120dc1ae515f964343147bfc",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/stdio/atoll.c"
    },
    {
      "type": "modify",
      "old_id": "1d864bbbdc49117097a6a04528b06527e5343f31",
      "old_mode": 33188,
      "old_path": "mingw-w64-headers/crt/stdlib.h",
      "new_id": "128f3bf97f5282e81762cc6836a4306aa9d61378",
      "new_mode": 33188,
      "new_path": "mingw-w64-headers/crt/stdlib.h"
    }
  ]
}
