rugged 0.28.4.1 → 1.0.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 (391) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/ext/rugged/extconf.rb +3 -1
  4. data/ext/rugged/rugged.c +35 -31
  5. data/ext/rugged/rugged.h +13 -0
  6. data/ext/rugged/rugged_blob.c +11 -9
  7. data/ext/rugged/rugged_commit.c +17 -15
  8. data/ext/rugged/rugged_config.c +1 -1
  9. data/ext/rugged/rugged_diff.c +4 -26
  10. data/ext/rugged/rugged_index.c +4 -2
  11. data/ext/rugged/rugged_note.c +5 -3
  12. data/ext/rugged/rugged_object.c +57 -10
  13. data/ext/rugged/rugged_rebase.c +3 -1
  14. data/ext/rugged/rugged_remote.c +32 -8
  15. data/ext/rugged/rugged_repo.c +232 -17
  16. data/ext/rugged/rugged_tag.c +8 -6
  17. data/ext/rugged/rugged_tree.c +18 -16
  18. data/lib/rugged/commit.rb +1 -2
  19. data/lib/rugged/repository.rb +5 -6
  20. data/lib/rugged/submodule_collection.rb +4 -4
  21. data/lib/rugged/version.rb +1 -1
  22. data/vendor/libgit2/AUTHORS +1 -0
  23. data/vendor/libgit2/CMakeLists.txt +39 -19
  24. data/vendor/libgit2/COPYING +28 -0
  25. data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +5 -1
  26. data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +2 -2
  27. data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +1 -1
  28. data/vendor/libgit2/cmake/Modules/FindGSSFramework.cmake +28 -0
  29. data/vendor/libgit2/cmake/Modules/FindPCRE.cmake +38 -0
  30. data/vendor/libgit2/cmake/Modules/FindPCRE2.cmake +37 -0
  31. data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +2 -2
  32. data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +6 -0
  33. data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +77 -0
  34. data/vendor/libgit2/cmake/Modules/SanitizeBool.cmake +20 -0
  35. data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +56 -0
  36. data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +127 -0
  37. data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +69 -0
  38. data/vendor/libgit2/deps/http-parser/http_parser.c +11 -6
  39. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +23 -0
  40. data/vendor/libgit2/deps/ntlmclient/compat.h +55 -0
  41. data/vendor/libgit2/deps/ntlmclient/crypt.h +64 -0
  42. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +120 -0
  43. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +18 -0
  44. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +145 -0
  45. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +18 -0
  46. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +130 -0
  47. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +21 -0
  48. data/vendor/libgit2/deps/ntlmclient/ntlm.c +1422 -0
  49. data/vendor/libgit2/deps/ntlmclient/ntlm.h +174 -0
  50. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +320 -0
  51. data/vendor/libgit2/deps/ntlmclient/unicode.h +36 -0
  52. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +445 -0
  53. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +201 -0
  54. data/vendor/libgit2/deps/ntlmclient/utf8.h +1257 -0
  55. data/vendor/libgit2/deps/ntlmclient/util.c +21 -0
  56. data/vendor/libgit2/deps/ntlmclient/util.h +14 -0
  57. data/vendor/libgit2/deps/pcre/CMakeLists.txt +140 -0
  58. data/vendor/libgit2/deps/pcre/COPYING +5 -0
  59. data/vendor/libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS +22 -0
  60. data/vendor/libgit2/deps/pcre/cmake/FindEditline.cmake +17 -0
  61. data/vendor/libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake +58 -0
  62. data/vendor/libgit2/deps/pcre/cmake/FindReadline.cmake +29 -0
  63. data/vendor/libgit2/deps/pcre/config.h.in +57 -0
  64. data/vendor/libgit2/deps/pcre/pcre.h +641 -0
  65. data/vendor/libgit2/deps/pcre/pcre_byte_order.c +319 -0
  66. data/vendor/libgit2/deps/pcre/pcre_chartables.c +198 -0
  67. data/vendor/libgit2/deps/pcre/pcre_compile.c +9800 -0
  68. data/vendor/libgit2/deps/pcre/pcre_config.c +190 -0
  69. data/vendor/libgit2/deps/pcre/pcre_dfa_exec.c +3676 -0
  70. data/vendor/libgit2/deps/pcre/pcre_exec.c +7173 -0
  71. data/vendor/libgit2/deps/pcre/pcre_fullinfo.c +245 -0
  72. data/vendor/libgit2/deps/pcre/pcre_get.c +669 -0
  73. data/vendor/libgit2/deps/pcre/pcre_globals.c +86 -0
  74. data/vendor/libgit2/deps/pcre/pcre_internal.h +2787 -0
  75. data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +11913 -0
  76. data/vendor/libgit2/deps/pcre/pcre_maketables.c +156 -0
  77. data/vendor/libgit2/deps/pcre/pcre_newline.c +210 -0
  78. data/vendor/libgit2/deps/pcre/pcre_ord2utf8.c +94 -0
  79. data/vendor/libgit2/deps/pcre/pcre_printint.c +834 -0
  80. data/vendor/libgit2/deps/pcre/pcre_refcount.c +92 -0
  81. data/vendor/libgit2/deps/pcre/pcre_string_utils.c +211 -0
  82. data/vendor/libgit2/deps/pcre/pcre_study.c +1686 -0
  83. data/vendor/libgit2/deps/pcre/pcre_tables.c +727 -0
  84. data/vendor/libgit2/deps/pcre/pcre_ucd.c +3644 -0
  85. data/vendor/libgit2/deps/pcre/pcre_valid_utf8.c +301 -0
  86. data/vendor/libgit2/deps/pcre/pcre_version.c +98 -0
  87. data/vendor/libgit2/deps/pcre/pcre_xclass.c +268 -0
  88. data/vendor/libgit2/deps/pcre/pcreposix.c +421 -0
  89. data/vendor/libgit2/deps/pcre/pcreposix.h +117 -0
  90. data/vendor/libgit2/deps/pcre/ucp.h +224 -0
  91. data/vendor/libgit2/deps/zlib/adler32.c +0 -7
  92. data/vendor/libgit2/deps/zlib/crc32.c +0 -7
  93. data/vendor/libgit2/include/git2.h +2 -0
  94. data/vendor/libgit2/include/git2/apply.h +22 -2
  95. data/vendor/libgit2/include/git2/attr.h +23 -13
  96. data/vendor/libgit2/include/git2/blame.h +2 -2
  97. data/vendor/libgit2/include/git2/blob.h +44 -12
  98. data/vendor/libgit2/include/git2/branch.h +74 -57
  99. data/vendor/libgit2/include/git2/buffer.h +20 -14
  100. data/vendor/libgit2/include/git2/cert.h +135 -0
  101. data/vendor/libgit2/include/git2/checkout.h +46 -14
  102. data/vendor/libgit2/include/git2/cherrypick.h +3 -3
  103. data/vendor/libgit2/include/git2/clone.h +2 -2
  104. data/vendor/libgit2/include/git2/commit.h +23 -1
  105. data/vendor/libgit2/include/git2/common.h +15 -6
  106. data/vendor/libgit2/include/git2/config.h +12 -12
  107. data/vendor/libgit2/include/git2/cred_helpers.h +4 -42
  108. data/vendor/libgit2/include/git2/credential.h +314 -0
  109. data/vendor/libgit2/include/git2/credential_helpers.h +52 -0
  110. data/vendor/libgit2/include/git2/deprecated.h +321 -3
  111. data/vendor/libgit2/include/git2/describe.h +4 -4
  112. data/vendor/libgit2/include/git2/diff.h +16 -14
  113. data/vendor/libgit2/include/git2/errors.h +4 -2
  114. data/vendor/libgit2/include/git2/filter.h +8 -0
  115. data/vendor/libgit2/include/git2/index.h +2 -1
  116. data/vendor/libgit2/include/git2/indexer.h +48 -4
  117. data/vendor/libgit2/include/git2/merge.h +6 -10
  118. data/vendor/libgit2/include/git2/net.h +0 -5
  119. data/vendor/libgit2/include/git2/object.h +2 -14
  120. data/vendor/libgit2/include/git2/odb.h +3 -2
  121. data/vendor/libgit2/include/git2/odb_backend.h +5 -4
  122. data/vendor/libgit2/include/git2/oid.h +11 -6
  123. data/vendor/libgit2/include/git2/pack.h +12 -1
  124. data/vendor/libgit2/include/git2/proxy.h +6 -4
  125. data/vendor/libgit2/include/git2/rebase.h +46 -2
  126. data/vendor/libgit2/include/git2/refs.h +19 -0
  127. data/vendor/libgit2/include/git2/remote.h +40 -15
  128. data/vendor/libgit2/include/git2/repository.h +29 -6
  129. data/vendor/libgit2/include/git2/revert.h +1 -1
  130. data/vendor/libgit2/include/git2/revwalk.h +7 -3
  131. data/vendor/libgit2/include/git2/stash.h +4 -4
  132. data/vendor/libgit2/include/git2/status.h +25 -16
  133. data/vendor/libgit2/include/git2/submodule.h +20 -3
  134. data/vendor/libgit2/include/git2/sys/alloc.h +9 -9
  135. data/vendor/libgit2/include/git2/sys/cred.h +15 -0
  136. data/vendor/libgit2/include/git2/sys/credential.h +90 -0
  137. data/vendor/libgit2/include/git2/sys/index.h +4 -2
  138. data/vendor/libgit2/include/git2/sys/mempack.h +2 -1
  139. data/vendor/libgit2/include/git2/sys/merge.h +1 -1
  140. data/vendor/libgit2/include/git2/sys/odb_backend.h +48 -4
  141. data/vendor/libgit2/include/git2/sys/refdb_backend.h +164 -21
  142. data/vendor/libgit2/include/git2/sys/repository.h +17 -6
  143. data/vendor/libgit2/include/git2/sys/transport.h +4 -4
  144. data/vendor/libgit2/include/git2/tag.h +11 -2
  145. data/vendor/libgit2/include/git2/trace.h +2 -2
  146. data/vendor/libgit2/include/git2/transport.h +11 -340
  147. data/vendor/libgit2/include/git2/tree.h +5 -3
  148. data/vendor/libgit2/include/git2/types.h +4 -89
  149. data/vendor/libgit2/include/git2/version.h +5 -5
  150. data/vendor/libgit2/include/git2/worktree.h +5 -5
  151. data/vendor/libgit2/src/CMakeLists.txt +99 -236
  152. data/vendor/libgit2/src/alloc.c +2 -14
  153. data/vendor/libgit2/src/{stdalloc.c → allocators/stdalloc.c} +3 -4
  154. data/vendor/libgit2/src/{stdalloc.h → allocators/stdalloc.h} +4 -4
  155. data/vendor/libgit2/src/allocators/win32_crtdbg.c +118 -0
  156. data/vendor/libgit2/src/{transports/cred.h → allocators/win32_crtdbg.h} +5 -4
  157. data/vendor/libgit2/src/apply.c +60 -30
  158. data/vendor/libgit2/src/attr.c +70 -64
  159. data/vendor/libgit2/src/attr_file.c +189 -96
  160. data/vendor/libgit2/src/attr_file.h +9 -9
  161. data/vendor/libgit2/src/attrcache.c +48 -48
  162. data/vendor/libgit2/src/attrcache.h +2 -1
  163. data/vendor/libgit2/src/blame.c +17 -5
  164. data/vendor/libgit2/src/blame.h +1 -1
  165. data/vendor/libgit2/src/blame_git.c +21 -7
  166. data/vendor/libgit2/src/blob.c +81 -17
  167. data/vendor/libgit2/src/blob.h +2 -2
  168. data/vendor/libgit2/src/branch.c +60 -32
  169. data/vendor/libgit2/src/buffer.c +19 -7
  170. data/vendor/libgit2/src/buffer.h +1 -0
  171. data/vendor/libgit2/src/cache.c +33 -36
  172. data/vendor/libgit2/src/cache.h +1 -1
  173. data/vendor/libgit2/src/cc-compat.h +5 -0
  174. data/vendor/libgit2/src/checkout.c +26 -16
  175. data/vendor/libgit2/src/cherrypick.c +9 -3
  176. data/vendor/libgit2/src/clone.c +29 -7
  177. data/vendor/libgit2/src/clone.h +4 -0
  178. data/vendor/libgit2/src/commit.c +70 -22
  179. data/vendor/libgit2/src/commit.h +6 -0
  180. data/vendor/libgit2/src/commit_list.c +28 -76
  181. data/vendor/libgit2/src/commit_list.h +2 -2
  182. data/vendor/libgit2/src/common.h +3 -75
  183. data/vendor/libgit2/src/config.c +31 -40
  184. data/vendor/libgit2/src/config.h +7 -6
  185. data/vendor/libgit2/src/config_backend.h +12 -0
  186. data/vendor/libgit2/src/config_cache.c +39 -39
  187. data/vendor/libgit2/src/config_entries.c +69 -99
  188. data/vendor/libgit2/src/config_entries.h +1 -0
  189. data/vendor/libgit2/src/config_file.c +346 -380
  190. data/vendor/libgit2/src/config_mem.c +12 -16
  191. data/vendor/libgit2/src/config_parse.c +49 -29
  192. data/vendor/libgit2/src/config_parse.h +13 -12
  193. data/vendor/libgit2/src/config_snapshot.c +206 -0
  194. data/vendor/libgit2/src/crlf.c +14 -14
  195. data/vendor/libgit2/src/describe.c +21 -20
  196. data/vendor/libgit2/src/diff.c +43 -58
  197. data/vendor/libgit2/src/diff.h +4 -3
  198. data/vendor/libgit2/src/diff_driver.c +37 -38
  199. data/vendor/libgit2/src/diff_file.c +12 -10
  200. data/vendor/libgit2/src/diff_file.h +2 -2
  201. data/vendor/libgit2/src/diff_generate.c +148 -98
  202. data/vendor/libgit2/src/diff_generate.h +2 -2
  203. data/vendor/libgit2/src/diff_parse.c +1 -1
  204. data/vendor/libgit2/src/diff_print.c +25 -13
  205. data/vendor/libgit2/src/diff_stats.c +1 -1
  206. data/vendor/libgit2/src/diff_tform.c +11 -11
  207. data/vendor/libgit2/src/errors.c +21 -25
  208. data/vendor/libgit2/src/errors.h +81 -0
  209. data/vendor/libgit2/src/features.h.in +9 -2
  210. data/vendor/libgit2/src/fetch.c +7 -2
  211. data/vendor/libgit2/src/fetchhead.c +36 -4
  212. data/vendor/libgit2/src/filebuf.c +6 -10
  213. data/vendor/libgit2/src/filebuf.h +2 -2
  214. data/vendor/libgit2/src/filter.c +16 -8
  215. data/vendor/libgit2/src/{fileops.c → futils.c} +21 -17
  216. data/vendor/libgit2/src/{fileops.h → futils.h} +5 -5
  217. data/vendor/libgit2/src/global.c +12 -40
  218. data/vendor/libgit2/src/global.h +0 -2
  219. data/vendor/libgit2/src/hash.c +61 -0
  220. data/vendor/libgit2/src/hash.h +19 -21
  221. data/vendor/libgit2/src/hash/sha1.h +38 -0
  222. data/vendor/libgit2/src/hash/{hash_collisiondetect.h → sha1/collisiondetect.c} +14 -17
  223. data/vendor/libgit2/src/{sha1_lookup.h → hash/sha1/collisiondetect.h} +8 -8
  224. data/vendor/libgit2/src/hash/{hash_common_crypto.h → sha1/common_crypto.c} +15 -19
  225. data/vendor/libgit2/src/hash/sha1/common_crypto.h +19 -0
  226. data/vendor/libgit2/src/hash/{hash_generic.c → sha1/generic.c} +22 -10
  227. data/vendor/libgit2/src/hash/{hash_generic.h → sha1/generic.h} +4 -14
  228. data/vendor/libgit2/src/hash/{hash_mbedtls.c → sha1/mbedtls.c} +15 -7
  229. data/vendor/libgit2/src/hash/{hash_mbedtls.h → sha1/mbedtls.h} +6 -11
  230. data/vendor/libgit2/src/hash/{hash_openssl.h → sha1/openssl.c} +14 -18
  231. data/vendor/libgit2/src/hash/sha1/openssl.h +19 -0
  232. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.c +14 -3
  233. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.h +0 -0
  234. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.c +0 -0
  235. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.h +0 -0
  236. data/vendor/libgit2/src/hash/{hash_win32.c → sha1/win32.c} +34 -24
  237. data/vendor/libgit2/src/hash/{hash_win32.h → sha1/win32.h} +6 -19
  238. data/vendor/libgit2/src/hashsig.c +1 -1
  239. data/vendor/libgit2/src/idxmap.c +91 -65
  240. data/vendor/libgit2/src/idxmap.h +151 -15
  241. data/vendor/libgit2/src/ignore.c +32 -38
  242. data/vendor/libgit2/src/index.c +105 -83
  243. data/vendor/libgit2/src/index.h +1 -1
  244. data/vendor/libgit2/src/indexer.c +71 -72
  245. data/vendor/libgit2/src/integer.h +39 -4
  246. data/vendor/libgit2/src/iterator.c +40 -35
  247. data/vendor/libgit2/src/iterator.h +8 -8
  248. data/vendor/libgit2/src/map.h +1 -1
  249. data/vendor/libgit2/src/merge.c +78 -51
  250. data/vendor/libgit2/src/merge.h +2 -2
  251. data/vendor/libgit2/src/merge_driver.c +5 -5
  252. data/vendor/libgit2/src/merge_file.c +1 -1
  253. data/vendor/libgit2/src/mwindow.c +18 -23
  254. data/vendor/libgit2/src/mwindow.h +4 -4
  255. data/vendor/libgit2/src/net.c +411 -0
  256. data/vendor/libgit2/src/net.h +57 -0
  257. data/vendor/libgit2/src/netops.c +6 -193
  258. data/vendor/libgit2/src/netops.h +1 -34
  259. data/vendor/libgit2/src/notes.c +8 -5
  260. data/vendor/libgit2/src/object.c +3 -3
  261. data/vendor/libgit2/src/object.h +2 -0
  262. data/vendor/libgit2/src/odb.c +41 -23
  263. data/vendor/libgit2/src/odb.h +3 -2
  264. data/vendor/libgit2/src/odb_loose.c +17 -10
  265. data/vendor/libgit2/src/odb_mempack.c +13 -24
  266. data/vendor/libgit2/src/odb_pack.c +4 -5
  267. data/vendor/libgit2/src/offmap.c +43 -55
  268. data/vendor/libgit2/src/offmap.h +102 -24
  269. data/vendor/libgit2/src/oid.c +19 -8
  270. data/vendor/libgit2/src/oidmap.c +39 -57
  271. data/vendor/libgit2/src/oidmap.h +99 -19
  272. data/vendor/libgit2/src/pack-objects.c +28 -33
  273. data/vendor/libgit2/src/pack-objects.h +1 -1
  274. data/vendor/libgit2/src/pack.c +117 -129
  275. data/vendor/libgit2/src/pack.h +15 -18
  276. data/vendor/libgit2/src/parse.c +10 -0
  277. data/vendor/libgit2/src/parse.h +3 -3
  278. data/vendor/libgit2/src/patch.c +1 -1
  279. data/vendor/libgit2/src/patch_generate.c +2 -2
  280. data/vendor/libgit2/src/patch_parse.c +130 -33
  281. data/vendor/libgit2/src/path.c +43 -6
  282. data/vendor/libgit2/src/path.h +2 -0
  283. data/vendor/libgit2/src/pathspec.c +14 -14
  284. data/vendor/libgit2/src/pool.c +26 -22
  285. data/vendor/libgit2/src/pool.h +7 -7
  286. data/vendor/libgit2/src/posix.c +7 -7
  287. data/vendor/libgit2/src/posix.h +12 -1
  288. data/vendor/libgit2/src/proxy.c +7 -2
  289. data/vendor/libgit2/src/push.c +13 -7
  290. data/vendor/libgit2/src/reader.c +2 -2
  291. data/vendor/libgit2/src/rebase.c +87 -28
  292. data/vendor/libgit2/src/refdb.c +12 -0
  293. data/vendor/libgit2/src/refdb_fs.c +219 -167
  294. data/vendor/libgit2/src/reflog.c +11 -13
  295. data/vendor/libgit2/src/refs.c +39 -23
  296. data/vendor/libgit2/src/refs.h +8 -1
  297. data/vendor/libgit2/src/refspec.c +9 -16
  298. data/vendor/libgit2/src/regexp.c +221 -0
  299. data/vendor/libgit2/src/regexp.h +97 -0
  300. data/vendor/libgit2/src/remote.c +57 -55
  301. data/vendor/libgit2/src/remote.h +2 -2
  302. data/vendor/libgit2/src/repository.c +187 -154
  303. data/vendor/libgit2/src/repository.h +49 -40
  304. data/vendor/libgit2/src/revert.c +8 -3
  305. data/vendor/libgit2/src/revparse.c +18 -19
  306. data/vendor/libgit2/src/revwalk.c +72 -34
  307. data/vendor/libgit2/src/revwalk.h +20 -0
  308. data/vendor/libgit2/src/settings.c +13 -1
  309. data/vendor/libgit2/src/sortedcache.c +12 -26
  310. data/vendor/libgit2/src/sortedcache.h +1 -1
  311. data/vendor/libgit2/src/stash.c +47 -67
  312. data/vendor/libgit2/src/status.c +17 -11
  313. data/vendor/libgit2/src/streams/openssl.c +54 -2
  314. data/vendor/libgit2/src/streams/socket.c +2 -2
  315. data/vendor/libgit2/src/strmap.c +37 -84
  316. data/vendor/libgit2/src/strmap.h +105 -33
  317. data/vendor/libgit2/src/submodule.c +151 -126
  318. data/vendor/libgit2/src/submodule.h +1 -1
  319. data/vendor/libgit2/src/sysdir.c +11 -1
  320. data/vendor/libgit2/src/tag.c +10 -2
  321. data/vendor/libgit2/src/trace.c +1 -1
  322. data/vendor/libgit2/src/trace.h +3 -3
  323. data/vendor/libgit2/src/trailer.c +46 -32
  324. data/vendor/libgit2/src/transaction.c +10 -9
  325. data/vendor/libgit2/src/transports/auth.c +16 -15
  326. data/vendor/libgit2/src/transports/auth.h +18 -11
  327. data/vendor/libgit2/src/transports/auth_negotiate.c +64 -33
  328. data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
  329. data/vendor/libgit2/src/transports/auth_ntlm.c +223 -0
  330. data/vendor/libgit2/src/transports/auth_ntlm.h +38 -0
  331. data/vendor/libgit2/src/transports/credential.c +476 -0
  332. data/vendor/libgit2/src/transports/{cred_helpers.c → credential_helpers.c} +21 -8
  333. data/vendor/libgit2/src/transports/git.c +11 -16
  334. data/vendor/libgit2/src/transports/http.c +488 -1248
  335. data/vendor/libgit2/src/transports/http.h +4 -1
  336. data/vendor/libgit2/src/transports/httpclient.c +1549 -0
  337. data/vendor/libgit2/src/transports/httpclient.h +190 -0
  338. data/vendor/libgit2/src/transports/local.c +10 -10
  339. data/vendor/libgit2/src/transports/smart.c +19 -19
  340. data/vendor/libgit2/src/transports/smart.h +3 -3
  341. data/vendor/libgit2/src/transports/smart_pkt.c +1 -1
  342. data/vendor/libgit2/src/transports/smart_protocol.c +40 -64
  343. data/vendor/libgit2/src/transports/ssh.c +77 -59
  344. data/vendor/libgit2/src/transports/winhttp.c +272 -242
  345. data/vendor/libgit2/src/tree-cache.c +14 -7
  346. data/vendor/libgit2/src/tree.c +16 -26
  347. data/vendor/libgit2/src/unix/map.c +1 -1
  348. data/vendor/libgit2/src/unix/posix.h +2 -12
  349. data/vendor/libgit2/src/userdiff.h +3 -1
  350. data/vendor/libgit2/src/util.c +51 -53
  351. data/vendor/libgit2/src/util.h +16 -21
  352. data/vendor/libgit2/src/wildmatch.c +320 -0
  353. data/vendor/libgit2/src/wildmatch.h +23 -0
  354. data/vendor/libgit2/src/win32/map.c +3 -5
  355. data/vendor/libgit2/src/win32/path_w32.c +40 -3
  356. data/vendor/libgit2/src/win32/path_w32.h +15 -29
  357. data/vendor/libgit2/src/win32/posix.h +1 -4
  358. data/vendor/libgit2/src/win32/posix_w32.c +47 -5
  359. data/vendor/libgit2/src/win32/precompiled.h +0 -2
  360. data/vendor/libgit2/src/win32/thread.c +5 -10
  361. data/vendor/libgit2/src/win32/w32_buffer.c +7 -3
  362. data/vendor/libgit2/src/win32/w32_common.h +39 -0
  363. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +0 -93
  364. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -2
  365. data/vendor/libgit2/src/win32/w32_stack.c +4 -9
  366. data/vendor/libgit2/src/win32/w32_stack.h +3 -3
  367. data/vendor/libgit2/src/win32/w32_util.c +31 -0
  368. data/vendor/libgit2/src/win32/w32_util.h +6 -32
  369. data/vendor/libgit2/src/worktree.c +79 -49
  370. data/vendor/libgit2/src/xdiff/xdiffi.c +1 -1
  371. data/vendor/libgit2/src/xdiff/xmerge.c +12 -0
  372. data/vendor/libgit2/src/xdiff/xpatience.c +3 -0
  373. data/vendor/libgit2/src/zstream.c +5 -0
  374. data/vendor/libgit2/src/zstream.h +1 -0
  375. metadata +108 -41
  376. data/vendor/libgit2/deps/regex/CMakeLists.txt +0 -2
  377. data/vendor/libgit2/deps/regex/COPYING +0 -502
  378. data/vendor/libgit2/deps/regex/config.h +0 -7
  379. data/vendor/libgit2/deps/regex/regcomp.c +0 -3857
  380. data/vendor/libgit2/deps/regex/regex.c +0 -92
  381. data/vendor/libgit2/deps/regex/regex.h +0 -582
  382. data/vendor/libgit2/deps/regex/regex_internal.c +0 -1744
  383. data/vendor/libgit2/deps/regex/regex_internal.h +0 -819
  384. data/vendor/libgit2/deps/regex/regexec.c +0 -4369
  385. data/vendor/libgit2/include/git2/inttypes.h +0 -309
  386. data/vendor/libgit2/include/git2/sys/time.h +0 -31
  387. data/vendor/libgit2/libgit2.pc.in +0 -13
  388. data/vendor/libgit2/src/fnmatch.c +0 -248
  389. data/vendor/libgit2/src/fnmatch.h +0 -48
  390. data/vendor/libgit2/src/sha1_lookup.c +0 -35
  391. data/vendor/libgit2/src/transports/cred.c +0 -390
