diff options
author | Nick Mathewson <nickm@torproject.org> | 2008-11-05 19:29:17 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2008-11-05 19:29:17 +0000 |
commit | 35bef7fefd6e8fabf759da7c54d8003210661896 (patch) | |
tree | dff4684b0a630849c27a36dd33b847923baddc85 | |
parent | ad6971d3b372ef2fd0727a0665ea29fd9c6862e0 (diff) | |
download | tor-35bef7fefd6e8fabf759da7c54d8003210661896.tar.gz tor-35bef7fefd6e8fabf759da7c54d8003210661896.zip |
make read_all and write_all return ssize_t.
svn:r17194
-rw-r--r-- | src/common/torint.h | 10 | ||||
-rw-r--r-- | src/common/util.c | 13 | ||||
-rw-r--r-- | src/common/util.h | 4 |
3 files changed, 18 insertions, 9 deletions
diff --git a/src/common/torint.h b/src/common/torint.h index 6f515495d1..9004773221 100644 --- a/src/common/torint.h +++ b/src/common/torint.h @@ -316,6 +316,16 @@ typedef uint32_t uintptr_t; #endif #endif +#ifndef SSIZE_T_MAX +#if (SIZEOF_SIZE_T == 4) +#define SSIZE_T_MAX INT32_MAX +#elif (SIZEOF_SIZE_T == 8) +#define SSIZE_T_MAX INT64_MAX +#else +#error "Can't define SSIZE_T_MAX" +#endif +#endif + /* Any size_t larger than this amount is likely to be an underflow. */ #define SIZE_T_CEILING (sizeof(char)<<(sizeof(size_t)*8 - 1)) diff --git a/src/common/util.c b/src/common/util.c index 640239f972..71f899c616 100644 --- a/src/common/util.c +++ b/src/common/util.c @@ -1357,12 +1357,12 @@ ftime_definitely_before(time_t now, time_t when) * must be 1 if fd was returned by socket() or accept(), and 0 if fd * was returned by open(). Return the number of bytes written, or -1 * on error. Only use if fd is a blocking fd. */ -int +ssize_t write_all(int fd, const char *buf, size_t count, int isSocket) { size_t written = 0; ssize_t result; - tor_assert(count < INT_MAX); /*XXXX021 make returnval an ssize_t */ + tor_assert(count < SSIZE_T_MAX); while (written != count) { if (isSocket) @@ -1373,7 +1373,7 @@ write_all(int fd, const char *buf, size_t count, int isSocket) return -1; written += result; } - return (int)count; + return (ssize_t)count; } /** Read from <b>fd</b> to <b>buf</b>, until we get <b>count</b> bytes @@ -1381,14 +1381,13 @@ write_all(int fd, const char *buf, size_t count, int isSocket) * was returned by socket() or accept(), and 0 if fd was returned by * open(). Return the number of bytes read, or -1 on error. Only use * if fd is a blocking fd. */ -int +ssize_t read_all(int fd, char *buf, size_t count, int isSocket) { - /*XXXX021 return ssize_t. */ size_t numread = 0; ssize_t result; - if (count > SIZE_T_CEILING || count > INT_MAX) + if (count > SIZE_T_CEILING || count > SSIZE_T_MAX) return -1; while (numread != count) { @@ -1402,7 +1401,7 @@ read_all(int fd, char *buf, size_t count, int isSocket) break; numread += result; } - return (int)numread; + return (ssize_t)numread; } /* diff --git a/src/common/util.h b/src/common/util.h index ea890d988c..4f8182949c 100644 --- a/src/common/util.h +++ b/src/common/util.h @@ -232,8 +232,8 @@ int ftime_definitely_after(time_t now, time_t when); int ftime_definitely_before(time_t now, time_t when); /* File helpers */ -int write_all(int fd, const char *buf, size_t count, int isSocket); -int read_all(int fd, char *buf, size_t count, int isSocket); +ssize_t write_all(int fd, const char *buf, size_t count, int isSocket); +ssize_t read_all(int fd, char *buf, size_t count, int isSocket); /** Return values from file_status(); see that function's documentation * for details. */ |