)]}'
{
  "log": [
    {
      "commit": "b166ea2dda9f04a8b75e0bf5adb7064580695f22",
      "tree": "40b9468412819c0eab55798f816f6a8e1c58a4c0",
      "parents": [
        "18f420e9f99e7f6557cf5877673cd6e71ac32192"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "joakim.tjernlund@transmode.se",
        "time": "Thu Jun 25 16:40:06 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Oct 17 14:09:02 2014 +0100"
      },
      "message": "[lib] Add support for backtrace on more platforms\n\n* lib/sigevent.c: (program_counter) extend to support more platforms. Joint\n  effort with Paul Jakma.\n"
    },
    {
      "commit": "837d16ccbe0fca413f8927da6a34b1e97ccada8a",
      "tree": "7aed5a517b619c03d11bf567f6a14cda6f8f5efe",
      "parents": [
        "655071f44aab42e89bcece3a93da456fdd0d913a"
      ],
      "author": {
        "name": "Balaji.G",
        "email": "balajig81@gmail.com",
        "time": "Wed Sep 26 14:09:10 2012 +0530"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Oct 25 10:15:59 2012 -0700"
      },
      "message": "*: use array_size() helper macro\n\nUse the array_size() helper macro.  Replaces several instances of local\nmacros with the same definition.\n\nReviewed-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8cc4198f9fabe5f10f5a773de1503d82f33a01fb",
      "tree": "77045da709ff66629bd12029b9ee17700360909b",
      "parents": [
        "e7fe8c88c3d552400e1ae3ae9243319ab95d6f2d"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 06 21:25:49 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 06 21:25:49 2005 +0000"
      },
      "message": "2005-05-06 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* (general) extern and static\u0027ification of functions in code and\n\t  header.\n\t  Cleanup any definitions with unspecified arguments.\n\t  Add casts for callback assignments where the callback is defined,\n\t  typically, as passing void *, but the function being assigned has\n\t  some other pointer type defined as its argument, as gcc complains\n\t  about casts from void * to X* via function arguments.\n\t  Fix some old K\u0026R style function argument definitions.\n\t  Add noreturn gcc attribute to some functions, as appropriate.\n\t  Add unused gcc attribute to some functions (eg ones meant to help\n\t  while debugging)\n\t  Add guard defines to headers which were missing them.\n\t* command.c: (install_node) add const qualifier, still doesnt shut\n\t  up the warning though, because of the double pointer.\n\t  (cmp_node) ditto\n\t* keychain.c: (key_str2time) Add GET_LONG_RANGE() macro, derived\n\t  fromn vty.h ones to fix some of the (long) \u003c 0 warnings.\n\t* thread.c: (various) use thread_empty\n\t  (cpu_record_hash_key) should cast to uintptr_t, a stdint.h type\n\t* vty.h: Add VTY_GET_IPV4_ADDRESS and VTY_GET_IPV4_PREFIX so they\n\t  removed from ospfd/ospf_vty.h\n\t* zebra.h: Move definition of ZEBRA_PORT to here, to remove\n\t  dependence of lib on zebra/zserv.h\n"
    },
    {
      "commit": "67bf16c0f8179af05bcff04d19226866a8b7e806",
      "tree": "4ff6db9b640602b6b99bd03b3405aeffcbf58850",
      "parents": [
        "926fe8f1fce88d0889e47a9f5c6d78c6bc11f3f6"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Apr 08 19:02:04 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Apr 08 19:02:04 2005 +0000"
      },
      "message": "2005-04-08 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* sigevent.c: On GNU_LINUX, check whether __USE_GNU is already defined.\n"
    },
    {
      "commit": "31364274ddd1da6b77dd99e1d5d164b5c643732b",
      "tree": "4f0ae083583fb605508ef981e96fb230d7110c41",
      "parents": [
        "92365889d1f856f323af452bad76f54c15ccdf45"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Jan 18 22:18:59 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Jan 18 22:18:59 2005 +0000"
      },
      "message": "2005-01-18 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* log.h: Test for SA_SIGINFO to see whether zlog_signal takes final\n\t  two args (siginfo and program_counter).\n\t* log.c: (hex_append) Include this function only if SA_SIGINFO or\n\t  HAVE_GLIBC_BACKTRACE is defined.\n\t  (zlog_signal) Final two args (siginfo and program_counter) now\n\t  depend on whether SA_SIGINFO is defined on this platform.\n\t* sigevent.c: (program_counter) Do not include this function if\n\t  SA_SIGINFO is not defined on this platform.\n\t  (exit_handler,core_handler) Test for SA_SIGINFO to decide whether\n\t  2nd \u0026 3rd arguments are present and to decide how to invoke\n\t  zlog_signal.\n\t  (trap_default_signals) Test for SA_SIGINFO and invoke sigaction\n\t  appropriately.\n"
    },
    {
      "commit": "40abf2392ba9f14935dab556f43e674cb5c47cf3",
      "tree": "3c5ff5794940f408b411c5d0204e27dac1014378",
      "parents": [
        "6cf9df088e10baefe04139897f8745a42ea0c772"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Jan 12 17:27:27 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Jan 12 17:27:27 2005 +0000"
      },
      "message": "2005-01-12 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* configure.ac: Test for header file \u003cucontext.h\u003e (for use in\n\t  signal processing).\n\t* sigevent.c: (trap_default_signals) Use the SA_SIGINFO flag to\n\t  pass additional siginfo_t and ucontext_t arguments to core_handler\n\t  and exit_handler.\n\t  (core_handler,exit_handler) Now invoked with 3 arguments (using\n\t  SA_SIGINFO).  Pass additional info to zlog_signal.\n\t  (program_counter) New function to find program counter in ucontext_t,\n\t  needs to be enhanced to support more platforms (currently works only\n\t  on Linux/x86).\n\t* log.h: Change the zlog_signal prototype to add new arguments\n\t  siginfo_t * and program_counter.\n\t* log.c: (zlog_signal) Add new arguments siginfo and program_counter.\n\t  Include si_addr and program counter (if non-NULL) in message.\n\t  And remove #ifdef HAVE_GLIBC_BACKTRACE around hex_append, since\n\t  that is now used to render the si_addr and PC pointers.\n"
    },
    {
      "commit": "81fc57ca0d743a6abe577c4f0b316bfb570e45be",
      "tree": "846f58014c25a74449c1ea19e075f6f0a23cc723",
      "parents": [
        "bc18d616ad7d1d580e1e04c28eab2cd9afb67fad"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Dec 15 17:41:14 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Dec 15 17:41:14 2004 +0000"
      },
      "message": "2004-12-15 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* sigevent.c: (trap_default_signals) Ignore SIGPIPE instead of exiting.\n"
    },
    {
      "commit": "59a06a915da9129a4e756c2b4d42449aa71a0ee4",
      "tree": "44090f696cbec97cab5e5b090b22c7431a5d6490",
      "parents": [
        "d246bd965898f0ba6781f2b2048af9a5eba079d3"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Nov 23 18:19:14 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Nov 23 18:19:14 2004 +0000"
      },
      "message": "2004-11-23 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* sigevent.c: (signal_init) Set up some default signal handlers\n\t  so that processes will issue an error message before terminating\n\t  or dumping core.\n\t  (trap_default_signals) New function to set up signal handlers\n\t  for various signals that may kill the process.\n\t  (exit_handler) Call zlog_signal, then _exit.\n\t  (core_handler) Call zlog_signal, then abort.\n\t* log.h: Declare new function zlog_signal.\n\t* log.c: (zlog_signal) New function to log information about\n\t  a received signal before the process dies.  Try to log a\n\t  backtrace also.\n\t  (quagga_signal_handler,signal_set) Should be static.\n"
    },
    {
      "commit": "05c447dd2e3aab0d045889845da0be5c8d974d4b",
      "tree": "062ca42a848dc0377d7a814d8570e77bc59a2eff",
      "parents": [
        "27eebb3e5713559379ac072d5f36e26044465ab0"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Jul 22 19:14:27 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Jul 22 19:14:27 2004 +0000"
      },
      "message": "2004-07-14 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * sigevent.c: (quagga_signal_handler) add a global caught flag, set\n          the flags to a constant rather increment to be kinder.\n          (quagga_sigevent_process) new function, to do core of what\n          quagga_signal_timer did. dont block signals at all as sig-\u003ecaught\n          is volatile sig_atomic_t and should be safe to access from signal\n          and normal contexts. The signal blocking is unneeded paranoia, but\n          is left intact under an ifdef, should some platform require it.\n          Check global caught flag before iterating through array.\n          (quagga_signal_timer) nearly everything moved to\n          quagga_sigevent_process. Left in under ifdef, in case some\n          platform could use a regular timer check for signals.\n        * sigevent.h: quagga_sigevent_process declaration.\n        * thread.c: (thread_fetch) check for signals at beginning of\n          scheduler loop, check for signals if select returns EINTR.\n"
    },
    {
      "commit": "b77971317724a97b72a8566b3a54d36ef7c76a07",
      "tree": "25e17e5ec53eb9625e2f872e3053913e10177973",
      "parents": [
        "25dac85507ca3a107351a9f84173b5bcaea8a450"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Tue Jul 13 13:47:25 2004 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Tue Jul 13 13:47:25 2004 +0000"
      },
      "message": "2004-07-13  Greg Troxel  \u003cgdt@poblano.ir.bbn.com\u003e\n\n\t* sigevent.c: Don\u0027t block SIGTRAP and SIGKILL.  Blocking SIGTRAP\n\tconfuses gdb, at least on NetBSD 2.0_BETA, where the block\n\tsucceeds.\n"
    },
    {
      "commit": "c49b30692d7a2379264dfd2d45c2d2ab16e8822c",
      "tree": "a379c072fdeea6e7ec4dca1970f5409bd63a2cfa",
      "parents": [
        "13b8baadb044a4ddd447cb7139a9d59fbb7983a5"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Jan 19 21:23:37 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Jan 19 21:23:37 2004 +0000"
      },
      "message": "2004-01-19 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * sigevent.{c,h}: New files, implement event handled signals.\n          see signal_init() in sigevent.h.\n"
    }
  ]
}