@@ -47,7 +47,7 @@ extern int p_chdir(const char* path);
47
47
  extern int p_chmod(const char* path, mode_t mode);
48
48
  extern int p_rmdir(const char* path);
49
49
  extern int p_access(const char* path, mode_t mode);
50
- extern int p_ftruncate(int fd, git_off_t size);
50
+ extern int p_ftruncate(int fd, off64_t size);
51
51
 
52
52
  /* p_lstat is almost but not quite POSIX correct. Specifically, the use of
53
53
  * ENOTDIR is wrong, in that it does not mean precisely that a non-directory
@@ -60,7 +60,4 @@ extern int p_lstat_posixly(const char *filename, struct stat *buf);
60
60
  extern struct tm * p_localtime_r(const time_t *timer, struct tm *result);
61
61
  extern struct tm * p_gmtime_r(const time_t *timer, struct tm *result);
62
62
 
63
- /* Use the bundled regcomp */
64
- #define p_regcomp regcomp
65
-
66
63
  #endif
@@ -8,7 +8,7 @@
8
8
  #include "common.h"
9
9
 
10
10
  #include "../posix.h"
11
- #include "../fileops.h"
11
+ #include "../futils.h"
12
12
  #include "path.h"
13
13
  #include "path_w32.h"
14
14
  #include "utf-conv.h"
