rugged 0.27.10 → 0.27.10.1

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -36,7 +36,7 @@ GIT_INLINE(int) resize_vector(git_vector *v, size_t new_size)
36
36
  return 0;
37
37
 
38
38
  new_contents = git__reallocarray(v->contents, new_size, sizeof(void *));
39
- GIT_ERROR_CHECK_ALLOC(new_contents);
39
+ GITERR_CHECK_ALLOC(new_contents);
40
40
 
41
41
  v->_alloc_size = new_size;
42
42
  v->contents = new_contents;
@@ -65,9 +65,9 @@ int git_vector_dup(git_vector *v, const git_vector *src, git_vector_cmp cmp)
65
65
 
66
66
  if (src->length) {
67
67
  size_t bytes;
68
- GIT_ERROR_CHECK_ALLOC_MULTIPLY(&bytes, src->length, sizeof(void *));
68
+ GITERR_CHECK_ALLOC_MULTIPLY(&bytes, src->length, sizeof(void *));
69
69
  v->contents = git__malloc(bytes);
70
- GIT_ERROR_CHECK_ALLOC(v->contents);
70
+ GITERR_CHECK_ALLOC(v->contents);
71
71
  v->_alloc_size = src->length;
72
72
  memcpy(v->contents, src->contents, bytes);
73
73
  }
@@ -342,7 +342,7 @@ int git_vector_insert_null(git_vector *v, size_t idx, size_t insert_len)
342
342
 
343
343
  assert(insert_len > 0 && idx <= v->length);
344
344
 
345
- GIT_ERROR_CHECK_ALLOC_ADD(&new_length, v->length, insert_len);
345
+ GITERR_CHECK_ALLOC_ADD(&new_length, v->length, insert_len);
346
346
 
347
347
  if (new_length > v->_alloc_size && resize_vector(v, new_length) < 0)
348
348
  return -1;
@@ -31,7 +31,7 @@ git__DIR *git__opendir(const char *dir)
31
31
  new->h = FindFirstFileW(filter_w, &new->f);
32
32
 
33
33
  if (new->h == INVALID_HANDLE_VALUE) {
34
- git_error_set(GIT_ERROR_OS, "could not open directory '%s'", dir);
34
+ giterr_set(GITERR_OS, "could not open directory '%s'", dir);
35
35
  git__free(new);
36
36
  return NULL;
37
37
  }
@@ -56,7 +56,7 @@ int git__readdir_ext(
56
56
  else if (!FindNextFileW(d->h, &d->f)) {
57
57
  if (GetLastError() == ERROR_NO_MORE_FILES)
58
58
  return 0;
59
- git_error_set(GIT_ERROR_OS, "could not read from directory '%s'", d->dir);
59
+ giterr_set(GITERR_OS, "could not read from directory '%s'", d->dir);
60
60
  return -1;
61
61
  }
62
62
 
@@ -101,7 +101,7 @@ void git__rewinddir(git__DIR *d)
101
101
  d->h = FindFirstFileW(filter_w, &d->f);
102
102
 
103
103
  if (d->h == INVALID_HANDLE_VALUE)
104
- git_error_set(GIT_ERROR_OS, "could not open directory '%s'", d->dir);
104
+ giterr_set(GITERR_OS, "could not open directory '%s'", d->dir);
105
105
  else
106
106
  d->first = 1;
107
107
  }
@@ -39,7 +39,7 @@ static int win32_path_to_8(git_buf *dest, const wchar_t *src)
39
39
  git_win32_utf8_path utf8_path;
40
40
 
41
41
  if (git_win32_path_to_utf8(utf8_path, src) < 0) {
42
- git_error_set(GIT_ERROR_OS, "unable to convert path to UTF-8");
42
+ giterr_set(GITERR_OS, "unable to convert path to UTF-8");
43
43
  return -1;
44
44
  }
45
45
 
@@ -158,7 +158,7 @@ static int win32_find_existing_dirs(
158
158
  }
159
159
  }
160
160
 
161
- git_buf_dispose(&buf);
161
+ git_buf_free(&buf);
162
162
 
