From: Rogan Dawes <lists@dawes.za.net>
To: Git Mailing List <git@vger.kernel.org>
Subject: Type mismatches in safe_read and friends?
Date: Mon, 26 Mar 2007 16:13:10 +0200 [thread overview]
Message-ID: <4607D4F6.80703@dawes.za.net> (raw)
Hi folks,
I'm starting to learn a little C, and I figured I'd learn from the
masters ;-) I needed to read in some data from the network, and I
figured the safe_* calls would be a good example of how to do it correctly.
So, I took a look, and found:
static void safe_read(int fd, void *buffer, unsigned size)
{
int n = 0;
while (n < size) {
int ret = xread(fd, (char *) buffer + n, size - n);
if (ret < 0)
die("read error (%s)", strerror(errno));
if (!ret)
die("The remote end hung up unexpectedly");
n += ret;
}
}
Surely size and 'n' should have the same signed-ness?
And, in fact, shouldn't they actually be size_t, rather than 'int',
since xread is defined as:
static inline ssize_t xread(int fd, void *buf, size_t len)
{
ssize_t nr;
while (1) {
nr = read(fd, buf, len);
if ((nr < 0) && (errno == EAGAIN || errno == EINTR))
continue;
return nr;
}
}
And finally, 'ret' in safe_read should be a 'ssize_t', not an int, right?
Or is it just a case that we don't really care, since we control the
ranges of the values, and the underlying types are int anyway? Patches
to follow if I get an indication that anyone cares, otherwise I'd be
posting my question to a C newbies group. ;-)
Rogan
next reply other threads:[~2007-03-26 14:14 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-26 14:13 Rogan Dawes [this message]
2007-03-26 16:47 ` Type mismatches in safe_read and friends? Shawn O. Pearce
2007-03-27 10:34 ` Rogan Dawes
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=4607D4F6.80703@dawes.za.net \
--to=lists@dawes.za.net \
--cc=git@vger.kernel.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).