rugged 0.27.10 → 0.27.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (420) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rugged/version.rb +1 -1
  3. data/vendor/libgit2/AUTHORS +0 -1
  4. data/vendor/libgit2/CMakeLists.txt +54 -98
  5. data/vendor/libgit2/COPYING +0 -28
  6. data/vendor/libgit2/cmake/Modules/AddCFlagIfSupported.cmake +1 -15
  7. data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +8 -9
  8. data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +2 -2
  9. data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +1 -1
  10. data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +2 -2
  11. data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +0 -6
  12. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -2
  13. data/vendor/libgit2/deps/http-parser/{COPYING → LICENSE-MIT} +0 -0
  14. data/vendor/libgit2/deps/http-parser/http_parser.c +6 -11
  15. data/vendor/libgit2/deps/regex/CMakeLists.txt +2 -0
  16. data/vendor/libgit2/deps/regex/config.h +7 -0
  17. data/vendor/libgit2/deps/regex/regcomp.c +3857 -0
  18. data/vendor/libgit2/deps/regex/regex.c +92 -0
  19. data/vendor/libgit2/deps/regex/regex.h +582 -0
  20. data/vendor/libgit2/deps/regex/regex_internal.c +1744 -0
  21. data/vendor/libgit2/deps/regex/regex_internal.h +819 -0
  22. data/vendor/libgit2/deps/regex/regexec.c +4369 -0
  23. data/vendor/libgit2/deps/zlib/CMakeLists.txt +0 -1
  24. data/vendor/libgit2/deps/zlib/adler32.c +7 -0
  25. data/vendor/libgit2/deps/zlib/crc32.c +7 -0
  26. data/vendor/libgit2/include/git2.h +0 -5
  27. data/vendor/libgit2/include/git2/annotated_commit.h +0 -9
  28. data/vendor/libgit2/include/git2/attr.h +20 -38
  29. data/vendor/libgit2/include/git2/blame.h +25 -42
  30. data/vendor/libgit2/include/git2/blob.h +13 -45
  31. data/vendor/libgit2/include/git2/branch.h +1 -1
  32. data/vendor/libgit2/include/git2/buffer.h +16 -22
  33. data/vendor/libgit2/include/git2/checkout.h +32 -65
  34. data/vendor/libgit2/include/git2/cherrypick.h +7 -9
  35. data/vendor/libgit2/include/git2/clone.h +10 -12
  36. data/vendor/libgit2/include/git2/commit.h +3 -53
  37. data/vendor/libgit2/include/git2/common.h +8 -60
  38. data/vendor/libgit2/include/git2/config.h +19 -30
  39. data/vendor/libgit2/include/git2/describe.h +9 -32
  40. data/vendor/libgit2/include/git2/diff.h +156 -208
  41. data/vendor/libgit2/include/git2/errors.h +46 -54
  42. data/vendor/libgit2/include/git2/filter.h +0 -8
  43. data/vendor/libgit2/include/git2/ignore.h +2 -2
  44. data/vendor/libgit2/include/git2/index.h +52 -74
  45. data/vendor/libgit2/include/git2/indexer.h +6 -76
  46. data/vendor/libgit2/include/git2/inttypes.h +309 -0
  47. data/vendor/libgit2/include/git2/merge.h +18 -35
  48. data/vendor/libgit2/include/git2/net.h +5 -0
  49. data/vendor/libgit2/include/git2/notes.h +1 -1
  50. data/vendor/libgit2/include/git2/object.h +29 -17
  51. data/vendor/libgit2/include/git2/odb.h +11 -12
  52. data/vendor/libgit2/include/git2/odb_backend.h +9 -10
  53. data/vendor/libgit2/include/git2/oid.h +2 -2
  54. data/vendor/libgit2/include/git2/pack.h +3 -14
  55. data/vendor/libgit2/include/git2/proxy.h +8 -14
  56. data/vendor/libgit2/include/git2/rebase.h +6 -53
  57. data/vendor/libgit2/include/git2/refs.h +15 -33
  58. data/vendor/libgit2/include/git2/refspec.h +0 -17
  59. data/vendor/libgit2/include/git2/remote.h +24 -123
  60. data/vendor/libgit2/include/git2/repository.h +39 -76
  61. data/vendor/libgit2/include/git2/revert.h +4 -6
  62. data/vendor/libgit2/include/git2/revwalk.h +7 -7
  63. data/vendor/libgit2/include/git2/signature.h +2 -2
  64. data/vendor/libgit2/include/git2/stash.h +12 -15
  65. data/vendor/libgit2/include/git2/status.h +20 -33
  66. data/vendor/libgit2/include/git2/submodule.h +12 -30
  67. data/vendor/libgit2/include/git2/sys/commit.h +1 -1
  68. data/vendor/libgit2/include/git2/sys/config.h +13 -13
  69. data/vendor/libgit2/include/git2/sys/filter.h +6 -6
  70. data/vendor/libgit2/include/git2/sys/index.h +0 -3
  71. data/vendor/libgit2/include/git2/sys/mempack.h +35 -35
  72. data/vendor/libgit2/include/git2/sys/merge.h +4 -9
  73. data/vendor/libgit2/include/git2/sys/odb_backend.h +22 -66
  74. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -76
  75. data/vendor/libgit2/include/git2/sys/repository.h +1 -5
  76. data/vendor/libgit2/include/git2/sys/stream.h +12 -92
  77. data/vendor/libgit2/include/git2/sys/time.h +31 -0
  78. data/vendor/libgit2/include/git2/sys/transport.h +83 -129
  79. data/vendor/libgit2/include/git2/tag.h +4 -13
  80. data/vendor/libgit2/include/git2/trace.h +2 -2
  81. data/vendor/libgit2/include/git2/transaction.h +0 -1
  82. data/vendor/libgit2/include/git2/transport.h +311 -11
  83. data/vendor/libgit2/include/git2/tree.h +4 -4
  84. data/vendor/libgit2/include/git2/types.h +111 -33
  85. data/vendor/libgit2/include/git2/version.h +4 -4
  86. data/vendor/libgit2/include/git2/worktree.h +13 -48
  87. data/vendor/libgit2/libgit2.pc.in +13 -0
  88. data/vendor/libgit2/src/CMakeLists.txt +164 -96
  89. data/vendor/libgit2/src/annotated_commit.c +8 -15
  90. data/vendor/libgit2/src/apply.c +31 -537
  91. data/vendor/libgit2/src/apply.h +1 -3
  92. data/vendor/libgit2/src/array.h +2 -2
  93. data/vendor/libgit2/src/attr.c +75 -81
  94. data/vendor/libgit2/src/attr_file.c +121 -207
  95. data/vendor/libgit2/src/attr_file.h +9 -9
  96. data/vendor/libgit2/src/attrcache.c +53 -51
  97. data/vendor/libgit2/src/attrcache.h +1 -2
  98. data/vendor/libgit2/src/blame.c +20 -47
  99. data/vendor/libgit2/src/blame.h +1 -2
  100. data/vendor/libgit2/src/blame_git.c +20 -37
  101. data/vendor/libgit2/src/blob.c +42 -128
  102. data/vendor/libgit2/src/blob.h +2 -19
  103. data/vendor/libgit2/src/branch.c +43 -67
  104. data/vendor/libgit2/src/buf_text.c +6 -7
  105. data/vendor/libgit2/src/buffer.c +57 -69
  106. data/vendor/libgit2/src/buffer.h +1 -1
  107. data/vendor/libgit2/src/cache.c +45 -38
  108. data/vendor/libgit2/src/cache.h +3 -3
  109. data/vendor/libgit2/src/cc-compat.h +3 -20
  110. data/vendor/libgit2/src/checkout.c +90 -109
  111. data/vendor/libgit2/src/cherrypick.c +9 -15
  112. data/vendor/libgit2/src/clone.c +27 -49
  113. data/vendor/libgit2/src/clone.h +0 -4
  114. data/vendor/libgit2/src/commit.c +49 -117
  115. data/vendor/libgit2/src/commit.h +0 -7
  116. data/vendor/libgit2/src/commit_list.c +78 -30
  117. data/vendor/libgit2/src/commit_list.h +2 -2
  118. data/vendor/libgit2/src/common.h +91 -27
  119. data/vendor/libgit2/src/config.c +176 -194
  120. data/vendor/libgit2/src/config.h +20 -8
  121. data/vendor/libgit2/src/config_cache.c +35 -41
  122. data/vendor/libgit2/src/config_file.c +753 -439
  123. data/vendor/libgit2/src/config_file.h +73 -0
  124. data/vendor/libgit2/src/config_parse.c +63 -114
  125. data/vendor/libgit2/src/config_parse.h +16 -17
  126. data/vendor/libgit2/src/crlf.c +190 -219
  127. data/vendor/libgit2/src/delta.c +18 -25
  128. data/vendor/libgit2/src/describe.c +41 -42
  129. data/vendor/libgit2/src/diff.c +68 -53
  130. data/vendor/libgit2/src/diff.h +1 -2
  131. data/vendor/libgit2/src/diff_driver.c +49 -47
  132. data/vendor/libgit2/src/diff_file.c +17 -19
  133. data/vendor/libgit2/src/diff_file.h +1 -1
  134. data/vendor/libgit2/src/diff_generate.c +106 -162
  135. data/vendor/libgit2/src/diff_generate.h +3 -3
  136. data/vendor/libgit2/src/diff_parse.c +4 -4
  137. data/vendor/libgit2/src/diff_print.c +30 -42
  138. data/vendor/libgit2/src/diff_stats.c +7 -22
  139. data/vendor/libgit2/src/diff_tform.c +16 -16
  140. data/vendor/libgit2/src/diff_xdiff.c +3 -15
  141. data/vendor/libgit2/src/errors.c +39 -51
  142. data/vendor/libgit2/src/features.h.in +3 -11
  143. data/vendor/libgit2/src/fetch.c +5 -10
  144. data/vendor/libgit2/src/fetchhead.c +17 -17
  145. data/vendor/libgit2/src/filebuf.c +36 -32
  146. data/vendor/libgit2/src/filebuf.h +2 -2
  147. data/vendor/libgit2/src/{futils.c → fileops.c} +73 -80
  148. data/vendor/libgit2/src/{futils.h → fileops.h} +6 -6
  149. data/vendor/libgit2/src/filter.c +38 -46
  150. data/vendor/libgit2/src/filter.h +10 -0
  151. data/vendor/libgit2/src/fnmatch.c +248 -0
  152. data/vendor/libgit2/src/fnmatch.h +48 -0
  153. data/vendor/libgit2/src/global.c +63 -48
  154. data/vendor/libgit2/src/global.h +2 -0
  155. data/vendor/libgit2/src/hash.c +0 -61
  156. data/vendor/libgit2/src/hash.h +19 -20
  157. data/vendor/libgit2/src/hash/hash_collisiondetect.h +47 -0
  158. data/vendor/libgit2/src/hash/{sha1/common_crypto.c → hash_common_crypto.h} +17 -17
  159. data/vendor/libgit2/src/hash/{sha1/generic.c → hash_generic.c} +10 -22
  160. data/vendor/libgit2/src/hash/{sha1/generic.h → hash_generic.h} +10 -4
  161. data/vendor/libgit2/src/hash/hash_openssl.h +59 -0
  162. data/vendor/libgit2/src/hash/{sha1/win32.c → hash_win32.c} +37 -47
  163. data/vendor/libgit2/src/hash/{sha1/win32.h → hash_win32.h} +19 -6
  164. data/vendor/libgit2/src/hash/{sha1/sha1dc → sha1dc}/sha1.c +3 -14
  165. data/vendor/libgit2/src/hash/{sha1/sha1dc → sha1dc}/sha1.h +0 -0
  166. data/vendor/libgit2/src/hash/{sha1/sha1dc → sha1dc}/ubc_check.c +0 -0
  167. data/vendor/libgit2/src/hash/{sha1/sha1dc → sha1dc}/ubc_check.h +0 -0
  168. data/vendor/libgit2/src/hashsig.c +5 -5
  169. data/vendor/libgit2/src/idxmap.c +61 -107
  170. data/vendor/libgit2/src/idxmap.h +31 -153
  171. data/vendor/libgit2/src/ignore.c +47 -43
  172. data/vendor/libgit2/src/index.c +232 -337
  173. data/vendor/libgit2/src/index.h +1 -17
  174. data/vendor/libgit2/src/indexer.c +175 -346
  175. data/vendor/libgit2/src/integer.h +26 -71
  176. data/vendor/libgit2/src/iterator.c +70 -142
  177. data/vendor/libgit2/src/iterator.h +0 -15
  178. data/vendor/libgit2/src/khash.h +1 -3
  179. data/vendor/libgit2/src/map.h +1 -1
  180. data/vendor/libgit2/src/merge.c +100 -144
  181. data/vendor/libgit2/src/merge_driver.c +11 -11
  182. data/vendor/libgit2/src/merge_file.c +2 -2
  183. data/vendor/libgit2/src/mwindow.c +29 -24
  184. data/vendor/libgit2/src/mwindow.h +4 -4
  185. data/vendor/libgit2/src/netops.c +156 -55
  186. data/vendor/libgit2/src/netops.h +23 -3
  187. data/vendor/libgit2/src/notes.c +11 -16
  188. data/vendor/libgit2/src/object.c +69 -120
  189. data/vendor/libgit2/src/object.h +9 -22
  190. data/vendor/libgit2/src/object_api.c +8 -8
  191. data/vendor/libgit2/src/odb.c +93 -116
  192. data/vendor/libgit2/src/odb.h +7 -8
  193. data/vendor/libgit2/src/odb_loose.c +55 -62
  194. data/vendor/libgit2/src/odb_mempack.c +34 -21
  195. data/vendor/libgit2/src/odb_pack.c +14 -18
  196. data/vendor/libgit2/src/offmap.c +35 -53
  197. data/vendor/libgit2/src/offmap.h +21 -108
  198. data/vendor/libgit2/src/oid.c +7 -12
  199. data/vendor/libgit2/src/oidmap.c +47 -49
  200. data/vendor/libgit2/src/oidmap.h +24 -101
  201. data/vendor/libgit2/src/pack-objects.c +87 -88
  202. data/vendor/libgit2/src/pack-objects.h +8 -2
  203. data/vendor/libgit2/src/pack.c +101 -99
  204. data/vendor/libgit2/src/pack.h +19 -17
  205. data/vendor/libgit2/src/parse.c +0 -10
  206. data/vendor/libgit2/src/parse.h +3 -3
  207. data/vendor/libgit2/src/patch.c +4 -4
  208. data/vendor/libgit2/src/patch_generate.c +20 -20
  209. data/vendor/libgit2/src/patch_parse.c +63 -151
  210. data/vendor/libgit2/src/path.c +104 -117
  211. data/vendor/libgit2/src/path.h +71 -3
  212. data/vendor/libgit2/src/pathspec.c +19 -19
  213. data/vendor/libgit2/src/pool.c +22 -26
  214. data/vendor/libgit2/src/pool.h +7 -7
  215. data/vendor/libgit2/src/posix.c +10 -10
  216. data/vendor/libgit2/src/posix.h +1 -12
  217. data/vendor/libgit2/src/proxy.c +3 -8
  218. data/vendor/libgit2/src/push.c +31 -37
  219. data/vendor/libgit2/src/push.h +1 -2
  220. data/vendor/libgit2/src/rebase.c +59 -115
  221. data/vendor/libgit2/src/refdb.c +3 -15
  222. data/vendor/libgit2/src/refdb_fs.c +254 -381
  223. data/vendor/libgit2/src/reflog.c +15 -13
  224. data/vendor/libgit2/src/refs.c +88 -118
  225. data/vendor/libgit2/src/refs.h +3 -5
  226. data/vendor/libgit2/src/refspec.c +37 -56
  227. data/vendor/libgit2/src/refspec.h +1 -1
  228. data/vendor/libgit2/src/remote.c +215 -266
  229. data/vendor/libgit2/src/remote.h +2 -11
  230. data/vendor/libgit2/src/repository.c +225 -280
  231. data/vendor/libgit2/src/repository.h +40 -52
  232. data/vendor/libgit2/src/reset.c +8 -8
  233. data/vendor/libgit2/src/revert.c +9 -14
  234. data/vendor/libgit2/src/revparse.c +48 -47
  235. data/vendor/libgit2/src/revwalk.c +57 -120
  236. data/vendor/libgit2/src/revwalk.h +1 -22
  237. data/vendor/libgit2/src/settings.c +10 -47
  238. data/vendor/libgit2/src/signature.c +11 -11
  239. data/vendor/libgit2/src/sortedcache.c +36 -22
  240. data/vendor/libgit2/src/sortedcache.h +1 -1
  241. data/vendor/libgit2/src/stash.c +99 -125
  242. data/vendor/libgit2/src/status.c +22 -28
  243. data/vendor/libgit2/src/stream.h +2 -17
  244. data/vendor/libgit2/src/streams/curl.c +385 -0
  245. data/vendor/libgit2/src/{allocators/stdalloc.h → streams/curl.h} +5 -5
  246. data/vendor/libgit2/src/streams/openssl.c +114 -224
  247. data/vendor/libgit2/src/streams/openssl.h +108 -4
  248. data/vendor/libgit2/src/streams/socket.c +30 -55
  249. data/vendor/libgit2/src/streams/stransport.c +32 -57
  250. data/vendor/libgit2/src/streams/stransport.h +0 -5
  251. data/vendor/libgit2/src/streams/tls.c +19 -50
  252. data/vendor/libgit2/src/streams/tls.h +4 -12
  253. data/vendor/libgit2/src/strmap.c +74 -47
  254. data/vendor/libgit2/src/strmap.h +33 -108
  255. data/vendor/libgit2/src/submodule.c +216 -272
  256. data/vendor/libgit2/src/submodule.h +1 -1
  257. data/vendor/libgit2/src/sysdir.c +19 -29
  258. data/vendor/libgit2/src/tag.c +28 -41
  259. data/vendor/libgit2/src/tag.h +1 -2
  260. data/vendor/libgit2/src/trace.c +2 -2
  261. data/vendor/libgit2/src/trace.h +3 -3
  262. data/vendor/libgit2/src/trailer.c +38 -52
  263. data/vendor/libgit2/src/transaction.c +29 -30
  264. data/vendor/libgit2/src/transport.c +5 -5
  265. data/vendor/libgit2/src/transports/auth.c +11 -15
  266. data/vendor/libgit2/src/transports/auth.h +3 -10
  267. data/vendor/libgit2/src/transports/auth_negotiate.c +18 -33
  268. data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
  269. data/vendor/libgit2/src/transports/cred.c +24 -24
  270. data/vendor/libgit2/src/{allocators/win32_crtdbg.h → transports/cred.h} +4 -5
  271. data/vendor/libgit2/src/transports/git.c +31 -26
  272. data/vendor/libgit2/src/transports/http.c +348 -881
  273. data/vendor/libgit2/src/transports/http.h +0 -2
  274. data/vendor/libgit2/src/transports/local.c +35 -35
  275. data/vendor/libgit2/src/transports/smart.c +47 -70
  276. data/vendor/libgit2/src/transports/smart.h +4 -3
  277. data/vendor/libgit2/src/transports/smart_pkt.c +40 -43
  278. data/vendor/libgit2/src/transports/smart_protocol.c +116 -96
  279. data/vendor/libgit2/src/transports/ssh.c +66 -77
  280. data/vendor/libgit2/src/transports/winhttp.c +314 -318
  281. data/vendor/libgit2/src/tree-cache.c +12 -19
  282. data/vendor/libgit2/src/tree.c +142 -103
  283. data/vendor/libgit2/src/tree.h +12 -1
  284. data/vendor/libgit2/src/unix/map.c +3 -3
  285. data/vendor/libgit2/src/unix/posix.h +11 -1
  286. data/vendor/libgit2/src/userdiff.h +1 -3
  287. data/vendor/libgit2/src/util.c +56 -70
  288. data/vendor/libgit2/src/util.h +156 -28
  289. data/vendor/libgit2/src/vector.c +4 -4
  290. data/vendor/libgit2/src/win32/dir.c +3 -3
  291. data/vendor/libgit2/src/win32/findfile.c +3 -3
  292. data/vendor/libgit2/src/win32/map.c +11 -9
  293. data/vendor/libgit2/src/win32/msvc-compat.h +0 -6
  294. data/vendor/libgit2/src/win32/path_w32.c +9 -113
  295. data/vendor/libgit2/src/win32/path_w32.h +29 -18
  296. data/vendor/libgit2/src/win32/posix.h +4 -1
  297. data/vendor/libgit2/src/win32/posix_w32.c +45 -70
  298. data/vendor/libgit2/src/win32/precompiled.h +2 -0
  299. data/vendor/libgit2/src/win32/thread.c +10 -5
  300. data/vendor/libgit2/src/win32/w32_buffer.c +5 -9
  301. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +2 -3
  302. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +75 -26
  303. data/vendor/libgit2/src/win32/w32_stack.c +11 -6
  304. data/vendor/libgit2/src/win32/w32_stack.h +3 -3
  305. data/vendor/libgit2/src/win32/w32_util.c +64 -27
  306. data/vendor/libgit2/src/win32/w32_util.h +49 -5
  307. data/vendor/libgit2/src/worktree.c +60 -95
  308. data/vendor/libgit2/src/worktree.h +0 -2
  309. data/vendor/libgit2/src/xdiff/xdiffi.c +5 -7
  310. data/vendor/libgit2/src/xdiff/xhistogram.c +1 -1
  311. data/vendor/libgit2/src/xdiff/xmerge.c +15 -27
  312. data/vendor/libgit2/src/xdiff/xpatience.c +0 -3
  313. data/vendor/libgit2/src/zstream.c +4 -4
  314. metadata +33 -122
  315. data/vendor/libgit2/cmake/Modules/FindGSSFramework.cmake +0 -28
  316. data/vendor/libgit2/cmake/Modules/FindPCRE.cmake +0 -38
  317. data/vendor/libgit2/cmake/Modules/FindPCRE2.cmake +0 -37
  318. data/vendor/libgit2/cmake/Modules/FindmbedTLS.cmake +0 -93
  319. data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +0 -110
  320. data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +0 -53
  321. data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +0 -124
  322. data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +0 -66
  323. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +0 -21
  324. data/vendor/libgit2/deps/ntlmclient/compat.h +0 -33
  325. data/vendor/libgit2/deps/ntlmclient/crypt.h +0 -64
  326. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +0 -120
  327. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +0 -18
  328. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -145
  329. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +0 -18
  330. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +0 -130
  331. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +0 -21
  332. data/vendor/libgit2/deps/ntlmclient/ntlm.c +0 -1420
  333. data/vendor/libgit2/deps/ntlmclient/ntlm.h +0 -174
  334. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +0 -320
  335. data/vendor/libgit2/deps/ntlmclient/unicode.h +0 -36
  336. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +0 -445
  337. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +0 -201
  338. data/vendor/libgit2/deps/ntlmclient/utf8.h +0 -1257
  339. data/vendor/libgit2/deps/ntlmclient/util.c +0 -21
  340. data/vendor/libgit2/deps/ntlmclient/util.h +0 -14
  341. data/vendor/libgit2/deps/pcre/CMakeLists.txt +0 -140
  342. data/vendor/libgit2/deps/pcre/COPYING +0 -5
  343. data/vendor/libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS +0 -22
  344. data/vendor/libgit2/deps/pcre/cmake/FindEditline.cmake +0 -17
  345. data/vendor/libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake +0 -58
  346. data/vendor/libgit2/deps/pcre/cmake/FindReadline.cmake +0 -29
  347. data/vendor/libgit2/deps/pcre/config.h.in +0 -57
  348. data/vendor/libgit2/deps/pcre/pcre.h +0 -641
  349. data/vendor/libgit2/deps/pcre/pcre_byte_order.c +0 -319
  350. data/vendor/libgit2/deps/pcre/pcre_chartables.c +0 -198
  351. data/vendor/libgit2/deps/pcre/pcre_compile.c +0 -9800
  352. data/vendor/libgit2/deps/pcre/pcre_config.c +0 -190
  353. data/vendor/libgit2/deps/pcre/pcre_dfa_exec.c +0 -3676
  354. data/vendor/libgit2/deps/pcre/pcre_exec.c +0 -7173
  355. data/vendor/libgit2/deps/pcre/pcre_fullinfo.c +0 -245
  356. data/vendor/libgit2/deps/pcre/pcre_get.c +0 -669
  357. data/vendor/libgit2/deps/pcre/pcre_globals.c +0 -86
  358. data/vendor/libgit2/deps/pcre/pcre_internal.h +0 -2787
  359. data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +0 -11913
  360. data/vendor/libgit2/deps/pcre/pcre_maketables.c +0 -156
  361. data/vendor/libgit2/deps/pcre/pcre_newline.c +0 -210
  362. data/vendor/libgit2/deps/pcre/pcre_ord2utf8.c +0 -94
  363. data/vendor/libgit2/deps/pcre/pcre_printint.c +0 -834
  364. data/vendor/libgit2/deps/pcre/pcre_refcount.c +0 -92
  365. data/vendor/libgit2/deps/pcre/pcre_string_utils.c +0 -211
  366. data/vendor/libgit2/deps/pcre/pcre_study.c +0 -1686
  367. data/vendor/libgit2/deps/pcre/pcre_tables.c +0 -727
  368. data/vendor/libgit2/deps/pcre/pcre_ucd.c +0 -3644
  369. data/vendor/libgit2/deps/pcre/pcre_valid_utf8.c +0 -301
  370. data/vendor/libgit2/deps/pcre/pcre_version.c +0 -98
  371. data/vendor/libgit2/deps/pcre/pcre_xclass.c +0 -268
  372. data/vendor/libgit2/deps/pcre/pcreposix.c +0 -421
  373. data/vendor/libgit2/deps/pcre/pcreposix.h +0 -117
  374. data/vendor/libgit2/deps/pcre/ucp.h +0 -224
  375. data/vendor/libgit2/deps/winhttp/COPYING.GPL +0 -993
  376. data/vendor/libgit2/deps/winhttp/COPYING.LGPL +0 -502
  377. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  378. data/vendor/libgit2/include/git2/apply.h +0 -149
  379. data/vendor/libgit2/include/git2/cert.h +0 -135
  380. data/vendor/libgit2/include/git2/cred.h +0 -308
  381. data/vendor/libgit2/include/git2/deprecated.h +0 -493
  382. data/vendor/libgit2/include/git2/mailmap.h +0 -115
  383. data/vendor/libgit2/include/git2/sys/alloc.h +0 -101
  384. data/vendor/libgit2/include/git2/sys/cred.h +0 -90
  385. data/vendor/libgit2/include/git2/sys/path.h +0 -64
  386. data/vendor/libgit2/src/alloc.c +0 -43
  387. data/vendor/libgit2/src/alloc.h +0 -40
  388. data/vendor/libgit2/src/allocators/stdalloc.c +0 -119
  389. data/vendor/libgit2/src/allocators/win32_crtdbg.c +0 -118
  390. data/vendor/libgit2/src/config_backend.h +0 -96
  391. data/vendor/libgit2/src/config_entries.c +0 -229
  392. data/vendor/libgit2/src/config_entries.h +0 -24
  393. data/vendor/libgit2/src/config_mem.c +0 -220
  394. data/vendor/libgit2/src/config_snapshot.c +0 -206
  395. data/vendor/libgit2/src/errors.h +0 -81
  396. data/vendor/libgit2/src/hash/sha1.h +0 -38
  397. data/vendor/libgit2/src/hash/sha1/collisiondetect.c +0 -48
  398. data/vendor/libgit2/src/hash/sha1/collisiondetect.h +0 -19
  399. data/vendor/libgit2/src/hash/sha1/common_crypto.h +0 -19
  400. data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
  401. data/vendor/libgit2/src/hash/sha1/mbedtls.h +0 -19
  402. data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
  403. data/vendor/libgit2/src/hash/sha1/openssl.h +0 -19
  404. data/vendor/libgit2/src/mailmap.c +0 -485
  405. data/vendor/libgit2/src/mailmap.h +0 -35
  406. data/vendor/libgit2/src/net.c +0 -184
  407. data/vendor/libgit2/src/net.h +0 -36
  408. data/vendor/libgit2/src/reader.c +0 -265
  409. data/vendor/libgit2/src/reader.h +0 -107
  410. data/vendor/libgit2/src/regexp.c +0 -221
  411. data/vendor/libgit2/src/regexp.h +0 -97
  412. data/vendor/libgit2/src/streams/mbedtls.c +0 -483
  413. data/vendor/libgit2/src/streams/mbedtls.h +0 -23
  414. data/vendor/libgit2/src/streams/registry.c +0 -118
  415. data/vendor/libgit2/src/streams/registry.h +0 -19
  416. data/vendor/libgit2/src/transports/auth_ntlm.c +0 -223
  417. data/vendor/libgit2/src/transports/auth_ntlm.h +0 -35
  418. data/vendor/libgit2/src/wildmatch.c +0 -320
  419. data/vendor/libgit2/src/wildmatch.h +0 -23
  420. data/vendor/libgit2/src/win32/w32_common.h +0 -39
