Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
More efficient cr trimming
Baptiste Daroussin committed 11 years ago
commit 04e897b601df4a4dda3dde3eb07936157df07acd
parent 5d52470
1 file changed +16 -4
modified libpkg/pkg.c
@@ -575,6 +575,7 @@ pkg_set_from_fileat(int fd, struct pkg *pkg, pkg_attr attr, const char *path,
    bool trimcr)
{
	char *buf = NULL;
+
	char *cp;
	off_t size = 0;
	int ret = EPKG_OK;

@@ -584,8 +585,13 @@ pkg_set_from_fileat(int fd, struct pkg *pkg, pkg_attr attr, const char *path,
	if ((ret = file_to_bufferat(fd, path, &buf, &size)) !=  EPKG_OK)
		return (ret);

-
	while (trimcr && buf[strlen(buf) - 1] == '\n')
-
		buf[strlen(buf) - 1] = '\0';
+
	if (trimcr) {
+
		cp = buf + strlen(buf) - 1;
+
		while (cp > buf && *cp == '\n') {
+
			*cp = 0;
+
			cp--;
+
		}
+
	}

	ret = pkg_set(pkg, attr, buf);

@@ -598,6 +604,7 @@ int
pkg_set_from_file(struct pkg *pkg, pkg_attr attr, const char *path, bool trimcr)
{
	char *buf = NULL;
+
	char *cp;
	off_t size = 0;
	int ret = EPKG_OK;

@@ -607,8 +614,13 @@ pkg_set_from_file(struct pkg *pkg, pkg_attr attr, const char *path, bool trimcr)
	if ((ret = file_to_buffer(path, &buf, &size)) !=  EPKG_OK)
		return (ret);

-
	while (trimcr && buf[strlen(buf) - 1] == '\n')
-
		buf[strlen(buf) - 1] = '\0';
+
	if (trimcr) {
+
		cp = buf + strlen(buf) - 1;
+
		while (cp > buf && *cp == '\n') {
+
			*cp = 0;
+
			cp--;
+
		}
+
	}

	ret = pkg_set(pkg, attr, buf);