#endif /* GIT_WIN32 */
-int p_read(git_file fd, void *buf, size_t cnt)
+ssize_t p_read(git_file fd, void *buf, size_t cnt)
{
char *b = buf;
while (cnt) {
ssize_t r;
#ifdef GIT_WIN32
- assert((size_t)((unsigned int)cnt) == cnt);
- r = read(fd, b, (unsigned int)cnt);
+ r = read(fd, b, cnt > INT_MAX ? INT_MAX : (unsigned int)cnt);
#else
r = read(fd, b, cnt);
#endif
cnt -= r;
b += r;
}
- return (int)(b - (char *)buf);
+ return (b - (char *)buf);
}
int p_write(git_file fd, const void *buf, size_t cnt)
* Use your manpages to check the docs on these.
*/
-extern int p_read(git_file fd, void *buf, size_t cnt);
+extern ssize_t p_read(git_file fd, void *buf, size_t cnt);
extern int p_write(git_file fd, const void *buf, size_t cnt);
#define p_close(fd) close(fd)