@@ -13,6 +13,8 @@
13
13
  #include <sys/types.h>
14
14
  #include <sys/stat.h>
15
15
 
16
+ #include <regex.h>
17
+
16
18
  #include <io.h>
17
19
  #include <direct.h>
18
20
  #ifdef GIT_THREADS
@@ -32,6 +32,8 @@ static DWORD WINAPI git_win32__threadproc(LPVOID lpParameter)
32
32
 
33
33
  thread->result = thread->proc(thread->param);
34
34
 
35
+ git__free_tls_data();
36
+
35
37
  return CLEAN_THREAD_EXIT;
36
38
  }
37
39
 
@@ -40,15 +42,15 @@ int git_threads_init(void)
40
42
  HMODULE hModule = GetModuleHandleW(L"kernel32");
41
43
 
42
44
  if (hModule) {
43
- win32_srwlock_initialize = (win32_srwlock_fn)(void *)
45
+ win32_srwlock_initialize = (win32_srwlock_fn)
44
46
  GetProcAddress(hModule, "InitializeSRWLock");
45
- win32_srwlock_acquire_shared = (win32_srwlock_fn)(void *)
47
+ win32_srwlock_acquire_shared = (win32_srwlock_fn)
46
48
  GetProcAddress(hModule, "AcquireSRWLockShared");
47
- win32_srwlock_release_shared = (win32_srwlock_fn)(void *)
49
+ win32_srwlock_release_shared = (win32_srwlock_fn)
48
50
  GetProcAddress(hModule, "ReleaseSRWLockShared");
49
- win32_srwlock_acquire_exclusive = (win32_srwlock_fn)(void *)
51
+ win32_srwlock_acquire_exclusive = (win32_srwlock_fn)
50
52
  GetProcAddress(hModule, "AcquireSRWLockExclusive");
51
- win32_srwlock_release_exclusive = (win32_srwlock_fn)(void *)
53
+ win32_srwlock_release_exclusive = (win32_srwlock_fn)
52
54
  GetProcAddress(hModule, "ReleaseSRWLockExclusive");
53
55
  }