163
163
  return (git_buf_oom(out) ? -1 : 0);
164
164
  }
@@ -185,7 +185,7 @@ int git_win32__find_system_dirs(git_buf *out, const wchar_t *subdir)
185
185
  &buf, HKEY_LOCAL_MACHINE, REG_MSYSGIT_INSTALL, subdir) && buf.size)
186
186
  git_buf_join(out, GIT_PATH_LIST_SEPARATOR, out->ptr, buf.ptr);
187
187
 
188
- git_buf_dispose(&buf);
188
+ git_buf_free(&buf);
189
189
 
190
190
  return (git_buf_oom(out) ? -1 : 0);
191
191
  }
@@ -50,7 +50,7 @@ int git__mmap_alignment(size_t *page_size)
50
50
  return 0;
51
51
  }
52
52
 
53
- int p_mmap(git_map *out, size_t len, int prot, int flags, int fd, off64_t offset)
53
+ int p_mmap(git_map *out, size_t len, int prot, int flags, int fd, git_off_t offset)
54
54
  {
55
55
  HANDLE fh = (HANDLE)_get_osfhandle(fd);
56
56
  DWORD alignment = get_allocation_granularity();
@@ -58,8 +58,8 @@ int p_mmap(git_map *out, size_t len, int prot, int flags, int fd, off64_t offset
58
58
  DWORD view_prot = 0;
59
59
  DWORD off_low = 0;
60
60
  DWORD off_hi = 0;
61
- off64_t page_start;
62
- off64_t page_offset;
61
+ git_off_t page_start;
62
+ git_off_t page_offset;
63
63
 
64
64
  GIT_MMAP_VALIDATE(out, len, prot, flags);
65
65
 
@@ -69,7 +69,7 @@ int p_mmap(git_map *out, size_t len, int prot, int flags, int fd, off64_t offset
69
69
 
70
70
  if (fh == INVALID_HANDLE_VALUE) {
71
71
  errno = EBADF;
72
- git_error_set(GIT_ERROR_OS, "failed to mmap. Invalid handle value");
72
+ giterr_set(GITERR_OS, "failed to mmap. Invalid handle value");
73
73
  return -1;
74
74
  }
75
75
 
@@ -88,22 +88,24 @@ int p_mmap(git_map *out, size_t len, int prot, int flags, int fd, off64_t offset
88
88
 
89
89
  if (page_offset != 0) { /* offset must be multiple of the allocation granularity */
90
90
  errno = EINVAL;
91
- git_error_set(GIT_ERROR_OS, "failed to mmap. Offset must be multiple of allocation granularity");
91
+ giterr_set(GITERR_OS, "failed to mmap. Offset must be multiple of allocation granularity");
92
92
  return -1;
93
93
  }
94
94
 
95
95
  out->fmh = CreateFileMapping(fh, NULL, fmap_prot, 0, 0, NULL);
96
96
  if (!out->fmh || out->fmh == INVALID_HANDLE_VALUE) {
97
- git_error_set(GIT_ERROR_OS, "failed to mmap. Invalid handle value");
97
+ giterr_set(GITERR_OS, "failed to mmap. Invalid handle value");
98
98
  out->fmh = NULL;
99
99
  return -1;
100
100
  }
101
101
 
102
+ assert(sizeof(git_off_t) == 8);
103
+
102
104
  off_low = (DWORD)(page_start);
103
105
  off_hi = (DWORD)(page_start >> 32);
104
106
  out->data = MapViewOfFile(out->fmh, view_prot, off_hi, off_low, len);
105
107
  if (!out->data) {
106
- git_error_set(GIT_ERROR_OS, "failed to mmap. No data written");
108
+ giterr_set(GITERR_OS, "failed to mmap. No data written");
107
109
  CloseHandle(out->fmh);
108
110
  out->fmh = NULL;
109
111
  return -1;
@@ -121,7 +123,7 @@ int p_munmap(git_map *map)
121
123
 
122
124
  if (map->data) {
123
125
  if (!UnmapViewOfFile(map->data)) {
124
- git_error_set(GIT_ERROR_OS, "failed to munmap. Could not unmap view of file");
126
+ giterr_set(GITERR_OS, "failed to munmap. Could not unmap view of file");
125
127
  error = -1;
126
128
  }
127
129
  map->data = NULL;
@@ -129,7 +131,7 @@ int p_munmap(git_map *map)
129
131
 
130
132
  if (map->fmh) {
131
133
  if (!CloseHandle(map->fmh)) {
132
- git_error_set(GIT_ERROR_OS, "failed to munmap. Could not close handle");
134
+ giterr_set(GITERR_OS, "failed to munmap. Could not close handle");
133
135
  error = -1;
134
136
  }
135
137
  map->fmh = NULL;
@@ -12,12 +12,6 @@
12
12
  typedef unsigned short mode_t;
13
13
  typedef SSIZE_T ssize_t;
14
14
 
15
- #ifdef _WIN64
16
- # define SSIZE_MAX _I64_MAX
17
- #else
18
- # define SSIZE_MAX LONG_MAX
19
- #endif
20
-
21
15
  #define strcasecmp(s1, s2) _stricmp(s1, s2)
22
16
  #define strncasecmp(s1, s2, c) _strnicmp(s1, s2, c)
23
17
 
@@ -140,24 +140,14 @@ int git_win32_path_canonicalize(git_win32_path path)
140
140
 
141
141
  *to = L'\0';
142
142
 
143
- if ((to - path) > INT_MAX) {
144
- SetLastError(ERROR_FILENAME_EXCED_RANGE);
145
- return -1;
146
- }
147
-
148
- return (int)(to - path);
143
+ return (to - path);
149
144
  }
150
145
 
151
146
  int git_win32_path__cwd(wchar_t *out, size_t len)
152
147
  {
153
148
  int cwd_len;
154
149
 
155
- if (len > INT_MAX) {
156
- errno = ENAMETOOLONG;
157
- return -1;
158
- }
159
-
160
- if ((cwd_len = path__cwd(out, (int)len)) < 0)
150
+ if ((cwd_len = path__cwd(out, len)) < 0)
161
151
  return -1;
162
152
 
163
153
  /* UNC paths */
@@ -230,7 +220,7 @@ int git_win32_path_from_utf8(git_win32_path out, const char *src)
230
220
  goto on_error;
231
221
  }
232
222
 
233
- /* Skip the drive letter specification ("C:") */
223
+ /* Skip the drive letter specification ("C:") */
234
224
  if (git__utf8_to_16(dest + 2, MAX_PATH - 2, src) < 0)
235
225
  goto on_error;
236
226
  }
@@ -325,7 +315,7 @@ static bool path_is_volume(wchar_t *target, size_t target_len)
325
315
  }
326
316
 
327
317
  /* On success, returns the length, in characters, of the path stored in dest.
328
- * On failure, returns a negative value. */
318
+ * On failure, returns a negative value. */
329
319
  int git_win32_path_readlink_w(git_win32_path dest, const git_win32_path path)
330
320
  {
331
321
  BYTE buf[MAXIMUM_REPARSE_DATA_BUFFER_SIZE];
@@ -370,16 +360,16 @@ int git_win32_path_readlink_w(git_win32_path dest, const git_win32_path path)
370
360
 
371
361
  if (path_is_volume(target, target_len)) {
372
362
  /* This path is a reparse point that represents another volume mounted
373
- * at this location, it is not a symbolic link our input was canonical.
374
- */
363
+ * at this location, it is not a symbolic link our input was canonical.
364
+ */
375
365
  errno = EINVAL;
376
366
  error = -1;
377
367
  } else if (target_len) {
378
- /* The path may need to have a namespace prefix removed. */
379
- target_len = git_win32_path_remove_namespace(target, target_len);
368
+ /* The path may need to have a prefix removed. */
369
+ target_len = git_win32__canonicalize_path(target, target_len);
380
370
 
381
371
  /* Need one additional character in the target buffer
382
- * for the terminating NULL. */
372
+ * for the terminating NULL. */
383
373
  if (GIT_WIN_PATH_UTF16 > target_len) {
384
374
  wcscpy(dest, target);
385
375
  error = (int)target_len;
@@ -390,97 +380,3 @@ on_error:
390
380
  CloseHandle(handle);
391
381
  return error;
392
382
  }
393
-
394
- /**
395
- * Removes any trailing backslashes from a path, except in the case of a drive
396
- * letter path (C:\, D:\, etc.). This function cannot fail.
397
- *
398
- * @param path The path which should be trimmed.
399
- * @return The length of the modified string (<= the input length)
400
- */
401
- size_t git_win32_path_trim_end(wchar_t *str, size_t len)
402
- {
403
- while (1) {
404
- if (!len || str[len - 1] != L'\\')
405
- break;
406
-
407
- /*
408
- * Don't trim backslashes from drive letter paths, which
409
- * are 3 characters long and of the form C:\, D:\, etc.
410
- */
411
- if (len == 3 && git_win32__isalpha(str[0]) && str[1] == ':')
412
- break;
413
-
414
- len--;
415
- }
416
-
417
- str[len] = L'\0';
418
-
419
- return len;
420
- }
421
-
422
- /**
423
- * Removes any of the following namespace prefixes from a path,
424
- * if found: "\??\", "\\?\", "\\?\UNC\". This function cannot fail.
425
- *
426
- * @param path The path which should be converted.
427
- * @return The length of the modified string (<= the input length)
428
- */
429
- size_t git_win32_path_remove_namespace(wchar_t *str, size_t len)
430
- {
431
- static const wchar_t dosdevices_namespace[] = L"\\\?\?\\";
432
- static const wchar_t nt_namespace[] = L"\\\\?\\";
433
- static const wchar_t unc_namespace_remainder[] = L"UNC\\";
434
- static const wchar_t unc_prefix[] = L"\\\\";
435
-
436
- const wchar_t *prefix = NULL, *remainder = NULL;
437
- size_t prefix_len = 0, remainder_len = 0;
438
-
439
- /* "\??\" -- DOS Devices prefix */
440
- if (len >= CONST_STRLEN(dosdevices_namespace) &&
441
- !wcsncmp(str, dosdevices_namespace, CONST_STRLEN(dosdevices_namespace))) {
442
- remainder = str + CONST_STRLEN(dosdevices_namespace);
443
- remainder_len = len - CONST_STRLEN(dosdevices_namespace);
444
- }
445
- /* "\\?\" -- NT namespace prefix */
446
- else if (len >= CONST_STRLEN(nt_namespace) &&
447
- !wcsncmp(str, nt_namespace, CONST_STRLEN(nt_namespace))) {
448
- remainder = str + CONST_STRLEN(nt_namespace);
449
- remainder_len = len - CONST_STRLEN(nt_namespace);
450
- }
451
-
452
- /* "\??\UNC\", "\\?\UNC\" -- UNC prefix */
453
- if (remainder_len >= CONST_STRLEN(unc_namespace_remainder) &&
454
- !wcsncmp(remainder, unc_namespace_remainder, CONST_STRLEN(unc_namespace_remainder))) {
455
-
456
- /*
457
- * The proper Win32 path for a UNC share has "\\" at beginning of it
458
- * and looks like "\\server\share\<folderStructure>". So remove the
459
- * UNC namespace and add a prefix of "\\" in its place.
460
- */
461
- remainder += CONST_STRLEN(unc_namespace_remainder);
462
- remainder_len -= CONST_STRLEN(unc_namespace_remainder);
463
-
464
- prefix = unc_prefix;
465
- prefix_len = CONST_STRLEN(unc_prefix);
466
- }
467
-
468
- if (remainder) {
469
- /*
470
- * Sanity check that the new string isn't longer than the old one.
471
- * (This could only happen due to programmer error introducing a
472
- * prefix longer than the namespace it replaces.)
473
- */
474
- assert(len >= remainder_len + prefix_len);
475
-
476
- if (prefix)
477
- memmove(str, prefix, prefix_len * sizeof(wchar_t));
478
-
479
- memmove(str + prefix_len, remainder, remainder_len * sizeof(wchar_t));
480
-
481
- len = remainder_len + prefix_len;
482
- str[len] = L'\0';
483
- }
484
-
485
- return git_win32_path_trim_end(str, len);
486
- }
@@ -8,8 +8,37 @@
8
8
  #define INCLUDE_win32_path_w32_h__
9
9
 
10
10
  #include "common.h"
11
+
11
12
  #include "vector.h"
12
13
 
14
+ /*
15
+ * Provides a large enough buffer to support Windows paths: MAX_PATH is
16
+ * 260, corresponding to a maximum path length of 259 characters plus a
17
+ * NULL terminator. Prefixing with "\\?\" adds 4 characters, but if the
18
+ * original was a UNC path, then we turn "\\server\share" into
19
+ * "\\?\UNC\server\share". So we replace the first two characters with
20
+ * 8 characters, a net gain of 6, so the maximum length is MAX_PATH+6.
21
+ */
22
+ #define GIT_WIN_PATH_UTF16 MAX_PATH+6
23
+
24
+ /* Maximum size of a UTF-8 Win32 path. We remove the "\\?\" or "\\?\UNC\"
25
+ * prefixes for presentation, bringing us back to 259 (non-NULL)
26
+ * characters. UTF-8 does have 4-byte sequences, but they are encoded in
27
+ * UTF-16 using surrogate pairs, which takes up the space of two characters.
28
+ * Two characters in the range U+0800 -> U+FFFF take up more space in UTF-8
29
+ * (6 bytes) than one surrogate pair (4 bytes).
30
+ */
31
+ #define GIT_WIN_PATH_UTF8 (259 * 3 + 1)
32
+
33
+ /*
34
+ * The length of a Windows "shortname", for 8.3 compatibility.
35
+ */
36
+ #define GIT_WIN_PATH_SHORTNAME 13
37
+
38
+ /* Win32 path types */
39
+ typedef wchar_t git_win32_path[GIT_WIN_PATH_UTF16];
40
+ typedef char git_win32_utf8_path[GIT_WIN_PATH_UTF8];
41
+
13
42
  /**
14
43
  * Create a Win32 path (in UCS-2 format) from a UTF-8 string.
15
44
  *
@@ -54,22 +83,4 @@ extern char *git_win32_path_8dot3_name(const char *path);
54
83
 
55
84
  extern int git_win32_path_readlink_w(git_win32_path dest, const git_win32_path path);
56
85
 
57
- /**
58
- * Removes any trailing backslashes from a path, except in the case of a drive
59
- * letter path (C:\, D:\, etc.). This function cannot fail.
60
- *
61
- * @param path The path which should be trimmed.
62
- * @return The length of the modified string (<= the input length)
63
- */
64
- size_t git_win32_path_trim_end(wchar_t *str, size_t len);
65
-
66
- /**
67
- * Removes any of the following namespace prefixes from a path,
68
- * if found: "\??\", "\\?\", "\\?\UNC\". This function cannot fail.
69
- *
70
- * @param path The path which should be converted.
71
- * @return The length of the modified string (<= the input length)
72
- */
73
- size_t git_win32_path_remove_namespace(wchar_t *str, size_t len);
74
-
75
86
  #endif
@@ -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, off64_t size);
50
+ extern int p_ftruncate(int fd, git_off_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,4 +60,7 @@ 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
+
63
66
  #endif
@@ -8,7 +8,7 @@
8
8
  #include "common.h"
9
9
 
10
10
  #include "../posix.h"
11
- #include "../futils.h"
11
+ #include "../fileops.h"
12
12
  #include "path.h"
13
13
  #include "path_w32.h"
14
14
  #include "utf-conv.h"
@@ -29,20 +29,15 @@
29
29
  #define IO_REPARSE_TAG_SYMLINK (0xA000000CL)
30
30
  #endif
31
31
 
32
- #ifndef SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE
33
- # define SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE 0x02
34
- #endif
35
-
36
- #ifndef SYMBOLIC_LINK_FLAG_DIRECTORY
37
- # define SYMBOLIC_LINK_FLAG_DIRECTORY 0x01
38
- #endif
39
-
40
32
  /* Allowable mode bits on Win32. Using mode bits that are not supported on
41
33
  * Win32 (eg S_IRWXU) is generally ignored, but Wine warns loudly about it
42
34
  * so we simply remove them.
43
35
  */
44
36
  #define WIN32_MODE_MASK (_S_IREAD | _S_IWRITE)
45
37
 
38
+ /* GetFinalPathNameByHandleW signature */
39
+ typedef DWORD(WINAPI *PFGetFinalPathNameByHandleW)(HANDLE, LPWSTR, DWORD, DWORD);
40
+
46
41
  unsigned long git_win32__createfile_sharemode =
47
42
  FILE_SHARE_READ | FILE_SHARE_WRITE;
48
43
  int git_win32__retries = 10;
@@ -210,7 +205,7 @@ on_error:
210
205
  * We now take a "git_off_t" rather than "long" because
211
206
  * files may be longer than 2Gb.
212
207
  */
213
- int p_ftruncate(int fd, off64_t size)
208
+ int p_ftruncate(int fd, git_off_t size)
214
209
  {
215
210
  if (size < 0) {
216
211
  errno = EINVAL;
@@ -251,25 +246,9 @@ int p_link(const char *old, const char *new)
251
246
 
252
247
  GIT_INLINE(int) unlink_once(const wchar_t *path)
253
248
  {
254
- DWORD error;
255
-
256
249
  if (DeleteFileW(path))
257
250
  return 0;
258
251
 
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
-
273
252
  if (last_error_retryable())
274
253
  return GIT_RETRY;
275
254
 
@@ -375,7 +354,7 @@ static int do_lstat(const char *path, struct stat *buf, bool posixly_correct)
375
354
  if ((len = git_win32_path_from_utf8(path_w, path)) < 0)
376
355
  return -1;
377
356
 
378
- git_win32_path_trim_end(path_w, len);
357
+ git_win32__path_trim_end(path_w, len);
379
358
 
380
359
  return lstat_w(path_w, buf, posixly_correct);
381
360
  }
@@ -414,43 +393,12 @@ int p_readlink(const char *path, char *buf, size_t bufsiz)
414
393
  return (int)bufsiz;
415
394
  }
416
395
 
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
-
437
- int p_symlink(const char *target, const char *path)
396
+ int p_symlink(const char *old, const char *new)
438
397
  {
439
- git_win32_path target_w, path_w;
440
- DWORD dwFlags;
441
-
442
- if (git_win32_path_from_utf8(path_w, path) < 0 ||
443
- git__utf8_to_16(target_w, MAX_PATH, target) < 0)
444
- return -1;
445
-
446
- dwFlags = SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE;
447
- if (target_is_dir(target, path))
448
- dwFlags |= SYMBOLIC_LINK_FLAG_DIRECTORY;
449
-
450
- if (!CreateSymbolicLinkW(path_w, target_w, dwFlags))
451
- return -1;
452
-
453
- return 0;
398
+ /* Real symlinks on NTFS require admin privileges. Until this changes,
399
+ * libgit2 just creates a text file with the link target in the contents.
400
+ */
401
+ return git_futils_fake_symlink(old, new);
454
402
  }
455
403
 
456
404
  struct open_opts {
@@ -576,7 +524,7 @@ int p_utimes(const char *path, const struct p_timeval times[2])
576
524
  attrs_new = attrs_orig & ~FILE_ATTRIBUTE_READONLY;
577
525
 
578
526
  if (!SetFileAttributesW(wpath, attrs_new)) {
579
- git_error_set(GIT_ERROR_OS, "failed to set attributes");
527
+ giterr_set(GITERR_OS, "failed to set attributes");
580
528
  return -1;
581
529
  }
582
530
  }
@@ -650,13 +598,40 @@ int p_getcwd(char *buffer_out, size_t size)
650
598
  return 0;
651
599
  }
652
600
 
601
+ /*
602
+ * Returns the address of the GetFinalPathNameByHandleW function.
603
+ * This function is available on Windows Vista and higher.
604
+ */
605
+ static PFGetFinalPathNameByHandleW get_fpnbyhandle(void)
606
+ {
607
+ static PFGetFinalPathNameByHandleW pFunc = NULL;
608
+ PFGetFinalPathNameByHandleW toReturn = pFunc;
609
+
610
+ if (!toReturn) {
611
+ HMODULE hModule = GetModuleHandleW(L"kernel32");
612
+
613
+ if (hModule)
614
+ toReturn = (PFGetFinalPathNameByHandleW)GetProcAddress(hModule, "GetFinalPathNameByHandleW");
615
+
616
+ pFunc = toReturn;
617
+ }
618
+
619
+ assert(toReturn);
620
+
621
+ return toReturn;
622
+ }
623
+
653
624
  static int getfinalpath_w(
654
625
  git_win32_path dest,
655
626
  const wchar_t *path)
656
627
  {
628
+ PFGetFinalPathNameByHandleW pgfp = get_fpnbyhandle();
657
629
  HANDLE hFile;
658
630
  DWORD dwChars;
659
631
 
632
+ if (!pgfp)
633
+ return -1;
634
+
660
635
  /* Use FILE_FLAG_BACKUP_SEMANTICS so we can open a directory. Do not
661
636
  * specify FILE_FLAG_OPEN_REPARSE_POINT; we want to open a handle to the
662
637
  * target of the link. */
@@ -667,14 +642,14 @@ static int getfinalpath_w(
667
642
  return -1;
668
643
 
669
644
  /* Call GetFinalPathNameByHandle */
670
- dwChars = GetFinalPathNameByHandleW(hFile, dest, GIT_WIN_PATH_UTF16, FILE_NAME_NORMALIZED);
645
+ dwChars = pgfp(hFile, dest, GIT_WIN_PATH_UTF16, FILE_NAME_NORMALIZED);
671
646
  CloseHandle(hFile);
672
647
 
673
648
  if (!dwChars || dwChars >= GIT_WIN_PATH_UTF16)
674
649
  return -1;
675
650
 
676
- /* The path may be delivered to us with a namespace prefix; remove */
677
- return (int)git_win32_path_remove_namespace(dest, dwChars);
651
+ /* The path may be delivered to us with a prefix; canonicalize */
652
+ return (int)git_win32__canonicalize_path(dest, dwChars);
678
653
  }
679
654
 
680
655
  static int follow_and_lstat_link(git_win32_path path, struct stat* buf)
@@ -857,7 +832,7 @@ int p_mkstemp(char *tmp_path)
857
832
  return -1;
858
833
  #endif
859
834
 
860
- return p_open(tmp_path, O_RDWR | O_CREAT | O_EXCL, 0744); /* -V536 */
835
+ return p_open(tmp_path, O_RDWR | O_CREAT | O_EXCL, 0744); //-V536
861
836
  }
862
837
 
863
838
  int p_access(const char* path, mode_t mode)
@@ -896,7 +871,7 @@ int p_rename(const char *from, const char *to)
896
871
  int p_recv(GIT_SOCKET socket, void *buffer, size_t length, int flags)
897
872
  {
898
873
  if ((size_t)((int)length) != length)
899
- return -1; /* git_error_set will be done by caller */
874
+ return -1; /* giterr_set will be done by caller */
900
875
 
901
876
  return recv(socket, buffer, (int)length, flags);
902
877
  }
@@ -904,7 +879,7 @@ int p_recv(GIT_SOCKET socket, void *buffer, size_t length, int flags)
904
879
  int p_send(GIT_SOCKET socket, const void *buffer, size_t length, int flags)
905
880
  {
906
881
  if ((size_t)((int)length) != length)
907
- return -1; /* git_error_set will be done by caller */
882
+ return -1; /* giterr_set will be done by caller */
908
883
 
909
884
  return send(socket, buffer, (int)length, flags);
910
885
  }