)]}'
{
  "commit": "1ed72e0b3a643fa1be6f1efa904965798a575cd1",
  "tree": "052341ede20e44b6aa23b1cd799d08f9b762c1c2",
  "parents": [
    "eda9ba743c1eb7c32b2ae9b8989d3555f1890758"
  ],
  "author": {
    "name": "Andrew J. Schorr",
    "email": "ajschorr@alumni.princeton.edu",
    "time": "Sat Apr 28 22:14:10 2007 +0000"
  },
  "committer": {
    "name": "Andrew J. Schorr",
    "email": "ajschorr@alumni.princeton.edu",
    "time": "Sat Apr 28 22:14:10 2007 +0000"
  },
  "message": "[logging] Add new \"log timestamp precision\" command for subsecond timestamps\n\n2007-04-28 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* command.c: (config_write_host) Save \"log timestamp precision\"\n\t  if not default value.\n\t  (show_logging) Show configured timestamp precision.\n\t  (config_log_timestamp_precision) Enable configuration of timestamp\n\t  precision.\n\t  (no_config_log_timestamp_precision) Restore default timestamp\n\t  precision.\n\t  (cmd_init) Install new timestamp precision commands.\n\t* log.h: (struct zlog) New timestamp_precision field.\n\t  (quagga_timestamp) New function to generate a timestamp with the\n\t  desired precision.\n\t  (struct timestamp_control) Declare a structure for use in avoiding\n\t  repeated duplicate calls to quagga_timestamp.\n\t* log.c: (quagga_timestamp) New function to generate a timestamp\n\t  of the desired precision.\n\t  (time_print) Call quagga_timestamp if the time hasn\u0027t already been\n\t  calculated.\n\t  (vzlog) Initialize a timestamp_control structure and pass it to\n\t  time_print and vty_log.\n\t  (zlog_backtrace) Fix 64-bit problem: cannot print size_t with %u.\n\t* vty.h: Must now include \"log.h\".\n\t  (vty_log) Takes an additional struct timestamp_control argument.\n\t* vty.c: (vty_log_out) Use new struct timestamp_control and new\n\t  quagga_timestamp function to print timestamps of the desired\n\t  precision.\n\t  (vty_time_print) Use new quagga_timestamp function.\n\t  (vty_log) Accept new struct timestamp_control argument and pass it\n\t  down to vty_log_out.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ff32fcceb3c5b6d09320364ac06dd53659a0509a",
      "old_mode": 33188,
      "old_path": "lib/ChangeLog",
      "new_id": "3e515f872f5eeb8264193748af7d77c229ae583f",
      "new_mode": 33188,
      "new_path": "lib/ChangeLog"
    },
    {
      "type": "modify",
      "old_id": "316971e40e995ef175b55a7fa4fe05fc2f1fdcb1",
      "old_mode": 33188,
      "old_path": "lib/command.c",
      "new_id": "f3d96ede0134f26cd3a53cb356eb9ac02cf82408",
      "new_mode": 33188,
      "new_path": "lib/command.c"
    },
    {
      "type": "modify",
      "old_id": "c123f24f6caf6abcf15159c2bb827c7129336a53",
      "old_mode": 33188,
      "old_path": "lib/log.c",
      "new_id": "76682227c08a1981a02f3590a3447e55aa8e6676",
      "new_mode": 33188,
      "new_path": "lib/log.c"
    },
    {
      "type": "modify",
      "old_id": "0f058a8bae8f7657da4c648ef520cf58b9eef635",
      "old_mode": 33188,
      "old_path": "lib/log.h",
      "new_id": "da8fbea8fd9473d28400d0ec68f3bd5cafc07ea6",
      "new_mode": 33188,
      "new_path": "lib/log.h"
    },
    {
      "type": "modify",
      "old_id": "4288e150d16f02f0fa561e4cc70bb138716f4e11",
      "old_mode": 33188,
      "old_path": "lib/vty.c",
      "new_id": "6cb8b4875eb50cc4a773366fb3317d4000da2671",
      "new_mode": 33188,
      "new_path": "lib/vty.c"
    },
    {
      "type": "modify",
      "old_id": "5a02e65f5172cfa9d6c2475b755cba7cc0e9ff59",
      "old_mode": 33188,
      "old_path": "lib/vty.h",
      "new_id": "65ae6201c0c497aa21303da7757f9e8e0839378e",
      "new_mode": 33188,
      "new_path": "lib/vty.h"
    }
  ]
}