54
56
 
@@ -101,6 +103,9 @@ void git_thread_exit(void *value)
101
103
  {
102
104
  assert(GIT_GLOBAL->current_thread);
103
105
  GIT_GLOBAL->current_thread->result = value;
106
+
107
+ git__free_tls_data();
108
+
104
109
  ExitThread(CLEAN_THREAD_EXIT);
105
110
  }
106
111
 
@@ -25,29 +25,25 @@ int git_buf_put_w(git_buf *buf, const wchar_t *string_w, size_t len_w)
25
25
  int utf8_len, utf8_write_len;
26
26
  size_t new_size;
27
27
 
28
- if (!len_w) {
28
+ if (!len_w)
29
29
  return 0;
30
- } else if (len_w > INT_MAX) {
31
- git_error_set_oom();
32
- return -1;
33
- }
34
30
 
35
31
  assert(string_w);
36
32
 
37
33
  /* Measure the string necessary for conversion */
38
- if ((utf8_len = WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, string_w, (int)len_w, NULL, 0, NULL, NULL)) == 0)
34
+ if ((utf8_len = WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, string_w, len_w, NULL, 0, NULL, NULL)) == 0)
39
35
  return 0;
40
36
 
41
37
  assert(utf8_len > 0);
42
38
 
43
- GIT_ERROR_CHECK_ALLOC_ADD(&new_size, buf->size, (size_t)utf8_len);
44
- GIT_ERROR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
39
+ GITERR_CHECK_ALLOC_ADD(&new_size, buf->size, (size_t)utf8_len);
40
+ GITERR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
45
41
 
