\r
o Fixed dead-lock that can occur with multiple mixer tweens.\r
\r
+AMCP\r
+----\r
+\r
+ o DATA STORE now supports creating folders of path specified if they does not\r
+ exist.\r
+ o DATA REMOVE command was added.\r
+\r
CasparCG 2.0.3 Alpha (w.r.t 2.0 Stable)\r
=======================================\r
\r
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "documentation", "documentation", "{32079541-68ED-4319-91FB-0FF041642679}"\r
ProjectSection(SolutionItems) = preProject\r
CHANGES.txt = CHANGES.txt\r
- COPYING.txt = COPYING.txt\r
+ LICENSE.txt = LICENSE.txt\r
README.txt = README.txt\r
EndProjectSection\r
EndProject\r
return DoExecuteStore();\r
else if(command == TEXT("RETRIEVE"))\r
return DoExecuteRetrieve();\r
+ else if(command == TEXT("REMOVE"))\r
+ return DoExecuteRemove();\r
else if(command == TEXT("LIST"))\r
return DoExecuteList();\r
\r
filename.append(_parameters[1]);\r
filename.append(TEXT(".ftd"));\r
\r
+ auto data_path = boost::filesystem::wpath(\r
+ boost::filesystem::wpath(filename).parent_path());\r
+ \r
+ if(!boost::filesystem::exists(data_path))\r
+ boost::filesystem::create_directories(data_path);\r
+\r
std::wofstream datafile(filename.c_str());\r
\r
if(!datafile) \r
return true;\r
}\r
\r
+bool DataCommand::DoExecuteRemove() \r
+{ \r
+ if (_parameters.size() < 2) \r
+ {\r
+ SetReplyString(TEXT("402 DATA REMOVE ERROR\r\n"));\r
+ return false;\r
+ }\r
+\r
+ std::wstring filename = env::data_folder();\r
+ filename.append(_parameters[1]);\r
+ filename.append(TEXT(".ftd"));\r
+\r
+ if (!boost::filesystem::exists(filename)) \r
+ {\r
+ SetReplyString(TEXT("404 DATA REMOVE ERROR\r\n"));\r
+ return false;\r
+ }\r
+\r
+ if (!boost::filesystem::remove(filename))\r
+ {\r
+ SetReplyString(TEXT("403 DATA REMOVE ERROR\r\n"));\r
+ return false;\r
+ }\r
+\r
+ SetReplyString(TEXT("201 DATA REMOVE OK\r\n"));\r
+\r
+ return true;\r
+}\r
+\r
bool DataCommand::DoExecuteList() \r
{\r
std::wstringstream replyString;\r