Commit Briefs
got: minor refactor of got_pathlist_free() API
Accept flag parameter to optionally specify which pointers to free. This saves callers looping through the list to free pointers. ok + fix stsp@
use mkstemps(3) instead of mkstemp(3) for opening named temporary files
Allows 'got commit' to use a ".diff" suffix for temporary diff files. ok op@
factorize imsg_clear calls after imsg_flush failures
imsg_clear frees and closes resources allocated as part of enqueueing imsgs so it's a no-op after reads. discussed with and ok stsp@
let 'got fetch' send all references to the server to avoid redundant downloads
Problem reported by naddy. ok naddy
fix 'got fetch' downloading too many objects in some cases
Always announce all local references to the server when fetching changes. We used to do this only in mirror mode. In regular mode only refs/tags and refs/remotes/origin were announced, which could result in unnecessary downloads if relevant objects exist in refs/heads or elsewhere.
rename got_fetch_parse_uri() to got_dial_parse_uri()
This function is now being used by both 'got fetch' and 'got send' so its former name was misleading.
de-duplicate a constant used by both 'got fetch' and 'got send'
Both GOT_FETCH_PKTMAX and GOT_SEND_PKTMAX had the same value. Declare this value as GOT_PKT_MAX in got_lib_pkt.h instead.
move duplicated dial_ssh() and dial_git() functions into a common file
These functions are used by 'got send' and 'got fetch' in order to open network connections to a server. Move them into new file lib/dial.c and declare relevant functions in got_dial.h and lib/got_lib_dial.h. No functional change.
use socketpair(2) instead of pipe(2) for bi-directional communication
On Linux, pipes returned from pipe(2) only work in one direction. This broke 'got clone' over ssh in the -portable version because got-fetch-pack assumes it can use its fetchfd for both reading and writing. I wrote a complicated diff to use two pipe(2) calls instead of one, but millert suggested a simpler solution: Use socketpair(2) instead of pipe(2). ok millert jrick tracey
dial_git(): fix memory leak and simplify
Simplify dial_git() by formatting the initial Git protocol packet with dprintf, suggested by millert, and stop leaking an asprintf buffer. ok stsp
avoid signed vs unsigned comparisons in fetch.c
ssizeof() macro idea courtesy of millert@ ok millert@