46
42
  if (git_buf_grow(buf, new_size) < 0)
47
43
  return -1;
48
44
 
49
45
  if ((utf8_write_len = WideCharToMultiByte(
50
- CP_UTF8, WC_ERR_INVALID_CHARS, string_w, (int)len_w, &buf->ptr[buf->size], utf8_len, NULL, NULL)) == 0)
46
+ CP_UTF8, WC_ERR_INVALID_CHARS, string_w, len_w, &buf->ptr[buf->size], utf8_len, NULL, NULL)) == 0)
51
47
  return handle_wc_error();
52
48
 
53
49
  assert(utf8_write_len == utf8_len);
@@ -254,11 +254,11 @@ int git_win32__crtdbg_stacktrace__dump(
254
254
  bool b_quiet = IS_BIT_SET(opt, GIT_WIN32__CRTDBG_STACKTRACE__QUIET);
255
255
 
256
256
  if (b_leaks_since_mark && b_leaks_total) {
257
- git_error_set(GIT_ERROR_INVALID, "cannot combine LEAKS_SINCE_MARK and LEAKS_TOTAL.");
257
+ giterr_set(GITERR_INVALID, "cannot combine LEAKS_SINCE_MARK and LEAKS_TOTAL.");
258
258
  return GIT_ERROR;
259
259
  }
260
260
  if (!b_set_mark && !b_leaks_since_mark && !b_leaks_total) {
261
- git_error_set(GIT_ERROR_INVALID, "nothing to do.");
261
+ giterr_set(GITERR_INVALID, "nothing to do.");
262
262
  return GIT_ERROR;
263
263
  }
264
264
 
@@ -341,5 +341,4 @@ const char *git_win32__crtdbg_stacktrace(int skip, const char *file)
341
341
 
342
342
  return result;
343
343
  }
