1. 26 Jul, 2017 2 commits
  2. 03 Jul, 2017 1 commit
    • Make sure to always include "common.h" first · 0c7f49dd
      Next to including several files, our "common.h" header also declares
      various macros which are then used throughout the project. As such, we
      have to make sure to always include this file first in all
      implementation files. Otherwise, we might encounter problems or even
      silent behavioural differences due to macros or defines not being
      defined as they should be. So in fact, our header and implementation
      files should make sure to always include "common.h" first.
      
      This commit does so by establishing a common include pattern. Header
      files inside of "src" will now always include "common.h" as its first
      other file, separated by a newline from all the other includes to make
      it stand out as special. There are two cases for the implementation
      files. If they do have a matching header file, they will always include
      this one first, leading to "common.h" being transitively included as
      first file. If they do not have a matching header file, they instead
      include "common.h" as first file themselves.
      
      This fixes the outlined problems and will become our standard practice
      for header and source files inside of the "src/" from now on.
      Patrick Steinhardt committed
  3. 17 Apr, 2017 1 commit
  4. 05 Apr, 2017 1 commit
  5. 03 Apr, 2017 3 commits
  6. 02 Apr, 2017 5 commits
  7. 01 Apr, 2017 2 commits
    • win32: introduce `do_with_retries` macro · cc8d9a29
      Provide a macro that will allow us to run a function with posix-like
      return values multiple times in a retry loop, with an optional cleanup
      function called between invocations.
      Edward Thomson committed
    • win32: map windows error codes to errno · dcaa9099
      Introduce mapping from windows error codes to errno values.  This
      allows us to replace our calls to the Windows posix emulation functions
      with calls to the Win32 APIs for more fine-grained control over the
      emulation.
      
      These mappings match the Windows CRT's mappings for its posix emulation
      as they were described to me.
      Edward Thomson committed
  8. 28 Feb, 2017 1 commit
    • odb_loose: fsync tests · e6ed0d2f
      Introduce a simple counter that `p_fsync` implements.  This is useful
      for ensuring that `p_fsync` is called when we expect it to be, for
      example when we have enabled an odb backend to perform `fsync`s when
      writing objects.
      Edward Thomson committed
  9. 18 May, 2016 1 commit
  10. 16 Feb, 2016 1 commit
  11. 12 Feb, 2016 1 commit
  12. 17 Sep, 2015 1 commit
  13. 02 Jul, 2015 1 commit
  14. 16 Jun, 2015 1 commit
  15. 28 Apr, 2015 2 commits
  16. 06 Mar, 2015 1 commit
  17. 03 Mar, 2015 2 commits
  18. 13 Feb, 2015 1 commit
  19. 05 Feb, 2015 1 commit
  20. 16 Dec, 2014 1 commit
    • win32: use NT-prefixed "\\?\" paths · cceae9a2
      When turning UTF-8 paths into UCS-2 paths for Windows, always use
      the \\?\-prefixed paths.  Because this bypasses the system's
      path canonicalization, handle the canonicalization functions ourselves.
      
      We must:
       1. always use a backslash as a directory separator
       2. only use a single backslash between directories
       3. not rely on the system to translate "." and ".." in paths
       4. remove trailing backslashes, except at the drive root (C:\)
      Edward Thomson committed
  21. 13 Oct, 2014 1 commit
    • p_lstat win32: don't canonicalize volume mounts · 8d45b469
      A reparse point that is an IO_REPARSE_TAG_MOUNT_POINT could be
      a junction or an actual filesystem mount point.  (Who knew?)
      If it's the latter, its reparse point will report the actual
      volume information \??\Volume{GUID}\ and we should not attempt
      to dereference that further, instead readlink should report
      EINVAL since it's not a symlink / junction and its original
      path was canonical.
      
      Yes, really.
      Edward Thomson committed
  22. 05 Aug, 2014 2 commits
  23. 06 Jul, 2014 2 commits
  24. 04 Jun, 2014 1 commit
    • filebuf: make unlocking atomic · e58281aa
      When renaming a lock file to its final location, we need to make sure
      that it is replaced atomically.
      
      We currently have a workaround for Windows by removing the target file.
      This means that the target file, which may be a ref or a packfile, may
      cease to exist for a short wile, which shold be avoided.
      
      Implement the workaround only in Windows, by making sure that the file
      we want to replace is writable.
      Carlos Martín Nieto committed
  25. 16 May, 2014 2 commits
  26. 23 Apr, 2014 1 commit
  27. 22 Apr, 2014 1 commit