)]}'
{
  "commit": "88f95bbadda89bfaf6a8e817bb66fd114afc1caf",
  "tree": "17a3c26a6ef0df9a2469c55848a3949bebd3b3d8",
  "parents": [
    "816cb037adf94ead77593812ccd3244d506175fa"
  ],
  "author": {
    "name": "Simon Glass",
    "email": "sjg@chromium.org",
    "time": "Tue May 07 06:11:50 2013 +0000"
  },
  "committer": {
    "name": "Tom Rini",
    "email": "trini@ti.com",
    "time": "Tue May 14 15:37:25 2013 -0400"
  },
  "message": "libfdt: Add fdt_next_subnode() to permit easy subnode iteration\n\nIterating through subnodes with libfdt is a little painful to write as we\nneed something like this:\n\nfor (depth \u003d 0, count \u003d 0,\n\toffset \u003d fdt_next_node(fdt, parent_offset, \u0026depth);\n     (offset \u003e\u003d 0) \u0026\u0026 (depth \u003e 0);\n     offset \u003d fdt_next_node(fdt, offset, \u0026depth)) {\n\tif (depth \u003d\u003d 1) {\n\t\t/* code body */\n\t}\n}\n\nUsing fdt_next_subnode() we can instead write this, which is shorter and\neasier to get right:\n\nfor (offset \u003d fdt_first_subnode(fdt, parent_offset);\n     offset \u003e\u003d 0;\n     offset \u003d fdt_next_subnode(fdt, offset)) {\n\t/* code body */\n}\n\nAlso, it doesn\u0027t require two levels of indentation for the loop body.\n\nSigned-off-by: Simon Glass \u003csjg@chromium.org\u003e\n(Cherry-picked from dtc commit 4e76ec79)\nAcked-by: Gerald Van Baren \u003cvanbaren@cideas.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7403d5a6dba41a67a0a9a527c0c381ac8e4fa80e",
      "old_mode": 33188,
      "old_path": "include/libfdt.h",
      "new_id": "c5ec2acfd82927f070923e118766aad22986b3a9",
      "new_mode": 33188,
      "new_path": "include/libfdt.h"
    },
    {
      "type": "modify",
      "old_id": "387e3544b7e578832eb4f27b443547b92d7e966a",
      "old_mode": 33188,
      "old_path": "lib/libfdt/fdt.c",
      "new_id": "154e9a4461794dc9ec7271e1b61cda38703626b9",
      "new_mode": 33188,
      "new_path": "lib/libfdt/fdt.c"
    }
  ]
}