344
-
345
344
  #endif
@@ -17,32 +17,6 @@
17
17
  #include "git2/errors.h"
18
18
  #include "strnlen.h"
19
19
 
20
- /* MSVC CRTDBG memory leak reporting.
21
- *
22
- * We DO NOT use the "_CRTDBG_MAP_ALLOC" macro described in the MSVC
23
- * documentation because all allocs/frees in libgit2 already go through
24
- * the "git__" routines defined in this file. Simply using the normal
25
- * reporting mechanism causes all leaks to be attributed to a routine
26
- * here in util.h (ie, the actual call to calloc()) rather than the
27
- * caller of git__calloc().
28
- *
29
- * Therefore, we declare a set of "git__crtdbg__" routines to replace
30
- * the corresponding "git__" routines and re-define the "git__" symbols
31
- * as macros. This allows us to get and report the file:line info of
32
- * the real caller.
33
- *
34
- * We DO NOT replace the "git__free" routine because it needs to remain
35
- * a function pointer because it is used as a function argument when
36
- * setting up various structure "destructors".
37
- *
38
- * We also DO NOT use the "_CRTDBG_MAP_ALLOC" macro because it causes
39
- * "free" to be remapped to "_free_dbg" and this causes problems for
40
- * structures which define a field named "free".
41
- *
42
- * Finally, CRTDBG must be explicitly enabled and configured at program
43
- * startup. See tests/main.c for an example.
44
- */
45
-
46
20
  /**
47
21
  * Initialize our memory leak tracking and de-dup data structures.
48
22
  * This should ONLY be called by git_libgit2_init().
@@ -123,5 +97,80 @@ GIT_EXTERN(int) git_win32__crtdbg_stacktrace__dump(
123
97
  */
