From: "Mike Frysinger" <vapier@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/portage-utils:master commit in: /, libq/
Date: Sat, 28 Nov 2015 02:44:34 +0000 (UTC) [thread overview]
Message-ID: <1448648054.92de436359da8f14b7dbef5f62af959095b79d06.vapier@gentoo> (raw)
commit: 92de436359da8f14b7dbef5f62af959095b79d06
Author: Mike Frysinger <vapier <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 27 18:14:14 2015 +0000
Commit: Mike Frysinger <vapier <AT> gentoo <DOT> org>
CommitDate: Fri Nov 27 18:14:14 2015 +0000
URL: https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=92de4363
use the return value of getline
This allows us to avoid calling strlen to get a value getline already
calculated. We can also pass this value on to rmspace to let it trim
space for us.
libq/colors.c | 16 ++++++----------
libq/profile.c | 7 ++++---
libq/rmspace.c | 8 ++++++--
main.c | 1 +
qcache.c | 9 ++++-----
qfile.c | 8 ++++----
qlop.c | 19 ++++++++-----------
qmerge.c | 15 +++++++--------
qsearch.c | 11 +++++------
quse.c | 25 ++++++++++---------------
10 files changed, 55 insertions(+), 64 deletions(-)
diff --git a/libq/colors.c b/libq/colors.c
index bd2c1e0..6ddcdda 100644
--- a/libq/colors.c
+++ b/libq/colors.c
@@ -50,7 +50,7 @@ void color_remap(void)
{
FILE *fp;
unsigned int i;
- size_t buflen;
+ size_t buflen, linelen;
char *buf;
char *p;
unsigned int lineno = 0;
@@ -59,22 +59,18 @@ void color_remap(void)
return;
buf = NULL;
- while (getline(&buf, &buflen, fp) != -1) {
+ while ((linelen = getline(&buf, &buflen, fp)) != -1) {
lineno++;
/* eat comments */
if ((p = strchr(buf, '#')) != NULL)
*p = '\0';
- if (strchr(buf, '=') == NULL)
- continue;
-
- /* eat the end of the buffer first */
- if ((p = strchr(buf, '\r')) != NULL)
- *p = 0;
- if ((p = strchr(buf, '\n')) != NULL)
- *p = 0;
+ rmspace_len(buf, linelen);
p = strchr(buf, '=');
+ if (p == NULL)
+ continue;
+
*p++ = 0; /* split the pair */
for (i = 0; i < ARRAY_SIZE(color_pairs); ++i)
if (strcmp(buf, color_pairs[i].name) == 0) {
diff --git a/libq/profile.c b/libq/profile.c
index 75f3cb0..66e5caf 100644
--- a/libq/profile.c
+++ b/libq/profile.c
@@ -6,7 +6,7 @@ q_profile_walk_at(int dir_fd, const char *dir, const char *file,
{
FILE *fp;
int subdir_fd, fd;
- size_t buflen;
+ size_t buflen, linelen;
char *buf;
/* Pop open this profile dir */
@@ -46,13 +46,14 @@ q_profile_walk_at(int dir_fd, const char *dir, const char *file,
}
buf = NULL;
- while (getline(&buf, &buflen, fp) != -1) {
+ while ((linelen = getline(&buf, &buflen, fp)) != -1) {
char *s;
+ rmspace_len(buf, linelen);
+
s = strchr(buf, '#');
if (s)
*s = '\0';
- rmspace(buf);
data = q_profile_walk_at(subdir_fd, buf, file, callback, data);
}
diff --git a/libq/rmspace.c b/libq/rmspace.c
index d374d7f..b8ac5a3 100644
--- a/libq/rmspace.c
+++ b/libq/rmspace.c
@@ -1,9 +1,8 @@
/* removed leading/trailing extraneous white space */
-static char *rmspace(char *s)
+static char *rmspace_len(char *s, size_t len)
{
char *p;
- size_t len = strlen(s);
/* find the start of trailing space and set it to \0 */
for (p = s + len - 1; (p >= s && isspace(*p)); --p)
continue;
@@ -17,3 +16,8 @@ static char *rmspace(char *s)
memmove(s, p, len - (p - s) + 1);
return s;
}
+
+static char *rmspace(char *s)
+{
+ return rmspace_len(s, strlen(s));
+}
diff --git a/main.c b/main.c
index 10af2db..42a3f26 100644
--- a/main.c
+++ b/main.c
@@ -15,6 +15,7 @@ static bool eat_file_fd(int, char **, size_t *);
static bool eat_file_at(int, const char *, char **, size_t *);
int rematch(const char *, const char *, int);
static char *rmspace(char *);
+static char *rmspace_len(char *, size_t);
void initialize_portage_env(void);
void initialize_ebuild_flat(void);
diff --git a/qcache.c b/qcache.c
index 0968d33..5f65fe0 100644
--- a/qcache.c
+++ b/qcache.c
@@ -319,10 +319,10 @@ _q_static
portage_cache *qcache_read_cache_file(const char *filename)
{
struct stat s;
- char *ptr, *buf;
+ char *buf;
FILE *f;
portage_cache *ret = NULL;
- size_t len, buflen;
+ size_t len, buflen, linelen;
if ((f = fopen(filename, "r")) == NULL)
goto err;
@@ -336,9 +336,8 @@ portage_cache *qcache_read_cache_file(const char *filename)
len = sizeof(*ret) + s.st_size + 1;
ret = xzalloc(len);
- while (getline(&buf, &buflen, f) != -1) {
- if ((ptr = strrchr(buf, '\n')) != NULL)
- *ptr = 0;
+ while ((linelen = getline(&buf, &buflen, f)) != -1) {
+ rmspace_len(buf, linelen);
if (strncmp(buf, "DEPEND=", 7) == 0)
ret->DEPEND = xstrdup(buf + 7);
diff --git a/qfile.c b/qfile.c
index a32e512..6d36e96 100644
--- a/qfile.c
+++ b/qfile.c
@@ -513,10 +513,10 @@ int qfile_main(int argc, char **argv)
for (i = 0; i < qargc; ++i)
free(qargv[i]);
qargc = 0;
- while (getline(&state.buf, &state.buflen, args_file) != -1) {
- if ((p = strchr(state.buf, '\n')) != NULL)
- *p = '\0';
- if (state.buf == p)
+ size_t linelen;
+ while ((linelen = getline(&state.buf, &state.buflen, args_file)) != -1) {
+ rmspace_len(state.buf, linelen);
+ if (state.buf[0] == '\0')
continue;
qargv[qargc] = xstrdup(state.buf);
if (++qargc >= max_args)
diff --git a/qlop.c b/qlop.c
index 390865a..f2f97c6 100644
--- a/qlop.c
+++ b/qlop.c
@@ -240,7 +240,7 @@ _q_static void
show_emerge_history(char listflag, int argc, char **argv, const char *logfile)
{
FILE *fp;
- size_t buflen;
+ size_t buflen, linelen;
char *buf, merged;
char *p, *q;
int i;
@@ -252,8 +252,8 @@ show_emerge_history(char listflag, int argc, char **argv, const char *logfile)
}
buf = NULL;
- while (getline(&buf, &buflen, fp) != -1) {
- if (strlen(buf) < 30)
+ while ((linelen = getline(&buf, &buflen, fp)) != -1) {
+ if (linelen < 30)
continue;
for (i = 0; i < argc; ++i)
@@ -262,8 +262,7 @@ show_emerge_history(char listflag, int argc, char **argv, const char *logfile)
if (argc && i == argc)
continue;
- if ((p = strchr(buf, '\n')) != NULL)
- *p = 0;
+ rmspace_len(buf, linelen);
if ((p = strchr(buf, ':')) == NULL)
continue;
*p = 0;
@@ -327,7 +326,7 @@ _q_static void
show_sync_history(const char *logfile)
{
FILE *fp;
- size_t buflen, len;
+ size_t buflen, linelen;
char *buf, *p;
time_t t;
@@ -338,10 +337,9 @@ show_sync_history(const char *logfile)
buf = NULL;
/* Just find the finish lines. */
- while (getline(&buf, &buflen, fp) != -1) {
- len = strlen(buf);
+ while ((linelen = getline(&buf, &buflen, fp)) != -1) {
/* This cuts out like ~10% of the log. */
- if (len < 35)
+ if (linelen < 35)
continue;
/* Make sure there's a timestamp in here. */
@@ -353,8 +351,7 @@ show_sync_history(const char *logfile)
continue;
p += 19;
- if (buf[len - 1] == '\n')
- buf[len - 1] = '\0';
+ rmspace_len(buf, linelen);
t = (time_t)atol(buf);
diff --git a/qmerge.c b/qmerge.c
index ddc0a10..297f939 100644
--- a/qmerge.c
+++ b/qmerge.c
@@ -1633,7 +1633,7 @@ _q_static int
parse_packages(queue *todo)
{
FILE *fp;
- size_t buflen;
+ size_t buflen, linelen;
char *buf, *p;
struct pkg_t Pkg;
depend_atom *pkg_atom;
@@ -1645,12 +1645,11 @@ parse_packages(queue *todo)
repo[0] = '\0';
/* First consume the header with the common data. */
- while (getline(&buf, &buflen, fp) != -1) {
- if (*buf == '\n')
+ while ((linelen = getline(&buf, &buflen, fp)) != -1) {
+ rmspace_len(buf, linelen);
+ if (buf[0] == '\0')
break;
- if ((p = strchr(buf, '\n')) != NULL)
- *p = 0;
if ((p = strchr(buf, ':')) == NULL)
continue;
if (p[1] != ' ')
@@ -1766,7 +1765,7 @@ _q_static queue *
qmerge_add_set_file(const char *dir, const char *file, queue *set)
{
FILE *fp;
- size_t buflen;
+ size_t buflen, linelen;
char *buf, *fname;
/* Find the file to read */
@@ -1781,8 +1780,8 @@ qmerge_add_set_file(const char *dir, const char *file, queue *set)
/* Load each entry */
buf = NULL;
- while (getline(&buf, &buflen, fp) != -1) {
- rmspace(buf);
+ while ((linelen = getline(&buf, &buflen, fp)) != -1) {
+ rmspace_len(buf, linelen);
set = add_set(buf, set);
}
free(buf);
diff --git a/qsearch.c b/qsearch.c
index 427580d..02d43ca 100644
--- a/qsearch.c
+++ b/qsearch.c
@@ -41,7 +41,7 @@ int qsearch_main(int argc, char **argv)
char show_homepage = 0, show_name_only = 0;
char search_desc = 0, search_all = 0, search_name = 1, search_cache = CACHE_EBUILD;
const char *search_vars[] = { "DESCRIPTION=", "HOMEPAGE=" };
- size_t search_len, ebuild_len;
+ size_t search_len, ebuild_len, linelen;
int i, idx=0;
DBG("argc=%d argv[0]=%s argv[1]=%s",
@@ -80,9 +80,8 @@ int qsearch_main(int argc, char **argv)
q = NULL; /* Silence a gcc warning. */
search_len = strlen(search_vars[idx]);
- while (getline(&ebuild, &ebuild_len, fp) != -1) {
- if ((p = strchr(ebuild, '\n')) != NULL)
- *p = 0;
+ while ((linelen = getline(&ebuild, &ebuild_len, fp)) != -1) {
+ rmspace_len(ebuild, linelen);
if (!ebuild[0])
continue;
@@ -141,8 +140,8 @@ int qsearch_main(int argc, char **argv)
char *buf = NULL;
size_t buflen;
- while (getline(&buf, &buflen, ebuildfp) != -1) {
- if (strlen(buf) <= search_len)
+ while ((linelen = getline(&buf, &buflen, ebuildfp)) != -1) {
+ if (linelen <= search_len)
continue;
if (strncmp(buf, search_vars[idx], search_len) != 0)
continue;
diff --git a/quse.c b/quse.c
index ab257bf..8ba0be1 100644
--- a/quse.c
+++ b/quse.c
@@ -82,7 +82,7 @@ static void
quse_describe_flag(const char *overlay, unsigned int ind, unsigned int argc, char **argv)
{
#define NUM_SEARCH_FILES ARRAY_SIZE(search_files)
- size_t buflen;
+ size_t buflen, linelen;
char *buf, *p;
unsigned int i, f;
size_t s;
@@ -110,13 +110,11 @@ quse_describe_flag(const char *overlay, unsigned int ind, unsigned int argc, cha
if (fp[f] == NULL)
continue;
- while (getline(&buf, &buflen, fp[f]) != -1) {
- if (buf[0] == '#' || buf[0] == '\n')
+ while ((linelen = getline(&buf, &buflen, fp[f])) != -1) {
+ rmspace_len(buf, linelen);
+ if (buf[0] == '#' || buf[0] == '\0')
continue;
- if ((p = strrchr(buf, '\n')) != NULL)
- *p = '\0';
-
switch (f) {
case 0: /* Global use.desc */
if (!strncmp(buf, argv[i], s))
@@ -193,13 +191,11 @@ quse_describe_flag(const char *overlay, unsigned int ind, unsigned int argc, cha
/* Chop the trailing .desc for better display */
*p = '\0';
- while (getline(&buf, &buflen, fp[0]) != -1) {
- if (buf[0] == '#' || buf[0] == '\n')
+ while ((linelen = getline(&buf, &buflen, fp[0])) != -1) {
+ rmspace_len(buf, linelen);
+ if (buf[0] == '#' || buf[0] == '\0')
continue;
- if ((p = strrchr(buf, '\n')) != NULL)
- *p = '\0';
-
if ((p = strchr(buf, '-')) == NULL) {
invalid_line:
warn("Invalid line in '%s': %s", de->d_name, buf);
@@ -235,7 +231,7 @@ int quse_main(int argc, char **argv)
char buf1[_Q_PATH_MAX];
char buf2[_Q_PATH_MAX];
- size_t ebuildlen;
+ size_t ebuildlen, linelen;
char *ebuild;
const char *search_var = NULL;
@@ -284,12 +280,11 @@ int quse_main(int argc, char **argv)
int portdir_fd = open(portdir, O_RDONLY|O_CLOEXEC|O_PATH);
ebuild = NULL;
- while (getline(&ebuild, &ebuildlen, fp) != -1) {
+ while ((linelen = getline(&ebuild, &ebuildlen, fp)) != -1) {
FILE *newfp;
int fd;
- if ((p = strchr(ebuild, '\n')) != NULL)
- *p = 0;
+ rmspace_len(ebuild, linelen);
fd = openat(portdir_fd, ebuild, O_RDONLY|O_CLOEXEC);
if (fd < 0)
next reply other threads:[~2015-11-28 2:44 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-28 2:44 Mike Frysinger [this message]
-- strict thread matches above, loose matches on Subject: below --
2025-08-25 10:49 [gentoo-commits] proj/portage-utils:master commit in: /, libq/ Fabian Groffen
2025-08-19 14:11 Fabian Groffen
2025-04-20 8:43 Fabian Groffen
2024-01-02 7:57 Fabian Groffen
2020-05-16 18:27 Fabian Groffen
2020-01-05 16:08 Fabian Groffen
2020-01-04 19:48 Fabian Groffen
2020-01-01 17:54 Fabian Groffen
2019-11-15 13:52 Fabian Groffen
2019-07-14 13:09 Fabian Groffen
2019-05-07 6:19 Fabian Groffen
2019-05-06 17:33 Fabian Groffen
2019-05-02 15:48 Fabian Groffen
2018-05-18 16:58 Fabian Groffen
2016-12-29 2:25 Mike Frysinger
2016-12-29 2:25 Mike Frysinger
2016-02-14 1:26 Mike Frysinger
2016-02-14 1:26 Mike Frysinger
2015-11-28 2:44 Mike Frysinger
2015-02-24 1:26 Mike Frysinger
2014-03-21 5:32 Mike Frysinger
2014-03-10 8:45 Mike Frysinger
2014-03-10 6:00 Mike Frysinger
2014-03-08 5:51 Mike Frysinger
2014-03-08 5:51 Mike Frysinger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1448648054.92de436359da8f14b7dbef5f62af959095b79d06.vapier@gentoo \
--to=vapier@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox