Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Do not add a trailing newline when not necessary in 3 way merge
Baptiste Daroussin committed 11 years ago
commit f7031e20287b4ae39c56d588a70b0cf245db9ece
parent c72f5c8
2 files changed +47 -6
modified libpkg/merge3.c
@@ -1,3 +1,34 @@
+
/*-
+
 * Copyright (c) 2014 Baptiste Daroussin <bapt@FreeBSD.org>
+
 * All rights reserved.
+
 *~
+
 * Redistribution and use in source and binary forms, with or without
+
 * modification, are permitted provided that the following conditions
+
 * are met:
+
 * 1. Redistributions of source code must retain the above copyright
+
 *    notice, this list of conditions and the following disclaimer
+
 *    in this position and unchanged.
+
 * 2. Redistributions in binary form must reproduce the above copyright
+
 *    notice, this list of conditions and the following disclaimer in the
+
 *    documentation and/or other materials provided with the distribution.
+
 *~
+
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+
 * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
 */
+

+
/*
+
 * This code has been extracted from the fossil scm code
+
 * and modified
+
 */
+

/*
** Copyright (c) 2007 D. Richard Hipp
**
@@ -94,9 +125,10 @@ sbuf_copy_lines(struct sbuf *to, const char *from, int N)
	if (to == NULL)
		return (i);
		
-
	sbuf_bcat(to, from, i);
-
	if (cnt != N)
+
	if (sbuf_len(to) > 0 &&
+
	    sbuf_data(to)[sbuf_len(to)-1] != '\n')
		sbuf_putc(to, '\n');
+
	sbuf_bcat(to, from, i);
	sbuf_finish(to);

	return (i+1);
modified tests/lib/merge.c
@@ -1,5 +1,5 @@
/*-
-
 * Copyright (c) 2013 Baptiste Daroussin <bapt@FreeBSD.org>
+
 * Copyright (c) 2014 Baptiste Daroussin <bapt@FreeBSD.org>
 * All rights reserved.
 *~
 * Redistribution and use in source and binary forms, with or without
@@ -40,12 +40,21 @@ ATF_TC_HEAD(merge, tc)
ATF_TC_BODY(merge, tc)
{
	struct sbuf *b = sbuf_new_auto();
-
	char pivot[] = "test1\ntest2\n";
-
	char modified[] = "test1\n#test2\n";
-
	char new[] = "test1\ntest2\ntest3\n";
+
	char *pivot = "test1\ntest2\n";
+
	char *modified = "test1\n#test2\n";
+
	char *new = "test1\ntest2\ntest3\n";

	ATF_REQUIRE_EQ(merge_3way(pivot, modified, new, b), 0);
	ATF_REQUIRE_STREQ(sbuf_data(b), "test1\n#test2\ntest3\n");
+

+
	sbuf_clear(b);
+
	pivot = "test1\ntest2";
+
	modified = "test1\n#test2";
+
	new = "test1\ntest2\ntest3";
+

+
	ATF_REQUIRE_EQ(merge_3way(pivot, modified, new, b), 0);
+
	ATF_REQUIRE_STREQ(sbuf_data(b), "test1\n#test2\ntest3");
+

	sbuf_delete(b);
}