text: /*
   * Copyright (C) the libgit2 contributors. All rights reserved.
   *
   * This file is part of libgit2, distributed under the GNU GPL v2 with
   * a Linking Exception. For full terms see the included COPYING file.
   */
  #ifndef INCLUDE_global_h__
  #define INCLUDE_global_h__
  
  #include "common.h"
  
  #include "mwindow.h"
  #include "hash.h"
  
  typedef struct {
  	git_error *last_error;
  	git_error error_t;
  	git_buf error_buf;
  	char oid_fmt[GIT_OID_HEXSZ+1];
  
  	/* On Windows, this is the current child thread that was started by
  	 * `git_thread_create`.  This is used to set the thread's exit code
  	 * when terminated by `git_thread_exit`.  It is unused on POSIX.
  	 */
  	git_thread *current_thread;
  } git_global_st;
  
  #ifdef GIT_OPENSSL
  # include <openssl/ssl.h>
  extern SSL_CTX *git__ssl_ctx;
  #endif
  
  git_global_st *git__global_state(void);
  
  extern git_mutex git__mwindow_mutex;
  
  #define GIT_GLOBAL (git__global_state())
  
  typedef void (*git_global_shutdown_fn)(void);
  
  extern void git__on_shutdown(git_global_shutdown_fn callback);
  
  extern void git__free_tls_data(void);
  
  extern const char *git_libgit2__user_agent(void);
  extern const char *git_libgit2__ssl_ciphers(void);
  
  #endif
  