X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a793401243b24e2c3c95e97804fa9c2942bd9df3..609da8bbad84f858f98c78fb1f87b8172f292497:/src/common/tarstrm.cpp diff --git a/src/common/tarstrm.cpp b/src/common/tarstrm.cpp index c7c61dba70..f0fff936b1 100644 --- a/src/common/tarstrm.cpp +++ b/src/common/tarstrm.cpp @@ -61,7 +61,7 @@ enum { }; enum { - TAR_BLOCKSIZE = 512, + TAR_BLOCKSIZE = 512 }; // checksum type @@ -108,10 +108,10 @@ wxTarClassFactory::GetProtocols(wxStreamProtocolType type) const static const wxChar *empty[] = { NULL }; switch (type) { - case wxSTREAM_PROTOCOL: return protocols; - case wxSTREAM_MIMETYPE: return mimetypes; - case wxSTREAM_FILEEXTENSION: return fileexts; - default: return empty; + case wxSTREAM_PROTOCOL: return protocols; + case wxSTREAM_MIMETYPE: return mimetypes; + case wxSTREAM_FILEEXT: return fileexts; + default: return empty; } } @@ -154,7 +154,7 @@ private: static void check(); }; -wxDEFINE_SCOPED_PTR_TYPE(wxTarHeaderBlock); +wxDEFINE_SCOPED_PTR_TYPE(wxTarHeaderBlock) // A table giving the field names and offsets in a tar header block const wxTarField wxTarHeaderBlock::fields[] = @@ -181,10 +181,12 @@ const wxTarField wxTarHeaderBlock::fields[] = void wxTarHeaderBlock::check() { +#if 0 wxCOMPILE_TIME_ASSERT( WXSIZEOF(fields) == TAR_NUMFIELDS + 1, Wrong_number_of_elements_in_fields_table ); +#endif } bool wxTarHeaderBlock::IsAllZeros() const @@ -245,7 +247,7 @@ bool wxTarHeaderBlock::Write(wxOutputStream& out) return ok; } -bool wxTarHeaderBlock::WriteField(wxOutputStream& out, int id) +inline bool wxTarHeaderBlock::WriteField(wxOutputStream& out, int id) { return out.Write(Get(id), Len(id)).LastWrite() == Len(id); } @@ -268,7 +270,7 @@ bool wxTarHeaderBlock::SetOctal(int id, wxTarNumber n) char *p = field + Len(id); *--p = 0; while (p > field) { - *--p = '0' + (n & 7); + *--p = char('0' + (n & 7)); n >>= 3; } return n == 0; @@ -379,7 +381,7 @@ static inline wxFileOffset GetDataSize(const wxTarEntry& entry) return 0; default: return entry.GetSize(); - }; + } } @@ -412,7 +414,8 @@ wxTarEntry::~wxTarEntry() } wxTarEntry::wxTarEntry(const wxTarEntry& e) - : m_Name(e.m_Name), + : wxArchiveEntry(), + m_Name(e.m_Name), m_Mode(e.m_Mode), m_IsModeSet(e.m_IsModeSet), m_UserId(e.m_UserId), @@ -527,14 +530,14 @@ wxString wxTarEntry::GetInternalName(const wxString& name, bool wxTarEntry::IsDir() const { - return m_TypeFlag - wxTAR_DIRTYPE == 0; + return m_TypeFlag == wxTAR_DIRTYPE; } void wxTarEntry::SetIsDir(bool isDir) { if (isDir) m_TypeFlag = wxTAR_DIRTYPE; - else if (m_TypeFlag - wxTAR_DIRTYPE == 0) + else if (m_TypeFlag == wxTAR_DIRTYPE) m_TypeFlag = wxTAR_REGTYPE; } @@ -1046,10 +1049,10 @@ bool wxTarOutputStream::PutNextEntry(wxTarEntry *entry) wxTAR_LNKTYPE, wxTAR_SYMTYPE, wxTAR_CHRTYPE, wxTAR_BLKTYPE, wxTAR_DIRTYPE, wxTAR_FIFOTYPE, 0 }; - char typeflag = e->GetTypeFlag(); + int typeflag = e->GetTypeFlag(); // pax does now allow data for wxTAR_LNKTYPE - if (!m_pax || typeflag - wxTAR_LNKTYPE != 0) + if (!m_pax || typeflag != wxTAR_LNKTYPE) if (strchr(nodata, typeflag) != NULL) CloseEntry(); } @@ -1159,7 +1162,7 @@ bool wxTarOutputStream::WriteHeaders(wxTarEntry& entry) if (entry.GetSize() == wxInvalidOffset) entry.SetSize(0); - m_large = SetHeaderNumber(TAR_SIZE, entry.GetSize()); + m_large = !SetHeaderNumber(TAR_SIZE, entry.GetSize()); SetHeaderDate(_T("mtime"), entry.GetDateTime()); if (entry.GetAccessTime().IsValid()) @@ -1167,7 +1170,7 @@ bool wxTarOutputStream::WriteHeaders(wxTarEntry& entry) if (entry.GetCreateTime().IsValid()) SetHeaderDate(_T("ctime"), entry.GetCreateTime()); - *m_hdr->Get(TAR_TYPEFLAG) = entry.GetTypeFlag(); + *m_hdr->Get(TAR_TYPEFLAG) = char(entry.GetTypeFlag()); strcpy(m_hdr->Get(TAR_MAGIC), USTAR_MAGIC); strcpy(m_hdr->Get(TAR_VERSION), USTAR_VERSION); @@ -1337,7 +1340,8 @@ void wxTarOutputStream::SetHeaderDate(const wxString& key, wxLongLong ll = datetime.IsValid() ? datetime.GetValue() : wxLongLong(0); wxLongLong secs = ll / 1000L; - if (key != _T("mtime") || !m_hdr->SetOctal(TAR_MTIME, secs.GetValue()) + if (key != _T("mtime") + || !m_hdr->SetOctal(TAR_MTIME, wxTarNumber(secs.GetValue())) || secs <= 0 || secs >= 0x7fffffff) { wxString str;