Merge branch 'maint'

* maint:
  rebase -i: abort cleanly if the editor fails to launch
  technical-docs: document hash API
  api-strbuf.txt: fix typos and document launch_editor()
This commit is contained in:
Junio C Hamano 2009-12-19 23:20:16 -08:00
commit b6b9f83ea1
3 changed files with 57 additions and 5 deletions

View file

@ -1,6 +1,52 @@
hash API
========
Talk about <hash.h>
The hash API is a collection of simple hash table functions. Users are expected
to implement their own hashing.
(Linus)
Data Structures
---------------
`struct hash_table`::
The hash table structure. The `array` member points to the hash table
entries. The `size` member counts the total number of valid and invalid
entries in the table. The `nr` member keeps track of the number of
valid entries.
`struct hash_table_entry`::
An opaque structure representing an entry in the hash table. The `hash`
member is the entry's hash key and the `ptr` member is the entry's
value.
Functions
---------
`init_hash`::
Initialize the hash table.
`free_hash`::
Release memory associated with the hash table.
`insert_hash`::
Insert a pointer into the hash table. If an entry with that hash
already exists, a pointer to the existing entry's value is returned.
Otherwise NULL is returned. This allows callers to implement
chaining, etc.
`lookup_hash`::
Lookup an entry in the hash table. If an entry with that hash exists
the entry's value is returned. Otherwise NULL is returned.
`for_each_hash`::
Call a function for each entry in the hash table. The function is
expected to take the entry's value as its only argument and return an
int. If the function returns a negative int the loop is aborted
immediately. Otherwise, the return value is accumulated and the sum
returned upon completion of the loop.

View file

@ -12,7 +12,7 @@ strbuf API actually relies on the string being free of NULs.
strbufs has some invariants that are very important to keep in mind:
. The `buf` member is never NULL, so you it can be used in any usual C
. The `buf` member is never NULL, so it can be used in any usual C
string operations safely. strbuf's _have_ to be initialized either by
`strbuf_init()` or by `= STRBUF_INIT` before the invariants, though.
+
@ -55,7 +55,7 @@ Data structures
* `struct strbuf`
This is string buffer structure. The `len` member can be used to
This is the string buffer structure. The `len` member can be used to
determine the current length of the string, and `buf` member provides access to
the string itself.
@ -253,3 +253,9 @@ same behaviour as well.
comments are considered contents to be removed or not.
`launch_editor`::
Launch the user preferred editor to edit a file and fill the buffer
with the file's contents upon the user completing their editing. The
third argument can be used to set the environment which the editor is
run in. If the buffer is NULL the editor is launched as usual but the
file's contents are not read into the buffer upon completion.

View file

@ -779,7 +779,7 @@ EOF
cp "$TODO" "$TODO".backup
git_editor "$TODO" ||
die "Could not execute editor"
die_abort "Could not execute editor"
has_action "$TODO" ||
die_abort "Nothing to do"