@@ -210,7 +210,7 @@ on_error:
210
210
  * We now take a "git_off_t" rather than "long" because
211
211
  * files may be longer than 2Gb.
212
212
  */
213
- int p_ftruncate(int fd, git_off_t size)
213
+ int p_ftruncate(int fd, off64_t size)
214
214
  {
215
215
  if (size < 0) {
216
216
  errno = EINVAL;
@@ -251,9 +251,25 @@ int p_link(const char *old, const char *new)
251
251
 
252
252
  GIT_INLINE(int) unlink_once(const wchar_t *path)
253
253
  {
254
+ DWORD error;
255
+
254
256
  if (DeleteFileW(path))
255
257
  return 0;
256
258
 
259
+ if ((error = GetLastError()) == ERROR_ACCESS_DENIED) {
260
+ WIN32_FILE_ATTRIBUTE_DATA fdata;
261
+ if (!GetFileAttributesExW(path, GetFileExInfoStandard, &fdata) ||
262
+ !(fdata.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) ||
263
+ !(fdata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
264
+ goto out;
265
+
266
+ if (RemoveDirectoryW(path))
267
+ return 0;
268
+ }
269
+
270
+ out:
271
+ SetLastError(error);
272
+
257
273
  if (last_error_retryable())
258
274
  return GIT_RETRY;
259
275
 
@@ -398,18 +414,44 @@ int p_readlink(const char *path, char *buf, size_t bufsiz)
398
414
  return (int)bufsiz;
399
415
  }
400
416
 
417
+ static bool target_is_dir(const char *target, const char *path)
418
+ {
419
+ git_buf resolved = GIT_BUF_INIT;
420
+ git_win32_path resolved_w;
421
+ bool isdir = true;
422
+
423
+ if (git_path_is_absolute(target))
424
+ git_win32_path_from_utf8(resolved_w, target);
425
+ else if (git_path_dirname_r(&resolved, path) < 0 ||
426
+ git_path_apply_relative(&resolved, target) < 0 ||
427
+ git_win32_path_from_utf8(resolved_w, resolved.ptr) < 0)
428
+ goto out;
429
+
430
+ isdir = GetFileAttributesW(resolved_w) & FILE_ATTRIBUTE_DIRECTORY;
431
+
432
+ out:
433
+ git_buf_dispose(&resolved);
434
+ return isdir;
435
+ }
436
+
401
437
  int p_symlink(const char *target, const char *path)
402
438
  {
403
439
  git_win32_path target_w, path_w;
404
440
  DWORD dwFlags;
405
441
 
442
+ /*
443
+ * Convert both target and path to Windows-style paths. Note that we do
444
+ * not want to use `git_win32_path_from_utf8` for converting the target,
445
+ * as that function will automatically pre-pend the current working
446
+ * directory in case the path is not absolute. As Git will instead use
447
+ * relative symlinks, this is not someting we want.
448
+ */
406
449
  if (git_win32_path_from_utf8(path_w, path) < 0 ||
407
- git__utf8_to_16(target_w, MAX_PATH, target) < 0)
450
+ git_win32_path_relative_from_utf8(target_w, target) < 0)
408
451
  return -1;
409
452
 
410
453
  dwFlags = SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE;
411
-
412
- if (GetFileAttributesW(target_w) & FILE_ATTRIBUTE_DIRECTORY)
454
+ if (target_is_dir(target, path))
413
455
  dwFlags |= SYMBOLIC_LINK_FLAG_DIRECTORY;
414
456
 
415
457
  if (!CreateSymbolicLinkW(path_w, target_w, dwFlags))
@@ -13,8 +13,6 @@
13
13
  #include <sys/types.h>
14
14
  #include <sys/stat.h>
15
15
 
16
- #include <regex.h>
17
-
18
16
  #include <io.h>
19
17
  #include <direct.h>
20
18
  #ifdef GIT_THREADS
@@ -32,8 +32,6 @@ 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
-
37
35
  return CLEAN_THREAD_EXIT;
38
36
  }
39
37
 
@@ -42,15 +40,15 @@ int git_threads_init(void)
42
40
  HMODULE hModule = GetModuleHandleW(L"kernel32");
43
41
 
44
42
  if (hModule) {
45
- win32_srwlock_initialize = (win32_srwlock_fn)
43
+ win32_srwlock_initialize = (win32_srwlock_fn)(void *)
46
44
  GetProcAddress(hModule, "InitializeSRWLock");
47
- win32_srwlock_acquire_shared = (win32_srwlock_fn)
45
+ win32_srwlock_acquire_shared = (win32_srwlock_fn)(void *)
48
46
  GetProcAddress(hModule, "AcquireSRWLockShared");
49
- win32_srwlock_release_shared = (win32_srwlock_fn)
47
+ win32_srwlock_release_shared = (win32_srwlock_fn)(void *)
50
48
  GetProcAddress(hModule, "ReleaseSRWLockShared");
51
- win32_srwlock_acquire_exclusive = (win32_srwlock_fn)
49
+ win32_srwlock_acquire_exclusive = (win32_srwlock_fn)(void *)
52
50
  GetProcAddress(hModule, "AcquireSRWLockExclusive");
53
- win32_srwlock_release_exclusive = (win32_srwlock_fn)
51
+ win32_srwlock_release_exclusive = (win32_srwlock_fn)(void *)
54
52
  GetProcAddress(hModule, "ReleaseSRWLockExclusive");
55
53
  }
56
54
 
@@ -103,9 +101,6 @@ void git_thread_exit(void *value)
103
101
  {
104
102
  assert(GIT_GLOBAL->current_thread);
105
103
  GIT_GLOBAL->current_thread->result = value;
106
-
107
- git__free_tls_data();
108
-
109
104
  ExitThread(CLEAN_THREAD_EXIT);
110
105
  }
111
106
 
@@ -25,13 +25,17 @@ 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
+ }
30
34
 
31
35
  assert(string_w);
32
36
 
33
37
  /* Measure the string necessary for conversion */
34
- if ((utf8_len = WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, string_w, len_w, NULL, 0, NULL, NULL)) == 0)
38
+ if ((utf8_len = WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, string_w, (int)len_w, NULL, 0, NULL, NULL)) == 0)
35
39
  return 0;
