1. 23 2月, 2016 1 次提交
    • J
      argv-array: add detach function · b992657e
      Jeff King 提交于
      The usual pattern for an argv array is to initialize it,
      push in some strings, and then clear it when done. Very
      occasionally, though, we must do other exotic things with
      the memory, like freeing the list but keeping the strings.
      Let's provide a detach function so that callers can make use
      of our API to build up the array, and then take ownership of
      it.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      b992657e
  2. 16 6月, 2015 1 次提交
  3. 16 5月, 2014 1 次提交
  4. 20 7月, 2013 1 次提交
  5. 10 7月, 2013 1 次提交
  6. 08 10月, 2012 1 次提交
  7. 03 9月, 2012 1 次提交
    • J
      argv-array: add pop function · fe4a0a28
      Jeff King 提交于
      Sometimes we build a set of similar command lines, differing
      only in the final arguments (e.g., "fetch --multiple"). To
      use argv_array for this, you have to either push the same
      set of elements repeatedly, or break the abstraction by
      manually manipulating the array's internal members.
      
      Instead, let's provide a sanctioned "pop" function to remove
      elements from the end.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      fe4a0a28
  8. 19 4月, 2012 2 次提交
    • J
      argv-array: add a new "pushl" method · d15bbe13
      Jeff King 提交于
      It can be convenient to push many strings in a single line
      (e.g., if you are initializing an array with defaults). This
      patch provides a convenience wrapper to allow this.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      d15bbe13
    • J
      argv-array: refactor empty_argv initialization · fd93d2e6
      Jeff King 提交于
      An empty argv-array is initialized to point to a static
      empty NULL-terminated array.  The original implementation
      separates the actual storage of the NULL-terminator from the
      pointer to the list.  This makes the exposed type a "const
      char **", which nicely matches the type stored by the
      argv-array.
      
      However, this indirection means that one cannot use
      empty_argv to initialize a static variable, since it is
      not a constant.
      
      Instead, we can expose empty_argv directly, as an array of
      pointers. The only place we use it is in the ARGV_ARRAY_INIT
      initializer, and it decays to a pointer appropriately there.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      fd93d2e6
  9. 15 9月, 2011 1 次提交
    • J
      refactor argv_array into generic code · c1189cae
      Jeff King 提交于
      The submodule code recently grew generic code to build a
      dynamic argv array. Many other parts of the code can reuse
      this, too, so let's make it generically available.
      
      There are two enhancements not found in the original code:
      
        1. We now handle the NULL-termination invariant properly,
           even when no strings have been pushed (before, you
           could have an empty, NULL argv). This was not a problem
           for the submodule code, which always pushed at least
           one argument, but was not sufficiently safe for
           generic code.
      
        2. There is a formatted variant of the "push" function.
           This is a convenience function which was not needed by
           the submodule code, but will make it easier to port
           other users to the new code.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      c1189cae