From: teigland@sourceware.org <teigland@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] cluster/group/lib libgroup.c
Date: 24 Oct 2006 15:11:21 -0000 [thread overview]
Message-ID: <20061024151121.6739.qmail@sourceware.org> (raw)
CVSROOT: /cvs/cluster
Module name: cluster
Changes by: teigland at sourceware.org 2006-10-24 15:11:20
Modified files:
group/lib : libgroup.c
Log message:
clean up gross code
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/lib/libgroup.c.diff?cvsroot=cluster&r1=1.23&r2=1.24
--- cluster/group/lib/libgroup.c 2006/10/21 17:15:12 1.23
+++ cluster/group/lib/libgroup.c 2006/10/24 15:11:20 1.24
@@ -297,23 +297,24 @@
for (i = 0; !timeout || i < timeout * 2; i++) {
h->fd = connect_groupd();
- if (h->fd > 0 || !timeout) /* if successful or only once allowed */
+ if (h->fd > 0 || !timeout)
break;
usleep(500000);
}
- if (h->fd > 0) {
- memset(buf, 0, sizeof(buf));
- snprintf(buf, sizeof(buf), "setup %s %d", prog_name, level);
-
- for (; !timeout || i < timeout * 2; i++) {
- rv = do_write(h->fd, &buf, GROUPD_MSGLEN);
- if (rv >= 0)
- return (group_handle_t) h;
- if (!timeout)
- break;
- usleep(500000);
- }
- }
+
+ if (h->fd <= 0)
+ goto fail;
+
+ memset(buf, 0, sizeof(buf));
+ snprintf(buf, sizeof(buf), "setup %s %d", prog_name, level);
+
+ rv = do_write(h->fd, &buf, GROUPD_MSGLEN);
+ if (rv < 0)
+ goto fail;
+
+ return (group_handle_t) h;
+
+ fail:
saved_errno = errno;
close(h->fd);
free(h);
@@ -446,35 +447,43 @@
return rv;
}
-int group_get_groups(int max, int *count, group_data_t *data)
+int group_get_groups(int max, int *count, group_data_t *data)
{
char buf[GROUPD_MSGLEN];
- group_data_t empty;
+ group_data_t dbuf, empty;
int fd, rv;
+ *count = 0;
+
fd = connect_groupd();
if (fd < 0)
return fd;
- memset(&empty, 0, sizeof(empty));
memset(buf, 0, sizeof(buf));
snprintf(buf, sizeof(buf), "get_groups %d", max);
rv = do_write(fd, &buf, GROUPD_MSGLEN);
- *count = 0;
- if (!rv) {
- while (1) {
- rv = read(fd, &data[*count], sizeof(group_data_t));
- /* a blank data struct is returned when there are none */
- if (rv <= 0 || (rv == sizeof(group_data_t) &&
- !memcmp(&data[*count], &empty, rv))) {
- rv = 0;
- break;
- }
- else
- (*count)++;
+ if (rv < 0)
+ goto out;
+
+ memset(&empty, 0, sizeof(empty));
+
+ while (1) {
+ memset(&dbuf, 0, sizeof(dbuf));
+
+ rv = do_read(fd, &dbuf, sizeof(group_data_t));
+ if (rv < 0)
+ break;
+
+ if (!memcmp(&dbuf, &empty, sizeof(group_data_t))) {
+ rv = 0;
+ break;
+ } else {
+ memcpy(&data[*count], &dbuf, sizeof(group_data_t));
+ (*count)++;
}
}
+ out:
close(fd);
return rv;
}
@@ -506,3 +515,4 @@
close(fd);
return rv;
}
+
next reply other threads:[~2006-10-24 15:11 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-10-24 15:11 teigland [this message]
-- strict thread matches above, loose matches on Subject: below --
2007-10-26 20:41 [Cluster-devel] cluster/group/lib libgroup.c teigland
2007-04-30 16:56 fabbione
2006-11-20 22:54 rpeterso
2006-11-17 16:30 teigland
2006-11-17 16:30 teigland
2006-10-13 17:15 teigland
2006-09-07 19:24 teigland
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=20061024151121.6739.qmail@sourceware.org \
--to=teigland@sourceware.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;
as well as URLs for NNTP newsgroup(s).