diff options
Diffstat (limited to 'libcommon')
| -rw-r--r-- | libcommon/Makefile | 23 | ||||
| -rw-r--r-- | libcommon/tempfile.cpp | 27 | ||||
| -rw-r--r-- | libcommon/tempfile.h | 16 | 
3 files changed, 45 insertions, 21 deletions
diff --git a/libcommon/Makefile b/libcommon/Makefile index 932ee90..ab76ed1 100644 --- a/libcommon/Makefile +++ b/libcommon/Makefile @@ -30,8 +30,6 @@ else  CXXFLAGS+=-std=c++17  endif -CXXTESTFLAGS=-Igoogletest/include -Igooglemock/include/ -Igoogletest -Igooglemock -  LIBS=\  -lboost_context \  -lboost_coroutine \ @@ -64,33 +62,18 @@ PROGSRC=\      stringutil.cpp \      tempfile.cpp -TESTSRC=\ -    test-webserver.cpp \ -    googlemock/src/gmock-all.cpp \ -    googletest/src/gtest-all.cpp \ -    $(PROGSRC) -  SRC=$(PROGSRC)  all: $(PROJECTNAME).a -# testsuite ---------------------------------------------- -test-$(PROJECTNAME): $(TESTSRC:.cpp=.o) -	$(CXX) $(CXXFLAGS) $^ $(LIBS) -o $@ -  $(PROJECTNAME).a: $(SRC:.cpp=.o)  	ar rcs $@ $^ -dep: $(TESTSRC:.cpp=.d) -  %.d: %.cpp -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -MM -MP -MF $@ -c $< +	$(CXX) $(CXXFLAGS) -MM -MP -MF $@ -c $<  %.o: %.cpp %.d -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ - -googletest/src/%.o: googletest/src/%.cc -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ +	$(CXX) $(CXXFLAGS) -c $< -o $@  # dependencies @@ -111,8 +94,6 @@ $(DISTROS): deb-src  debs: $(DISTROS)  clean: -	-rm -f test-$(PROJECTNAME) $(PROJECTNAME) -	-find . -name '*.a' -o -name '*.o' -o -name '*.so' -o -name '*.d' -o -name '*.gcno' -o -name '*.gcda' | xargs rm -f  zip: clean  	-rm -f ../$(PROJECTNAME).zip diff --git a/libcommon/tempfile.cpp b/libcommon/tempfile.cpp new file mode 100644 index 0000000..5d3a086 --- /dev/null +++ b/libcommon/tempfile.cpp @@ -0,0 +1,27 @@ +#include "tempfile.h" + +#include <iostream> + +namespace fs = std::filesystem; +using namespace std::string_literals; + +fs::path Tempfile::GetPath() const +{ + return m_path; +} + +Tempfile::Tempfile() { + try { +  m_path = std::string{tmpnam(NULL)} + ".zip"s; + } catch (const std::exception& ex) { +  throw std::runtime_error("Tempfile error: "s + ex.what()); + } +} + +Tempfile::~Tempfile() { + try { +  fs::remove_all(m_path); + } catch (const std::exception& ex) { +  std::cerr << "Warning: Couldn't remove temporary file " << m_path << std::endl; + } +} diff --git a/libcommon/tempfile.h b/libcommon/tempfile.h new file mode 100644 index 0000000..5938fb9 --- /dev/null +++ b/libcommon/tempfile.h @@ -0,0 +1,16 @@ +#pragma once + +#include <filesystem> + +class Tempfile +{ + std::filesystem::path m_path; + + public: +  std::filesystem::path GetPath() const; + +  Tempfile(); +  ~Tempfile(); + }; + +  | 
