Download raw body.
some nits for diff.git
spotted while reading the code / playing with the tests. in order: - make diff_atom_hash_update private to diff_atomize_text.c; it's debatable but i think it doesn't belong to the public diff_main.h header - reuse diff_atom_hash_update instead of handrolling it. no-op change but avoid issues if we ever want to change the hashing. - optionally look for diff in obj/ - less chatty output: avoids some printing to stderr (like "gpatch not found" or "rm: errors: No such file or directory"). I'm also moving from which(1) to the command built-in. ok? diff refs/remotes/got/main refs/heads/main commit - 405e89a6da28edc7555666affbad86a823e2c460 commit + 10e19102f24e3bd105eaf997c9fad8e49f6e7ad7 blob - 5e816ae10b5948c0aeacd27365a91f3147b96baf blob + 8dba472a6b08ba2fd590485c9c5279ebeb98cf0a --- include/diff_main.h +++ include/diff_main.h @@ -39,11 +39,6 @@ struct diff_atom { unsigned int hash; }; -/* Mix another atom_byte into the provided hash value and return the result. - * The hash value passed in for the first byte of the atom must be zero. */ -unsigned int -diff_atom_hash_update(unsigned int hash, unsigned char atom_byte); - /* Compare two atoms for equality. Return 0 on success, or errno on failure. * Set cmp to -1, 0, or 1, just like strcmp(). */ int blob - 79d9633bdaa73ce679a74c04294b35271c5374f7 blob + b7fc3e0f685bcde8614b4795d59fc479c7f4338c --- lib/diff_atomize_text.c +++ lib/diff_atomize_text.c @@ -29,7 +29,11 @@ #include "diff_internal.h" #include "diff_debug.h" -unsigned int +/* + * Mix another atom_byte into the provided hash value and return the result. + * The hash value passed in for the first byte of the atom must be zero. + */ +static unsigned int diff_atom_hash_update(unsigned int hash, unsigned char atom_byte) { return hash * 23 + atom_byte; @@ -143,7 +147,7 @@ diff_data_atomize_text_lines_mmap(struct diff_data *d) while (line_end < end && *line_end != '\r' && *line_end != '\n') { if (!ignore_whitespace || !isspace(*line_end)) - hash = hash * 23 + *line_end; + hash = diff_atom_hash_update(hash, *line_end); if (*line_end == '\0') embedded_nul = true; line_end++; blob - d8d3aa95464f45b8a21779276ef6a7de72e4c09f blob + 84f898a2d3fd7e827f37d2c2472e5d90bc945d84 --- test/verify_all.sh +++ test/verify_all.sh @@ -1,10 +1,13 @@ #!/bin/sh -diff_prog="../diff/diff" +diff_prog="../diff/obj/diff" +if [ ! -x $diff_prog ]; then + diff_prog="../diff/diff" +fi # At present, test015 only passes with GNU patch. # Larry's patch has a bug with empty files in combination with -R... -if which gpatch > /dev/null; then +if command -v gpatch >/dev/null 2>&1; then patch_prog="gpatch" else patch_prog="patch" @@ -12,7 +15,7 @@ fi diff_type=unidiff -rm errors +rm -f errors verify_diff_script() { orig_left="$1"
some nits for diff.git