WSF
UtTarfile.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11// ****************************************************************************
12// Updated by Infoscitex, a DCS Company.
13// ****************************************************************************
14
15#ifndef UTTARFILE_HPP
16#define UTTARFILE_HPP
17
18#include <functional>
19#include <iosfwd>
20
21#include "UtPath.hpp"
22#include "WsfUtExport.hpp"
23
27{
28public:
29 typedef std::function<bool(const UtPath&, const UtPath::StatData&)> FilterFunction;
30
31 UtTarfileO(std::ostream& aOutputStream);
32
33 // Assign a filter function used to pick which directories and files are processed
34 // on calls to AddDirectory / AddFile
35 void SetFilter(const FilterFunction& aFilter);
36
37 void AddDirectory(const std::string& aPrefix, const UtPath& aPath);
38
39 void AddFile(const std::string& aDestinationPath, const UtPath& aFilePath);
40
41private:
42 static void WriteDirectory(const std::string& aPath, std::ostream& aOutputTar);
43
44 static void WriteFile(const std::string& aFilePath,
45 const unsigned int aPermissionBits,
46 const unsigned int aFileSize,
47 std::istream& aFileData,
48 std::ostream& aOutputTar);
49
50 void AddDirectory(const std::string& aPrefix, const UtPath& aBasePath, const UtPath& aPath, const UtPath::StatData& aStatData);
51
52 void AddFile(const std::string& aFilePath, const UtPath& aPath, const UtPath::StatData& aStatData);
53
54 std::ostream* mOutStream;
55 FilterFunction mFilterFunction;
56};
57
59{
60public:
61 // Unpack a tar file into a output directory
62 static bool Unpack(std::istream& aInputTar, const UtPath& aOutputDirectory);
63
64private:
65 static bool ReadDirectory(std::string& aPath, std::istream& aInputTar);
66
67
68 static bool
69 ReadFileHdr(std::string& aFilePath, unsigned int& aPermissionBits, unsigned int& aFileSize, std::istream& aInputTar);
70};
71#endif
#define WSF_UT_EXPORT
Definition WsfUtExport.hpp:32
Definition UtTarfile.hpp:59
static bool Unpack(std::istream &aInputTar, const UtPath &aOutputDirectory)
Definition UtTarfile.cpp:52
void AddFile(const std::string &aDestinationPath, const UtPath &aFilePath)
Definition UtTarfile.cpp:114
void AddDirectory(const std::string &aPrefix, const UtPath &aPath)
Definition UtTarfile.cpp:135
void SetFilter(const FilterFunction &aFilter)
Definition UtTarfile.cpp:191
UtTarfileO(std::ostream &aOutputStream)
Definition UtTarfile.cpp:255
std::function< bool(const UtPath &, const UtPath::StatData &)> FilterFunction
Definition UtTarfile.hpp:29
Copyrights Multiple, All Rights Reserved