Skip to content

Commit 1f2df6f

Browse files
pks-tgitster
authored andcommitted
apply: reorder functions to move image-related things together
While most of the functions relating to `struct image` are relatively close to one another, `fuzzy_matchlines()` sits in between those even though it is rather unrelated. Reorder functions such that `struct image`-related functions are next to each other. While at it, move `clear_image()` to the top such that it is close to the struct definition itself. This makes this lifecycle-related thing easy to discover. Signed-off-by: Patrick Steinhardt <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent ed15518 commit 1f2df6f

File tree

1 file changed

+53
-53
lines changed

1 file changed

+53
-53
lines changed

apply.c

Lines changed: 53 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,13 @@ struct image {
285285
struct line *line;
286286
};
287287

288+
static void clear_image(struct image *image)
289+
{
290+
free(image->buf);
291+
free(image->line_allocated);
292+
memset(image, 0, sizeof(*image));
293+
}
294+
288295
static uint32_t hash_line(const char *cp, size_t len)
289296
{
290297
size_t i;
@@ -297,42 +304,6 @@ static uint32_t hash_line(const char *cp, size_t len)
297304
return h;
298305
}
299306

300-
/*
301-
* Compare lines s1 of length n1 and s2 of length n2, ignoring
302-
* whitespace difference. Returns 1 if they match, 0 otherwise
303-
*/
304-
static int fuzzy_matchlines(const char *s1, size_t n1,
305-
const char *s2, size_t n2)
306-
{
307-
const char *end1 = s1 + n1;
308-
const char *end2 = s2 + n2;
309-
310-
/* ignore line endings */
311-
while (s1 < end1 && (end1[-1] == '\r' || end1[-1] == '\n'))
312-
end1--;
313-
while (s2 < end2 && (end2[-1] == '\r' || end2[-1] == '\n'))
314-
end2--;
315-
316-
while (s1 < end1 && s2 < end2) {
317-
if (isspace(*s1)) {
318-
/*
319-
* Skip whitespace. We check on both buffers
320-
* because we don't want "a b" to match "ab".
321-
*/
322-
if (!isspace(*s2))
323-
return 0;
324-
while (s1 < end1 && isspace(*s1))
325-
s1++;
326-
while (s2 < end2 && isspace(*s2))
327-
s2++;
328-
} else if (*s1++ != *s2++)
329-
return 0;
330-
}
331-
332-
/* If we reached the end on one side only, lines don't match. */
333-
return s1 == end1 && s2 == end2;
334-
}
335-
336307
static void add_line_info(struct image *img, const char *bol, size_t len, unsigned flag)
337308
{
338309
ALLOC_GROW(img->line_allocated, img->nr + 1, img->alloc);
@@ -373,11 +344,17 @@ static void prepare_image(struct image *image, char *buf, size_t len,
373344
image->line = image->line_allocated;
374345
}
375346

376-
static void clear_image(struct image *image)
347+
static void remove_first_line(struct image *img)
377348
{
378-
free(image->buf);
379-
free(image->line_allocated);
380-
memset(image, 0, sizeof(*image));
349+
img->buf += img->line[0].len;
350+
img->len -= img->line[0].len;
351+
img->line++;
352+
img->nr--;
353+
}
354+
355+
static void remove_last_line(struct image *img)
356+
{
357+
img->len -= img->line[--img->nr].len;
381358
}
382359

383360
/* fmt must contain _one_ %s and no other substitution */
@@ -2419,6 +2396,42 @@ static void update_pre_post_images(struct image *preimage,
24192396
postimage->nr -= reduced;
24202397
}
24212398

2399+
/*
2400+
* Compare lines s1 of length n1 and s2 of length n2, ignoring
2401+
* whitespace difference. Returns 1 if they match, 0 otherwise
2402+
*/
2403+
static int fuzzy_matchlines(const char *s1, size_t n1,
2404+
const char *s2, size_t n2)
2405+
{
2406+
const char *end1 = s1 + n1;
2407+
const char *end2 = s2 + n2;
2408+
2409+
/* ignore line endings */
2410+
while (s1 < end1 && (end1[-1] == '\r' || end1[-1] == '\n'))
2411+
end1--;
2412+
while (s2 < end2 && (end2[-1] == '\r' || end2[-1] == '\n'))
2413+
end2--;
2414+
2415+
while (s1 < end1 && s2 < end2) {
2416+
if (isspace(*s1)) {
2417+
/*
2418+
* Skip whitespace. We check on both buffers
2419+
* because we don't want "a b" to match "ab".
2420+
*/
2421+
if (!isspace(*s2))
2422+
return 0;
2423+
while (s1 < end1 && isspace(*s1))
2424+
s1++;
2425+
while (s2 < end2 && isspace(*s2))
2426+
s2++;
2427+
} else if (*s1++ != *s2++)
2428+
return 0;
2429+
}
2430+
2431+
/* If we reached the end on one side only, lines don't match. */
2432+
return s1 == end1 && s2 == end2;
2433+
}
2434+
24222435
static int line_by_line_fuzzy_match(struct image *img,
24232436
struct image *preimage,
24242437
struct image *postimage,
@@ -2804,19 +2817,6 @@ static int find_pos(struct apply_state *state,
28042817
return -1;
28052818
}
28062819

2807-
static void remove_first_line(struct image *img)
2808-
{
2809-
img->buf += img->line[0].len;
2810-
img->len -= img->line[0].len;
2811-
img->line++;
2812-
img->nr--;
2813-
}
2814-
2815-
static void remove_last_line(struct image *img)
2816-
{
2817-
img->len -= img->line[--img->nr].len;
2818-
}
2819-
28202820
/*
28212821
* The change from "preimage" and "postimage" has been found to
28222822
* apply at applied_pos (counts in line numbers) in "img".

0 commit comments

Comments
 (0)