Version: 3.2.5
wxTarOutputStream Class Reference

#include <wx/tarstrm.h>

+ Inheritance diagram for wxTarOutputStream:

Detailed Description

Output stream for writing tar files.

wxTarOutputStream::PutNextEntry() is used to create a new entry in the output tar, then the entry's data is written to the wxTarOutputStream. Another call to wxTarOutputStream::PutNextEntry() closes the current entry and begins the next.

Library:  wxBase
Category:  Streams
See also
Archive Formats, wxTarEntry, wxTarInputStream

Public Member Functions

virtual ~wxTarOutputStream ()
 The destructor calls Close() to finish writing the tar if it has not been called already. More...
 
bool Close ()
 Finishes writing the tar, returning true if successful. More...
 
bool CloseEntry ()
 Close the current entry. More...
 
bool CopyArchiveMetaData (wxTarInputStream &s)
 See wxArchiveOutputStream::CopyArchiveMetaData(). More...
 
bool CopyEntry (wxTarEntry *entry, wxTarInputStream &inputStream)
 Takes ownership of entry and uses it to create a new entry in the tar. More...
 
bool PutNextDirEntry (const wxString &name, const wxDateTime &dt=wxDateTime::Now())
 Create a new directory entry (see wxArchiveEntry::IsDir()) with the given name and timestamp. More...
 
bool PutNextEntry (wxTarEntry *entry)
 Takes ownership of entry and uses it to create a new entry in the tar. More...
 
bool PutNextEntry (const wxString &name, const wxDateTime &dt=wxDateTime::Now(), wxFileOffset size=wxInvalidOffset)
 Create a new entry with the given name, timestamp and size. More...
 
 wxTarOutputStream (wxOutputStream &stream, wxTarFormat format=wxTAR_PAX, wxMBConv &conv=wxConvLocal)
 If the parent stream is passed as a pointer then the new filter stream takes ownership of it. More...
 
 wxTarOutputStream (wxOutputStream *stream, wxTarFormat format=wxTAR_PAX, wxMBConv &conv=wxConvLocal)
 If the parent stream is passed as a pointer then the new filter stream takes ownership of it. More...
 
int GetBlockingFactor () const
 The tar is zero padded to round its size up to BlockingFactor * 512 bytes. More...
 
void SetBlockingFactor (int factor)
 The tar is zero padded to round its size up to BlockingFactor * 512 bytes. More...
 
- Public Member Functions inherited from wxArchiveOutputStream
virtual ~wxArchiveOutputStream ()
 Calls Close() if it has not already been called. More...
 
virtual bool CopyArchiveMetaData (wxArchiveInputStream &stream)=0
 Some archive formats have additional meta-data that applies to the archive as a whole. More...
 
virtual bool CopyEntry (wxArchiveEntry *entry, wxArchiveInputStream &stream)=0
 Takes ownership of entry and uses it to create a new entry in the archive. More...
 
virtual bool PutNextEntry (wxArchiveEntry *entry)=0
 Takes ownership of entry and uses it to create a new entry in the archive. More...
 
- Public Member Functions inherited from wxFilterOutputStream
 wxFilterOutputStream (wxOutputStream &stream)
 Initializes a "filter" stream. More...
 
 wxFilterOutputStream (wxOutputStream *stream)
 Initializes a "filter" stream. More...
 
- Public Member Functions inherited from wxOutputStream
 wxOutputStream ()
 Creates a dummy wxOutputStream object. More...
 
virtual ~wxOutputStream ()
 Destructor. More...
 
virtual size_t LastWrite () const
 Returns the number of bytes written during the last Write(). More...
 
void PutC (char c)
 Puts the specified character in the output queue and increments the stream position. More...
 
virtual wxFileOffset SeekO (wxFileOffset pos, wxSeekMode mode=wxFromStart)
 Changes the stream current position. More...
 
virtual wxFileOffset TellO () const
 Returns the current stream position. More...
 
virtual wxOutputStreamWrite (const void *buffer, size_t size)
 Writes up to the specified amount of bytes using the data of buffer. More...
 
wxOutputStreamWrite (wxInputStream &stream_in)
 Reads data from the specified input stream and stores them in the current stream. More...
 
bool WriteAll (const void *buffer, size_t size)
 Writes exactly the specified number of bytes from the buffer. More...
 
- Public Member Functions inherited from wxStreamBase
 wxStreamBase ()
 Creates a dummy stream object. More...
 
virtual ~wxStreamBase ()
 Destructor. More...
 
wxStreamError GetLastError () const
 This function returns the last error. More...
 
virtual wxFileOffset GetLength () const
 Returns the length of the stream in bytes. More...
 
virtual size_t GetSize () const
 This function returns the size of the stream. More...
 
virtual bool IsOk () const
 Returns true if no error occurred on the stream. More...
 
virtual bool IsSeekable () const
 Returns true if the stream supports seeking to arbitrary offsets. More...
 
void Reset (wxStreamError error=wxSTREAM_NO_ERROR)
 Resets the stream state. More...
 
bool operator! () const
 Returns the opposite of IsOk(). More...
 

Additional Inherited Members

- Protected Member Functions inherited from wxOutputStream
size_t OnSysWrite (const void *buffer, size_t bufsize)
 Internal function. More...
 