36
40
 
37
41
  assert(utf8_len > 0);
@@ -43,7 +47,7 @@ int git_buf_put_w(git_buf *buf, const wchar_t *string_w, size_t len_w)
43
47
  return -1;
44
48
 
45
49
  if ((utf8_write_len = WideCharToMultiByte(
46
- CP_UTF8, WC_ERR_INVALID_CHARS, string_w, len_w, &buf->ptr[buf->size], utf8_len, NULL, NULL)) == 0)
50
+ CP_UTF8, WC_ERR_INVALID_CHARS, string_w, (int)len_w, &buf->ptr[buf->size], utf8_len, NULL, NULL)) == 0)
47
51
  return handle_wc_error();
48
52
 
49
53
  assert(utf8_write_len == utf8_len);
@@ -0,0 +1,39 @@
1
+ /*
2
+ * Copyright (C) the libgit2 contributors. All rights reserved.
3
+ *
4
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
5
+ * a Linking Exception. For full terms see the included COPYING file.
6
+ */
7
+
8
+ #ifndef INCLUDE_win32_w32_common_h__
9
+ #define INCLUDE_win32_w32_common_h__
10
+
11
+ /*
12
+ * Provides a large enough buffer to support Windows paths: MAX_PATH is
13
+ * 260, corresponding to a maximum path length of 259 characters plus a
14
+ * NULL terminator. Prefixing with "\\?\" adds 4 characters, but if the
15
+ * original was a UNC path, then we turn "\\server\share" into
16
+ * "\\?\UNC\server\share". So we replace the first two characters with
17
+ * 8 characters, a net gain of 6, so the maximum length is MAX_PATH+6.
18
+ */
19
+ #define GIT_WIN_PATH_UTF16 MAX_PATH+6
20
+
21
+ /* Maximum size of a UTF-8 Win32 path. We remove the "\\?\" or "\\?\UNC\"
22
+ * prefixes for presentation, bringing us back to 259 (non-NULL)
23
+ * characters. UTF-8 does have 4-byte sequences, but they are encoded in
24
+ * UTF-16 using surrogate pairs, which takes up the space of two characters.
25
+ * Two characters in the range U+0800 -> U+FFFF take up more space in UTF-8
26
+ * (6 bytes) than one surrogate pair (4 bytes).
27
+ */
28
+ #define GIT_WIN_PATH_UTF8 (259 * 3 + 1)
29
+
30
+ /*
31
+ * The length of a Windows "shortname", for 8.3 compatibility.
32
+ */
33
+ #define GIT_WIN_PATH_SHORTNAME 13
34
+
35
+ /* Win32 path types */
36
+ typedef wchar_t git_win32_path[GIT_WIN_PATH_UTF16];
37
+ typedef char git_win32_utf8_path[GIT_WIN_PATH_UTF8];
38
+
39
+ #endif
@@ -71,99 +71,6 @@ static bool g_limit_reached = false; /* had allocs after we filled row table */
71
71
  static unsigned int g_checkpoint_id = 0; /* to better label leak checkpoints */
