)]}'
{
  "commit": "98f3dda3a7364bd022d2cd7d06ef5e26453fa2a8",
  "tree": "86fae959260e3e4d90f90040f1179acf4a299722",
  "parents": [
    "7bb059d7c6fd5ab1c7873abe132c6d92c7744ab2"
  ],
  "author": {
    "name": "Jeff Bailey",
    "email": "jbailey@raspberryginger.com",
    "time": "Tue Sep 29 20:45:11 2026 +0100"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Sep 29 19:45:11 2026 +0000"
  },
  "message": "[libc] Add setgroups and initgroups entrypoints (#227272)\n\nAdd the setgroups and initgroups entrypoints from \u003cgrp.h\u003e (GNU\nextensions).\n\nA Linux syscall wrapper is added for setgroups, supporting both\nSYS_setgroups and SYS_setgroups32. The initgroups entrypoint initialises\nthe supplementary group access list for a specified user by reading the\ngroup database using a scoped database stream and setting the resulting\ngroups via setgroups.\n\nAssisted-by: Automated tooling, human reviewed.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "140f3dde5329c4f70724d4c378d1be8ac9db2ee2",
      "old_mode": 33188,
      "old_path": "libc/config/linux/aarch64/entrypoints.txt",
      "new_id": "9a59ec2b93dee67b6b2a38feecb1b2fb7388f9ba",
      "new_mode": 33188,
      "new_path": "libc/config/linux/aarch64/entrypoints.txt"
    },
    {
      "type": "modify",
      "old_id": "ed4267fa499ccb7d378588d63bc586c234b915e9",
      "old_mode": 33188,
      "old_path": "libc/config/linux/arm/entrypoints.txt",
      "new_id": "5f6f4ee9d558a989f648e3e68f9a437d508083c7",
      "new_mode": 33188,
      "new_path": "libc/config/linux/arm/entrypoints.txt"
    },
    {
      "type": "modify",
      "old_id": "9ad8e7f160064f73f28dddd923a4279c87accea2",
      "old_mode": 33188,
      "old_path": "libc/config/linux/i386/entrypoints.txt",
      "new_id": "b0562e4227344964299b7ab474e53ba3af80591c",
      "new_mode": 33188,
      "new_path": "libc/config/linux/i386/entrypoints.txt"
    },
    {
      "type": "modify",
      "old_id": "7e7e90ff0e9293878061067851b89b766542be4f",
      "old_mode": 33188,
      "old_path": "libc/config/linux/riscv/entrypoints.txt",
      "new_id": "eded9fe955ccfdfd58b7340b39eb14f6028f1b56",
      "new_mode": 33188,
      "new_path": "libc/config/linux/riscv/entrypoints.txt"
    },
    {
      "type": "modify",
      "old_id": "e3facf92e81decc2752f78c7d6c34ec26e13f509",
      "old_mode": 33188,
      "old_path": "libc/config/linux/x86_64/entrypoints.txt",
      "new_id": "11c1093419ce82f36b35740ea121fe48a1d479e2",
      "new_mode": 33188,
      "new_path": "libc/config/linux/x86_64/entrypoints.txt"
    },
    {
      "type": "modify",
      "old_id": "757c69d00653356bf80e59fa5b548f09b57a9be3",
      "old_mode": 33188,
      "old_path": "libc/include/grp.yaml",
      "new_id": "a4c9cbc78bc75df276722b7a6984f1d2099ee5f2",
      "new_mode": 33188,
      "new_path": "libc/include/grp.yaml"
    },
    {
      "type": "modify",
      "old_id": "1af11116862c75f677dbd9c82baad141ea1c61d8",
      "old_mode": 33188,
      "old_path": "libc/src/__support/OSUtil/linux/syscall_wrappers/CMakeLists.txt",
      "new_id": "2a24b6b28cab0f662fc7782e4731e10924b20964",
      "new_mode": 33188,
      "new_path": "libc/src/__support/OSUtil/linux/syscall_wrappers/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c316d64623fffcba0a1716d3e114f8d8f6342403",
      "new_mode": 33188,
      "new_path": "libc/src/__support/OSUtil/linux/syscall_wrappers/setgroups.h"
    },
    {
      "type": "modify",
      "old_id": "85ad797b00e24bebe480998f86e6c2f2ecd6b406",
      "old_mode": 33188,
      "old_path": "libc/src/grp/CMakeLists.txt",
      "new_id": "f7a2c81eea181c2736a0053331f82f7cfba95271",
      "new_mode": 33188,
      "new_path": "libc/src/grp/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "771e4c0c721a4021ae8feee2685c145875aa2441",
      "old_mode": 33188,
      "old_path": "libc/src/grp/grp_utils.cpp",
      "new_id": "31bcd9f601cb275bb52fb09ba23dc544d00291db",
      "new_mode": 33188,
      "new_path": "libc/src/grp/grp_utils.cpp"
    },
    {
      "type": "modify",
      "old_id": "70f85791ef79ee9acd4d5924aeb9e4c72184c42a",
      "old_mode": 33188,
      "old_path": "libc/src/grp/grp_utils.h",
      "new_id": "69ff3bb306dfb6a59b609c3829c274e91c18e4c6",
      "new_mode": 33188,
      "new_path": "libc/src/grp/grp_utils.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "83211b81497b7a9387bc9463ba8a53d47187653f",
      "new_mode": 33188,
      "new_path": "libc/src/grp/initgroups.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9a7f98f0171f91574b9b7e746aa2d0124248db63",
      "new_mode": 33188,
      "new_path": "libc/src/grp/initgroups.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "098cdc5ad6315fe855d79f10bac226d72ff1ebf7",
      "new_mode": 33188,
      "new_path": "libc/src/grp/setgroups.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0bcf502397a8130b3d446eb042dd35b7b9c86762",
      "new_mode": 33188,
      "new_path": "libc/src/grp/setgroups.h"
    },
    {
      "type": "modify",
      "old_id": "32c532c917a6d53b14396798e4212594243c27e3",
      "old_mode": 33188,
      "old_path": "libc/test/src/grp/CMakeLists.txt",
      "new_id": "e05586fd8bdc928d32a8485bf877a80b945838b7",
      "new_mode": 33188,
      "new_path": "libc/test/src/grp/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a024cab96fc0572e9a9bc9470e3bb91025b24803",
      "new_mode": 33188,
      "new_path": "libc/test/src/grp/initgroups_test.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8ec182072bda3c1101e32b9f76047e12655a2807",
      "new_mode": 33188,
      "new_path": "libc/test/src/grp/setgroups_test.cpp"
    }
  ]
}
