1. 23 Mar, 2022 2 commits
  2. 23 Feb, 2022 2 commits
  3. 24 Jun, 2019 3 commits
    • hash: move SHA1 implementations to its own hashing context · 8832172e
      Create a separate `git_hash_sha1_ctx` structure that is specific
      to the SHA1 implementation and move all SHA1 functions over to
      use that one instead of the generic `git_hash_ctx`. The
      `git_hash_ctx` for now simply has a union containing this single
      SHA1 implementation, only, without any mechanism to distinguish
      between different algortihms.
      Patrick Steinhardt committed
    • hash: move SHA1 implementations into 'sha1/' folder · fda20622
      As we will include additional hash algorithms in the future due
      to upstream git discussing a move away from SHA1, we should
      accomodate for that and prepare for the move. As a first step,
      move all SHA1 implementations into a common subdirectory.
      
      Also, create a SHA1-specific header file that lives inside the
      hash folder. This header will contain the SHA1-specific header
      includes, function declarations and the SHA1 context structure.
      Patrick Steinhardt committed
    • hash: introduce source files to break include circles · bd48bf3f
      The hash source files have circular include dependencies right
      now, which shows by our broken generic hash implementation. The
      "hash.h" header declares two functions and the `git_hash_ctx`
      typedef before actually including the hash backend header and can
      only declare the remaining hash functions after the include due
      to possibly static function declarations inside of the
      implementation includes.
      
      Let's break this cycle and help maintainability by creating a
      real implementation file for each of the hash implementations.
      Instead of relying on the exact include order, we now especially
      avoid the use of `GIT_INLINE` for function declarations.
      Patrick Steinhardt committed
  4. 22 Jan, 2019 1 commit
  5. 02 Jan, 2019 1 commit
    • hash: convert `global_init` macros to real function · 03dc6480
      The `git_hash_global_init` function is simply defined as a macro to zero
      for most of the different hash implementations. This makes it impossible
      to treat it like a function pointer, which is required for a later
      commit where we want to improve the way global initialization works.
      Fix the issue by converting all no-op macros to an inline function
      returning zero.
      
      There's a small gotcha here, though: as most hash implementations only
      have a header file, but not a corresponding implementation file, we
      cannot declare the function as non-static. But declaring it as `static
      inline` fails, too, as there is a previous declaration as non-static. So
      we have to move the function declaration after the include that brings
      in the function definition, as it is allowed to have a non-static
      declaration after a static definition, but not the other way round.
      Patrick Steinhardt committed
  6. 01 Feb, 2018 1 commit
  7. 03 Jan, 2018 1 commit
  8. 17 Sep, 2013 1 commit
    • Add simple global shutdown hooks · a3aa5f4d
      Increasingly there are a number of components that want to do some
      cleanup at global shutdown time (at least if there are not going
      to be memory leaks).  This creates a very simple system of shutdown
      hooks that will be invoked by git_threads_shutdown.  Right now, the
      maximum number of hooks is hardcoded, but since adding a hook is
      not a public API, it should be fine and I thought it was better to
      start off with really simple code.
      Russell Belfer committed
  9. 08 Jan, 2013 1 commit
  10. 13 Nov, 2012 4 commits