72
72
  static bool g_transient_leaks_since_mark = false; /* payload for hook */
73
73
 
74
- static void *crtdbg__malloc(size_t len, const char *file, int line)
75
- {
76
- void *ptr = _malloc_dbg(len, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
77
- if (!ptr) git_error_set_oom();
78
- return ptr;
79
- }
80
-
81
- static void *crtdbg__calloc(size_t nelem, size_t elsize, const char *file, int line)
82
- {
83
- void *ptr = _calloc_dbg(nelem, elsize, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
84
- if (!ptr) git_error_set_oom();
85
- return ptr;
86
- }
87
-
88
- static char *crtdbg__strdup(const char *str, const char *file, int line)
89
- {
90
- char *ptr = _strdup_dbg(str, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
91
- if (!ptr) git_error_set_oom();
92
- return ptr;
93
- }
94
-
95
- static char *crtdbg__strndup(const char *str, size_t n, const char *file, int line)
96
- {
97
- size_t length = 0, alloclength;
98
- char *ptr;
99
-
100
- length = p_strnlen(str, n);
101
-
102
- if (GIT_ADD_SIZET_OVERFLOW(&alloclength, length, 1) ||
103
- !(ptr = crtdbg__malloc(alloclength, file, line)))
104
- return NULL;
105
-
106
- if (length)
107
- memcpy(ptr, str, length);
108
-
109
- ptr[length] = '\0';
110
-
111
- return ptr;
112
- }
113
-
114
- static char *crtdbg__substrdup(const char *start, size_t n, const char *file, int line)
115
- {
116
- char *ptr;
117
- size_t alloclen;
118
-
119
- if (GIT_ADD_SIZET_OVERFLOW(&alloclen, n, 1) ||
120
- !(ptr = crtdbg__malloc(alloclen, file, line)))
121
- return NULL;
122
-
123
- memcpy(ptr, start, n);
124
- ptr[n] = '\0';
125
- return ptr;
126
- }
127
-
128
- static void *crtdbg__realloc(void *ptr, size_t size, const char *file, int line)
129
- {
130
- void *new_ptr = _realloc_dbg(ptr, size, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
131
- if (!new_ptr) git_error_set_oom();
132
- return new_ptr;
133
- }
134
-
135
- static void *crtdbg__reallocarray(void *ptr, size_t nelem, size_t elsize, const char *file, int line)
136
- {
137
- size_t newsize;
138
-
139
- return GIT_MULTIPLY_SIZET_OVERFLOW(&newsize, nelem, elsize) ?
140
- NULL : _realloc_dbg(ptr, newsize, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
141
- }
142
-
143
- static void *crtdbg__mallocarray(size_t nelem, size_t elsize, const char *file, int line)
144
- {
145
- return crtdbg__reallocarray(NULL, nelem, elsize, file, line);
146
- }
147
-
148
- static void crtdbg__free(void *ptr)
149
- {
150
- free(ptr);
151
- }
152
-
153
- int git_win32_crtdbg_init_allocator(git_allocator *allocator)
154
- {
155
- allocator->gmalloc = crtdbg__malloc;
156
- allocator->gcalloc = crtdbg__calloc;
157
- allocator->gstrdup = crtdbg__strdup;
158
- allocator->gstrndup = crtdbg__strndup;
159
- allocator->gsubstrdup = crtdbg__substrdup;
160
- allocator->grealloc = crtdbg__realloc;
161
- allocator->greallocarray = crtdbg__reallocarray;
162
- allocator->gmallocarray = crtdbg__mallocarray;
163
- allocator->gfree = crtdbg__free;
164
- return 0;
165
- }
166
-
167
74
  /**
168
75
  * Compare function for bsearch on g_cs_index table.
169
76
  */
@@ -43,8 +43,6 @@
43
43
  * startup. See tests/main.c for an example.
44
44
  */
45
45
 
46
- int git_win32_crtdbg_init_allocator(git_allocator *allocator);
47
-
48
46
  /**
49
47
  * Initialize our memory leak tracking and de-dup data structures.
50
48
  * This should ONLY be called by git_libgit2_init().
@@ -13,11 +13,6 @@
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
-
21
16
  static bool g_win32_stack_initialized = false;
22
17
  static HANDLE g_win32_stack_process = INVALID_HANDLE_VALUE;
23
18
  static git_win32__stack__aux_cb_alloc g_aux_cb_alloc = NULL;
@@ -81,7 +76,7 @@ int git_win32__stack_compare(
81
76
  }
82
77
 
83
78
  int git_win32__stack_format(
84
- char *pbuf, int buf_len,
79
+ char *pbuf, size_t buf_len,
85
80
  const git_win32__stack__raw_data *pdata,
86
81
  const char *prefix, const char *suffix)
87
82
  {
@@ -96,10 +91,10 @@ int git_win32__stack_format(
96
91
  } s;
97
92
 
98
93
  IMAGEHLP_LINE64 line;
99
- int buf_used = 0;
94
+ size_t buf_used = 0;
100
95
  unsigned int k;
101
96
  char detail[MY_MAX_FILENAME * 2]; /* filename plus space for function name and formatting */
102
- int detail_len;
97
+ size_t detail_len;
103
98
 
104
99
  if (!g_win32_stack_initialized) {
105
100
  git_error_set(GIT_ERROR_INVALID, "git_win32_stack not initialized.");
@@ -176,7 +171,7 @@ int git_win32__stack_format(
176
171
  }
177
172
 
178
173
  int git_win32__stack(
179
- char * pbuf, int buf_len,
174
+ char * pbuf, size_t buf_len,
180
175
  int skip,
181
176
  const char *prefix, const char *suffix)
182
177
  {
@@ -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, unsigned int aux_msg_len);
41
+ typedef void (*git_win32__stack__aux_cb_lookup)(unsigned int aux_id, char *aux_msg, size_t 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, int buf_len,
119
+ char *pbuf, size_t 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, int buf_len,
135
+ char * pbuf, size_t buf_len,
136
136
  int skip,
137
137
  const char *prefix, const char *suffix);
138
138
 
@@ -93,3 +93,34 @@ int git_win32__hidden(bool *out, const char *path)
93
93
  *out = (attrs & FILE_ATTRIBUTE_HIDDEN) ? true : false;
94
94
  return 0;
95
95
  }
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)
101
+ {
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
+ }
123
+ }
124
+
125
+ return 0;
126
+ }
@@ -59,6 +59,11 @@ 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);
66
+
62
67
  /**
63
68
  * Converts a FILETIME structure to a struct timespec.
64
69
  *
@@ -115,7 +120,7 @@ GIT_INLINE(void) git_win32__stat_init(
115
120
  st->st_uid = 0;
116
121
  st->st_nlink = 1;
117
122
  st->st_mode = mode;
118
- st->st_size = ((git_off_t)nFileSizeHigh << 32) + nFileSizeLow;
123
+ st->st_size = ((int64_t)nFileSizeHigh << 32) + nFileSizeLow;
119
124
  st->st_dev = _getdrive() - 1;
120
125
  st->st_rdev = st->st_dev;
121
126
  git_win32__filetime_to_timespec(&ftLastAccessTime, &(st->st_atim));
@@ -136,35 +141,4 @@ GIT_INLINE(void) git_win32__file_information_to_stat(
136
141
  fileinfo->ftLastWriteTime);
137
142
  }
138
143
 
139
- GIT_INLINE(int) git_win32__file_attribute_to_stat(
140
- struct stat *st,
141
- const WIN32_FILE_ATTRIBUTE_DATA *attrdata,
142
- const wchar_t *path)
143
- {
144
- git_win32__stat_init(st,
145
- attrdata->dwFileAttributes,
146
- attrdata->nFileSizeHigh,
147
- attrdata->nFileSizeLow,
148
- attrdata->ftCreationTime,
149
- attrdata->ftLastAccessTime,
150
- attrdata->ftLastWriteTime);
151
-
152
- if (attrdata->dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT && path) {
153
- git_win32_path target;
154
-
155
- if (git_win32_path_readlink_w(target, path) >= 0) {
156
- st->st_mode = (st->st_mode & ~S_IFMT) | S_IFLNK;
157
-
158
- /* st_size gets the UTF-8 length of the target name, in bytes,
159
- * not counting the NULL terminator */
160
- if ((st->st_size = git__utf16_to_8(NULL, 0, target)) < 0) {
161
- git_error_set(GIT_ERROR_OS, "could not convert reparse point name for '%ls'", path);
162
- return -1;
163
- }
164
- }
165
- }
166
-
167
- return 0;
168
- }
169
-
170
144
  #endif