124
98
  const char *git_win32__crtdbg_stacktrace(int skip, const char *file);
125
99
 
100
+ GIT_INLINE(void *) git__crtdbg__malloc(size_t len, const char *file, int line)
101
+ {
102
+ void *ptr = _malloc_dbg(len, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
103
+ if (!ptr) giterr_set_oom();
104
+ return ptr;
105
+ }
106
+
107
+ GIT_INLINE(void *) git__crtdbg__calloc(size_t nelem, size_t elsize, const char *file, int line)
108
+ {
109
+ void *ptr = _calloc_dbg(nelem, elsize, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
110
+ if (!ptr) giterr_set_oom();
111
+ return ptr;
112
+ }
113
+
114
+ GIT_INLINE(char *) git__crtdbg__strdup(const char *str, const char *file, int line)
115
+ {
116
+ char *ptr = _strdup_dbg(str, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
117
+ if (!ptr) giterr_set_oom();
118
+ return ptr;
119
+ }
120
+
121
+ GIT_INLINE(char *) git__crtdbg__strndup(const char *str, size_t n, const char *file, int line)
122
+ {
123
+ size_t length = 0, alloclength;
124
+ char *ptr;
125
+
126
+ length = p_strnlen(str, n);
127
+
128
+ if (GIT_ADD_SIZET_OVERFLOW(&alloclength, length, 1) ||
129
+ !(ptr = git__crtdbg__malloc(alloclength, file, line)))
130
+ return NULL;
131
+
132
+ if (length)
133
+ memcpy(ptr, str, length);
134
+
135
+ ptr[length] = '\0';
136
+
137
+ return ptr;
138
+ }
139
+
140
+ GIT_INLINE(char *) git__crtdbg__substrdup(const char *start, size_t n, const char *file, int line)
141
+ {
142
+ char *ptr;
143
+ size_t alloclen;
144
+
145
+ if (GIT_ADD_SIZET_OVERFLOW(&alloclen, n, 1) ||
146
+ !(ptr = git__crtdbg__malloc(alloclen, file, line)))
147
+ return NULL;
148
+
149
+ memcpy(ptr, start, n);
150
+ ptr[n] = '\0';
151
+ return ptr;
152
+ }
153
+
154
+ GIT_INLINE(void *) git__crtdbg__realloc(void *ptr, size_t size, const char *file, int line)
155
+ {
156
+ void *new_ptr = _realloc_dbg(ptr, size, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
157
+ if (!new_ptr) giterr_set_oom();
158
+ return new_ptr;
159
+ }
160
+
161
+ GIT_INLINE(void *) git__crtdbg__reallocarray(void *ptr, size_t nelem, size_t elsize, const char *file, int line)
162
+ {
163
+ size_t newsize;
164
+
165
+ return GIT_MULTIPLY_SIZET_OVERFLOW(&newsize, nelem, elsize) ?
166
+ NULL : _realloc_dbg(ptr, newsize, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
167
+ }
168
+
169
+ GIT_INLINE(void *) git__crtdbg__mallocarray(size_t nelem, size_t elsize, const char *file, int line)
170
+ {
171
+ return git__crtdbg__reallocarray(NULL, nelem, elsize, file, line);
172
+ }
173
+
174
+
126
175
  #endif
127
176
  #endif
@@ -13,6 +13,11 @@
13
13
  #include "win32/posix.h"
14
14
  #include "hash.h"
15
15
 
16
+ /**
17
+ * This is supposedly defined in WinBase.h (from Windows.h) but there were linker issues.
18
+ */
19
+ USHORT WINAPI RtlCaptureStackBackTrace(ULONG, ULONG, PVOID*, PULONG);
20
+
16
21
  static bool g_win32_stack_initialized = false;
17
22
  static HANDLE g_win32_stack_process = INVALID_HANDLE_VALUE;
18
23
  static git_win32__stack__aux_cb_alloc g_aux_cb_alloc = NULL;
@@ -50,7 +55,7 @@ void git_win32__stack_cleanup(void)
50
55
  int git_win32__stack_capture(git_win32__stack__raw_data *pdata, int skip)
51
56
  {
52
57
  if (!g_win32_stack_initialized) {
53
- git_error_set(GIT_ERROR_INVALID, "git_win32_stack not initialized.");
58
+ giterr_set(GITERR_INVALID, "git_win32_stack not initialized.");
54
59
  return GIT_ERROR;
55
60
  }
56
61
 
@@ -76,7 +81,7 @@ int git_win32__stack_compare(
76
81
  }
77
82
 
78
83
  int git_win32__stack_format(
79
- char *pbuf, size_t buf_len,
84
+ char *pbuf, int buf_len,
80
85
  const git_win32__stack__raw_data *pdata,
81
86
  const char *prefix, const char *suffix)
82
87
  {
@@ -91,13 +96,13 @@ int git_win32__stack_format(
91
96
  } s;
92
97
 
93
98
  IMAGEHLP_LINE64 line;
94
- size_t buf_used = 0;
99
+ int buf_used = 0;
95
100
  unsigned int k;
96
101
  char detail[MY_MAX_FILENAME * 2]; /* filename plus space for function name and formatting */
97
- size_t detail_len;
102
+ int detail_len;
98
103
 
99
104
  if (!g_win32_stack_initialized) {
100
- git_error_set(GIT_ERROR_INVALID, "git_win32_stack not initialized.");
105
+ giterr_set(GITERR_INVALID, "git_win32_stack not initialized.");
101
106
  return GIT_ERROR;
102
107
  }
103
108
 
@@ -171,7 +176,7 @@ int git_win32__stack_format(
171
176
  }
172
177
 
173
178
  int git_win32__stack(
174
- char * pbuf, size_t buf_len,
179
+ char * pbuf, int buf_len,
175
180
  int skip,
176
181
  const char *prefix, const char *suffix)
177
182
  {
@@ -38,7 +38,7 @@ typedef void (*git_win32__stack__aux_cb_alloc)(unsigned int *aux_id);
38
38
  * @param aux_msg A buffer where a formatted message should be written.
39
39
  * @param aux_msg_len The size of the buffer.
40
40
  */
41
- typedef void (*git_win32__stack__aux_cb_lookup)(unsigned int aux_id, char *aux_msg, size_t aux_msg_len);
41
+ typedef void (*git_win32__stack__aux_cb_lookup)(unsigned int aux_id, char *aux_msg, unsigned int aux_msg_len);
42
42
 
43
43
  /**
44
44
  * Register an "aux" data provider to augment our C stacktrace data.
@@ -116,7 +116,7 @@ int git_win32__stack_compare(
116
116
  * @param suffix String written after each frame; defaults to "\n".
117
117
  */
118
118
  int git_win32__stack_format(
119
- char *pbuf, size_t buf_len,
119
+ char *pbuf, int buf_len,
120
120
  const git_win32__stack__raw_data *pdata,
121
121
  const char *prefix, const char *suffix);
122
122
 
@@ -132,7 +132,7 @@ int git_win32__stack_format(
132
132
  * @param suffix String written after each frame; defaults to "\n".
133
133
  */
134
134
  int git_win32__stack(
135
- char * pbuf, size_t buf_len,
135
+ char * pbuf, int buf_len,
136
136
  int skip,
137
137
  const char *prefix, const char *suffix);
138
138
 
@@ -68,7 +68,7 @@ int git_win32__set_hidden(const char *path, bool hidden)
68
68
  newattrs = attrs & ~FILE_ATTRIBUTE_HIDDEN;
69
69
 
70
70
  if (attrs != newattrs && !SetFileAttributesW(buf, newattrs)) {
71
- git_error_set(GIT_ERROR_OS, "failed to %s hidden bit for '%s'",
71
+ giterr_set(GITERR_OS, "failed to %s hidden bit for '%s'",
72
72
  hidden ? "set" : "unset", path);
73
73
  return -1;
74
74
  }
@@ -94,33 +94,70 @@ int git_win32__hidden(bool *out, const char *path)
94
94
  return 0;
95
95
  }
96
96
 
97
- int git_win32__file_attribute_to_stat(
98
- struct stat *st,
99
- const WIN32_FILE_ATTRIBUTE_DATA *attrdata,
100
- const wchar_t *path)
97
+ /**
98
+ * Removes any trailing backslashes from a path, except in the case of a drive
99
+ * letter path (C:\, D:\, etc.). This function cannot fail.
100
+ *
101
+ * @param path The path which should be trimmed.
102
+ * @return The length of the modified string (<= the input length)
103
+ */
104
+ size_t git_win32__path_trim_end(wchar_t *str, size_t len)
101
105
  {
102
- git_win32__stat_init(st,
103
- attrdata->dwFileAttributes,
104
- attrdata->nFileSizeHigh,
105
- attrdata->nFileSizeLow,
106
- attrdata->ftCreationTime,
107
- attrdata->ftLastAccessTime,
108
- attrdata->ftLastWriteTime);
109
-
110
- if (attrdata->dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT && path) {
111
- git_win32_path target;
112
-
113
- if (git_win32_path_readlink_w(target, path) >= 0) {
114
- st->st_mode = (st->st_mode & ~S_IFMT) | S_IFLNK;
115
-
116
- /* st_size gets the UTF-8 length of the target name, in bytes,
117
- * not counting the NULL terminator */
118
- if ((st->st_size = git__utf16_to_8(NULL, 0, target)) < 0) {
119
- git_error_set(GIT_ERROR_OS, "could not convert reparse point name for '%ls'", path);
120
- return -1;
121
- }
122
- }
106
+ while (1) {
107
+ if (!len || str[len - 1] != L'\\')
108
+ break;
109
+
110
+ /* Don't trim backslashes from drive letter paths, which
111
+ * are 3 characters long and of the form C:\, D:\, etc. */
112
+ if (len == 3 && git_win32__isalpha(str[0]) && str[1] == ':')
113
+ break;
114
+
115
+ len--;
123
116
  }
124
117
 
125
- return 0;
118
+ str[len] = L'\0';
119
+
120
+ return len;
121
+ }
122
+
123
+ /**
124
+ * Removes any of the following namespace prefixes from a path,
125
+ * if found: "\??\", "\\?\", "\\?\UNC\". This function cannot fail.
126
+ *
127
+ * @param path The path which should be converted.
128
+ * @return The length of the modified string (<= the input length)
129
+ */
130
+ size_t git_win32__canonicalize_path(wchar_t *str, size_t len)
131
+ {
132
+ static const wchar_t dosdevices_prefix[] = L"\\\?\?\\";
133
+ static const wchar_t nt_prefix[] = L"\\\\?\\";
134
+ static const wchar_t unc_prefix[] = L"UNC\\";
135
+ size_t to_advance = 0;
136
+
137
+ /* "\??\" -- DOS Devices prefix */
138
+ if (len >= CONST_STRLEN(dosdevices_prefix) &&
139
+ !wcsncmp(str, dosdevices_prefix, CONST_STRLEN(dosdevices_prefix))) {
140
+ to_advance += CONST_STRLEN(dosdevices_prefix);
141
+ len -= CONST_STRLEN(dosdevices_prefix);
142
+ }
143
+ /* "\\?\" -- NT namespace prefix */
144
+ else if (len >= CONST_STRLEN(nt_prefix) &&
145
+ !wcsncmp(str, nt_prefix, CONST_STRLEN(nt_prefix))) {
146
+ to_advance += CONST_STRLEN(nt_prefix);
147
+ len -= CONST_STRLEN(nt_prefix);
148
+ }
149
+
150
+ /* "\??\UNC\", "\\?\UNC\" -- UNC prefix */
151
+ if (to_advance && len >= CONST_STRLEN(unc_prefix) &&
152
+ !wcsncmp(str + to_advance, unc_prefix, CONST_STRLEN(unc_prefix))) {
153
+ to_advance += CONST_STRLEN(unc_prefix);
154
+ len -= CONST_STRLEN(unc_prefix);
155
+ }
156
+
157
+ if (to_advance) {
158
+ memmove(str, str + to_advance, len * sizeof(wchar_t));
159
+ str[len] = L'\0';
160
+ }
161
+
162
+ return git_win32__path_trim_end(str, len);
126
163
  }
@@ -59,10 +59,23 @@ extern int git_win32__set_hidden(const char *path, bool hidden);
59
59
  */
60
60
  extern int git_win32__hidden(bool *hidden, const char *path);
61
61
 
62
- extern int git_win32__file_attribute_to_stat(
63
- struct stat *st,
64
- const WIN32_FILE_ATTRIBUTE_DATA *attrdata,
65
- const wchar_t *path);
62
+ /**
63
+ * Removes any trailing backslashes from a path, except in the case of a drive
64
+ * letter path (C:\, D:\, etc.). This function cannot fail.
65
+ *
66
+ * @param path The path which should be trimmed.
67
+ * @return The length of the modified string (<= the input length)
68
+ */
69
+ size_t git_win32__path_trim_end(wchar_t *str, size_t len);
70
+
71
+ /**
72
+ * Removes any of the following namespace prefixes from a path,
73
+ * if found: "\??\", "\\?\", "\\?\UNC\". This function cannot fail.
74
+ *
75
+ * @param path The path which should be converted.
76
+ * @return The length of the modified string (<= the input length)
77
+ */
78
+ size_t git_win32__canonicalize_path(wchar_t *str, size_t len);
66
79
 
67
80
  /**
68
81
  * Converts a FILETIME structure to a struct timespec.
@@ -120,7 +133,7 @@ GIT_INLINE(void) git_win32__stat_init(
120
133
  st->st_uid = 0;
121
134
  st->st_nlink = 1;
122
135
  st->st_mode = mode;
123
- st->st_size = ((int64_t)nFileSizeHigh << 32) + nFileSizeLow;
136
+ st->st_size = ((git_off_t)nFileSizeHigh << 32) + nFileSizeLow;
124
137
  st->st_dev = _getdrive() - 1;
125
138
  st->st_rdev = st->st_dev;
126
139
  git_win32__filetime_to_timespec(&ftLastAccessTime, &(st->st_atim));
@@ -141,4 +154,35 @@ GIT_INLINE(void) git_win32__file_information_to_stat(
141
154
  fileinfo->ftLastWriteTime);
142
155
  }
143
156
 
157
+ GIT_INLINE(int) git_win32__file_attribute_to_stat(
158
+ struct stat *st,
159
+ const WIN32_FILE_ATTRIBUTE_DATA *attrdata,
160
+ const wchar_t *path)
161
+ {
162
+ git_win32__stat_init(st,
163
+ attrdata->dwFileAttributes,
164
+ attrdata->nFileSizeHigh,
165
+ attrdata->nFileSizeLow,
166
+ attrdata->ftCreationTime,
167
+ attrdata->ftLastAccessTime,
168
+ attrdata->ftLastWriteTime);
169
+
170
+ if (attrdata->dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT && path) {
171
+ git_win32_path target;
172
+
173
+ if (git_win32_path_readlink_w(target, path) >= 0) {
174
+ st->st_mode = (st->st_mode & ~S_IFMT) | S_IFLNK;
175
+
176
+ /* st_size gets the UTF-8 length of the target name, in bytes,
177
+ * not counting the NULL terminator */
178
+ if ((st->st_size = git__utf16_to_8(NULL, 0, target)) < 0) {
179
+ giterr_set(GITERR_OS, "could not convert reparse point name for '%ls'", path);
180
+ return -1;
181
+ }
182
+ }
183
+ }
184
+
185
+ return 0;
186
+ }
187
+
144
188
  #endif