cmArchiveWrite: Fix signed/unsigned compare/convert

The libarchive interface accepts size_t but returns ssize_t.  The std
streams interface wants streamsize, which is typically ssize_t.  Since
no one type for our variable matches without conversions, make the
conversions explicit to avoid -Wsign-conversion and -Wsign-compare
warnings.
This commit is contained in:
Brad King 2010-08-09 10:30:41 -04:00
parent 1b5b2ed3b2
commit aef672311a
1 changed files with 8 additions and 4 deletions

View File

@ -12,6 +12,7 @@
#include "cmArchiveWrite.h" #include "cmArchiveWrite.h"
#include "cmSystemTools.h" #include "cmSystemTools.h"
#include <cmsys/ios/iostream>
#include <cmsys/Directory.hxx> #include <cmsys/Directory.hxx>
#include <cm_libarchive.h> #include <cm_libarchive.h>
@ -33,7 +34,8 @@ struct cmArchiveWrite::Callback
const void *b, size_t n) const void *b, size_t n)
{ {
cmArchiveWrite* self = static_cast<cmArchiveWrite*>(cd); cmArchiveWrite* self = static_cast<cmArchiveWrite*>(cd);
if(self->Stream.write(static_cast<const char*>(b), n)) if(self->Stream.write(static_cast<const char*>(b),
static_cast<cmsys_ios::streamsize>(n)))
{ {
return static_cast<__LA_SSIZE_T>(n); return static_cast<__LA_SSIZE_T>(n);
} }
@ -214,7 +216,8 @@ bool cmArchiveWrite::AddData(const char* file, size_t size)
size_t nleft = size; size_t nleft = size;
while(nleft > 0) while(nleft > 0)
{ {
size_t nnext = nleft > sizeof(buffer)? sizeof(buffer) : nleft; cmsys_ios::streamsize nnext = static_cast<cmsys_ios::streamsize>(
nleft > sizeof(buffer)? sizeof(buffer) : nleft);
fin.read(buffer, nnext); fin.read(buffer, nnext);
// Some stream libraries (older HPUX) return failure at end of // Some stream libraries (older HPUX) return failure at end of
// file on the last read even if some data were read. Check // file on the last read even if some data were read. Check
@ -223,13 +226,14 @@ bool cmArchiveWrite::AddData(const char* file, size_t size)
{ {
break; break;
} }
if(archive_write_data(this->Archive, buffer, nnext) != nnext) if(archive_write_data(this->Archive, buffer,
static_cast<size_t>(nnext)) != nnext)
{ {
this->Error = "archive_write_data: "; this->Error = "archive_write_data: ";
this->Error += archive_error_string(this->Archive); this->Error += archive_error_string(this->Archive);
return false; return false;
} }
nleft -= nnext; nleft -= static_cast<size_t>(nnext);
} }
if(nleft > 0) if(nleft > 0)
{ {