- Protected Member Functions inherited from wxStreamBase
virtual wxFileOffset OnSysSeek (wxFileOffset pos, wxSeekMode mode)
 Internal function. More...
 
virtual wxFileOffset OnSysTell () const
 Internal function. More...
 

Constructor & Destructor Documentation

◆ wxTarOutputStream() [1/2]

wxTarOutputStream::wxTarOutputStream ( wxOutputStream stream,
wxTarFormat  format = wxTAR_PAX,
wxMBConv conv = wxConvLocal 
)

If the parent stream is passed as a pointer then the new filter stream takes ownership of it.

If it is passed by reference then it does not.

In a Unicode build the third parameter conv is used to translate the headers fields into an 8-bit encoding. It has no effect on the stream's data.

When the format is wxTAR_PAX, pax extended headers are generated when any header field will not fit the standard tar header block or if it uses any non-ascii characters.

Extended headers are stored as extra 'files' within the tar, and will be extracted as such by any other tar program that does not understand them. The conv parameter only affect the standard tar headers, the extended headers are always UTF-8 encoded.

When the format is wxTAR_USTAR, no extended headers are generated, and instead a warning message is logged if any header field overflows.

◆ wxTarOutputStream() [2/2]

wxTarOutputStream::wxTarOutputStream ( wxOutputStream stream,
wxTarFormat  format = wxTAR_PAX,
wxMBConv conv = wxConvLocal 
)

If the parent stream is passed as a pointer then the new filter stream takes ownership of it.

If it is passed by reference then it does not.

In a Unicode build the third parameter conv is used to translate the headers fields into an 8-bit encoding. It has no effect on the stream's data.

When the format is wxTAR_PAX, pax extended headers are generated when any header field will not fit the standard tar header block or if it uses any non-ascii characters.

Extended headers are stored as extra 'files' within the tar, and will be extracted as such by any other tar program that does not understand them. The conv parameter only affect the standard tar headers, the extended headers are always UTF-8 encoded.

When the format is wxTAR_USTAR, no extended headers are generated, and instead a warning message is logged if any header field overflows.

◆ ~wxTarOutputStream()

virtual wxTarOutputStream::~wxTarOutputStream ( )
virtual

The destructor calls Close() to finish writing the tar if it has not been called already.

Member Function Documentation

◆ Close()

bool wxTarOutputStream::Close ( )
virtual

Finishes writing the tar, returning true if successful.

Called by the destructor if not called explicitly.

Reimplemented from wxArchiveOutputStream.

◆ CloseEntry()

bool wxTarOutputStream::CloseEntry ( )
virtual

Close the current entry.

It is called implicitly whenever another new entry is created with CopyEntry() or PutNextEntry(), or when the tar is closed.

Implements wxArchiveOutputStream.

◆ CopyArchiveMetaData()

bool wxTarOutputStream::CopyArchiveMetaData ( wxTarInputStream s)

See wxArchiveOutputStream::CopyArchiveMetaData().

For the tar format this function does nothing.

◆ CopyEntry()

bool wxTarOutputStream::CopyEntry ( wxTarEntry entry,
wxTarInputStream inputStream 
)

Takes ownership of entry and uses it to create a new entry in the tar.

entry is then opened in inputStream and its contents copied to this stream.

For some other archive formats CopyEntry() is much more efficient than transferring the data using Read() and Write() since it will copy them without decompressing and recompressing them. For tar however it makes no difference.

For tars on seekable streams, entry must be from the same tar file as inputStream. For non-seekable streams, entry must also be the last thing read from inputStream.

◆ GetBlockingFactor()

int wxTarOutputStream::GetBlockingFactor ( ) const

The tar is zero padded to round its size up to BlockingFactor * 512 bytes.

The blocking factor defaults to 10 for wxTAR_PAX and 20 for wxTAR_USTAR (see wxTarOutputStream()), as specified in the POSIX standards.

◆ PutNextDirEntry()

bool wxTarOutputStream::PutNextDirEntry ( const wxString name,
const wxDateTime dt = wxDateTime::Now() 
)
virtual

Create a new directory entry (see wxArchiveEntry::IsDir()) with the given name and timestamp.

PutNextEntry() can also be used to create directory entries, by supplying a name with a trailing path separator.

Implements wxArchiveOutputStream.

◆ PutNextEntry() [1/2]

bool wxTarOutputStream::PutNextEntry ( const wxString name,
const wxDateTime dt = wxDateTime::Now(),
wxFileOffset  size = wxInvalidOffset 
)
virtual

Create a new entry with the given name, timestamp and size.

Implements wxArchiveOutputStream.

◆ PutNextEntry() [2/2]

bool wxTarOutputStream::PutNextEntry ( wxTarEntry entry)

Takes ownership of entry and uses it to create a new entry in the tar.

◆ SetBlockingFactor()

void wxTarOutputStream::SetBlockingFactor ( int  factor)

The tar is zero padded to round its size up to BlockingFactor * 512 bytes.

The blocking factor defaults to 10 for wxTAR_PAX and 20 for wxTAR_USTAR (see wxTarOutputStream()), as specified in the POSIX standards.