1. 16 4月, 2016 1 次提交
  2. 30 6月, 2015 1 次提交
    • J
      convert "enum date_mode" into a struct · a5481a6c
      Jeff King 提交于
      In preparation for adding date modes that may carry extra
      information beyond the mode itself, this patch converts the
      date_mode enum into a struct.
      
      Most of the conversion is fairly straightforward; we pass
      the struct as a pointer and dereference the type field where
      necessary. Locations that declare a date_mode can use a "{}"
      constructor.  However, the tricky case is where we use the
      enum labels as constants, like:
      
        show_date(t, tz, DATE_NORMAL);
      
      Ideally we could say:
      
        show_date(t, tz, &{ DATE_NORMAL });
      
      but of course C does not allow that. Likewise, we cannot
      cast the constant to a struct, because we need to pass an
      actual address. Our options are basically:
      
        1. Manually add a "struct date_mode d = { DATE_NORMAL }"
           definition to each caller, and pass "&d". This makes
           the callers uglier, because they sometimes do not even
           have their own scope (e.g., they are inside a switch
           statement).
      
        2. Provide a pre-made global "date_normal" struct that can
           be passed by address. We'd also need "date_rfc2822",
           "date_iso8601", and so forth. But at least the ugliness
           is defined in one place.
      
        3. Provide a wrapper that generates the correct struct on
           the fly. The big downside is that we end up pointing to
           a single global, which makes our wrapper non-reentrant.
           But show_date is already not reentrant, so it does not
           matter.
      
      This patch implements 3, along with a minor macro to keep
      the size of the callers sane.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      a5481a6c
  3. 28 8月, 2014 1 次提交
    • J
      date: use strbufs in date-formatting functions · c33ddc2e
      Jeff King 提交于
      Many of the date functions write into fixed-size buffers.
      This is a minor pain, as we have to take special
      precautions, and frequently end up copying the result into a
      strbuf or heap-allocated buffer anyway (for which we
      sometimes use strcpy!).
      
      Let's instead teach parse_date, datestamp, etc to write to a
      strbuf. The obvious downside is that we might need to
      perform a heap allocation where we otherwise would not need
      to. However, it turns out that the only two new allocations
      required are:
      
        1. In test-date.c, where we don't care about efficiency.
      
        2. In determine_author_info, which is not performance
           critical (and where the use of a strbuf will help later
           refactoring).
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      c33ddc2e
  4. 25 4月, 2012 1 次提交
  5. 06 7月, 2010 2 次提交
  6. 31 8月, 2009 1 次提交
    • J
      refactor test-date interface · 4f6552ea
      Jeff King 提交于
      The test-date program goes back to the early days of git,
      where it was presumably used to do manual sanity checks on
      changes to the date code. However, it is not actually used
      by the test suite to do any sort of automatic of systematic
      tests.
      
      This patch refactors the interface to the program to try to
      make it more suitable for use by the test suite. There
      should be no fallouts to changing the interface since it is
      not actually installed and is not internally called by any
      other programs.
      
      The changes are:
      
        - add a "mode" parameter so the caller can specify which
          operation to test
      
        - add a mode to test relative date output from show_date
      
        - allow faking a fixed time via the TEST_DATE_NOW
          environment variable, which allows consistent automated
          testing
      
        - drop the use of ctime for showing dates in favor of our
          internal iso8601 printing routines. The ctime output is
          somewhat redundant (because of the day-of-week) which
          makes writing test cases more annoying.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      4f6552ea
  7. 21 12月, 2006 1 次提交
    • J
      simplify inclusion of system header files. · 85023577
      Junio C Hamano 提交于
      This is a mechanical clean-up of the way *.c files include
      system header files.
      
       (1) sources under compat/, platform sha-1 implementations, and
           xdelta code are exempt from the following rules;
      
       (2) the first #include must be "git-compat-util.h" or one of
           our own header file that includes it first (e.g. config.h,
           builtin.h, pkt-line.h);
      
       (3) system headers that are included in "git-compat-util.h"
           need not be included in individual C source files.
      
       (4) "git-compat-util.h" does not have to include subsystem
           specific header files (e.g. expat.h).
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      85023577
  8. 17 11月, 2005 1 次提交
  9. 02 5月, 2005 1 次提交
    • L
      date handling: handle "AM"/"PM" on time · 68849b54
      Linus Torvalds 提交于
      And be a bitmore careful about matching: if we don't recognize a word
      or a number, we skip the whole thing, rather than trying the next character
      in that word/number.
      
      Finally: since ctime() adds the final '\n', don't add another one in test-date.
      68849b54
  10. 01 5月, 2005 1 次提交