)]}'
{
  "commit": "48d4a0437ecc25d7c23df16fa1eda0d8f4ae5156",
  "tree": "c457f37c2e9bea3b26798bf6b9d66241f4a1587d",
  "parents": [
    "484ef6184ec0da775deb9748c8a29f262b3f0eb7"
  ],
  "author": {
    "name": "Nico Huber",
    "email": "nico.h@gmx.de",
    "time": "Sun Mar 08 16:07:28 2026 +0100"
  },
  "committer": {
    "name": "Nico Huber",
    "email": "nico.h@gmx.de",
    "time": "Sat Jul 18 10:21:45 2026 +0000"
  },
  "message": "libflashprog: Start a new API for chip enumeration\n\nFor now, allow to query all chips, their vendor, name and size.\n\nThere\u0027s a tricky optimization coming up: We don\u0027t want to allocate\nadditional memory when enumerating the chip database. But, we also\nwant to use the same API interface to access information about de-\ntected chips, which requires dynamic memory.  So we have to handle\nthese distinct cases explicitly.  Where `struct flashprog_chips *`\nis used, we set it to the special value `FLASHCHIPS_DB`  to denote\nthe flash database. For `struct flashprog_chip *` pointers, we add\nchip_from_db(), which tells us whether the given pointer is within\nthe database range.\n\nChange-Id: I7ecc12e1b74ca11f2be1b3472d6e470da44bfef1\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/481\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5fdf5e841379af8123ca0ae2662d8c36587b8267",
      "old_mode": 33188,
      "old_path": "Doxyfile",
      "new_id": "c0c3528ba9e09c4a64ed87f4f101dbb8ea970fbe",
      "new_mode": 33188,
      "new_path": "Doxyfile"
    },
    {
      "type": "modify",
      "old_id": "11eb07bbc4c2e880b570d54bb1e7fef03377dbb7",
      "old_mode": 33188,
      "old_path": "Makefile",
      "new_id": "7d6e66819ce01fe861c5577e07dab2c41f9587a9",
      "new_mode": 33188,
      "new_path": "Makefile"
    },
    {
      "type": "modify",
      "old_id": "e1d4d80faa891867db9ce83f6e4d588d251e81e9",
      "old_mode": 33188,
      "old_path": "include/libflashprog.h",
      "new_id": "1f46be14ce14291b99b0e159544239a793a3021d",
      "new_mode": 33188,
      "new_path": "include/libflashprog.h"
    },
    {
      "type": "modify",
      "old_id": "9c28eff8d969b8bab1369fad9323adcc1477de1d",
      "old_mode": 33188,
      "old_path": "libflashprog.c",
      "new_id": "7e2cea1e0c4f4bac374052b01b263b7072374f8d",
      "new_mode": 33188,
      "new_path": "libflashprog.c"
    },
    {
      "type": "modify",
      "old_id": "a0dd125694ecfea64a2c012a405c42128458bed7",
      "old_mode": 33188,
      "old_path": "libflashprog.map",
      "new_id": "c13f7e424baa4828577125b08e5c079ba86c7321",
      "new_mode": 33188,
      "new_path": "libflashprog.map"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ec4adbca8ec78eba68d49f9b8f8d5461f1996e8f",
      "new_mode": 33188,
      "new_path": "libflashprog/chips.c"
    },
    {
      "type": "modify",
      "old_id": "9e996e950606bbc549f9622afcf35bbd50e669be",
      "old_mode": 33188,
      "old_path": "meson.build",
      "new_id": "2b40d52849895469657c0ceafbd537a02cf80e54",
      "new_mode": 33188,
      "new_path": "meson.build"
    }
  ]
}
