summaryrefslogtreecommitdiffstats
path: root/lib/libUPnP/Neptune/Source/Tests/FileTest2/FileTest2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libUPnP/Neptune/Source/Tests/FileTest2/FileTest2.cpp')
-rw-r--r--lib/libUPnP/Neptune/Source/Tests/FileTest2/FileTest2.cpp121
1 files changed, 121 insertions, 0 deletions
diff --git a/lib/libUPnP/Neptune/Source/Tests/FileTest2/FileTest2.cpp b/lib/libUPnP/Neptune/Source/Tests/FileTest2/FileTest2.cpp
new file mode 100644
index 0000000..e093128
--- /dev/null
+++ b/lib/libUPnP/Neptune/Source/Tests/FileTest2/FileTest2.cpp
@@ -0,0 +1,121 @@
+/*****************************************************************
+|
+| File Test Program 2
+|
+| (c) 2005-2008 Gilles Boccon-Gibod
+| Author: Gilles Boccon-Gibod (bok@bok.net)
+|
+****************************************************************/
+
+/*----------------------------------------------------------------------
+| includes
++---------------------------------------------------------------------*/
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include "Neptune.h"
+#include "NptDebug.h"
+
+/*----------------------------------------------------------------------
+| FileTypeName
++---------------------------------------------------------------------*/
+static const char*
+FileTypeName(NPT_FileInfo::FileType type)
+{
+ switch (type) {
+ case NPT_FileInfo::FILE_TYPE_NONE: return "NONE";
+ case NPT_FileInfo::FILE_TYPE_REGULAR: return "REGULAR";
+ case NPT_FileInfo::FILE_TYPE_DIRECTORY: return "DIRECTORY";
+ case NPT_FileInfo::FILE_TYPE_SPECIAL: return "SPECIAL";
+ case NPT_FileInfo::FILE_TYPE_OTHER: return "OTHER";
+ default: return "??";
+ }
+}
+
+/*----------------------------------------------------------------------
+| WalkDir
++---------------------------------------------------------------------*/
+static NPT_Result
+WalkDir(const char* path, unsigned int indent)
+{
+ NPT_FileInfo info;
+ NPT_Result result = NPT_File::GetInfo(path, &info);
+ if (NPT_FAILED(result)) {
+ fprintf(stderr, "ERROR: NPT_File::GetInfo(\"%s\") returned %d (%s)\n",
+ path, result, NPT_ResultText(result));
+ return result;
+ }
+ if (info.m_Type != NPT_FileInfo::FILE_TYPE_DIRECTORY) {
+ fprintf(stderr, "WARNING: %s is not a directory\n", path);
+ return NPT_SUCCESS; // not fatal
+ }
+
+ NPT_List<NPT_String> entries;
+ result = NPT_File::ListDir(path, entries);
+ if (NPT_FAILED(result)) {
+ fprintf(stderr, "WARNING: NPT_File::ListDirectory returned %d (%s)\n",
+ result, NPT_ResultText(result));
+ return NPT_SUCCESS; // not fatal
+ }
+
+ for (NPT_List<NPT_String>::Iterator entries_iterator = entries.GetFirstItem();
+ entries_iterator;
+ ++entries_iterator) {
+ if (*entries_iterator == "." || *entries_iterator == "..") continue;
+
+ NPT_String child = path;
+ child += NPT_FilePath::Separator;
+ child += *entries_iterator;
+ result = NPT_File::GetInfo(child, &info);
+ if (NPT_FAILED(result)) {
+ fprintf(stderr, "WARNING: NPT_File::GetInfo(%s) returned %d (%s)\n",
+ child.GetChars(), result, NPT_ResultText(result));
+ continue;
+ }
+ for (unsigned int i=0; i<indent; i++) {
+ printf(" ");
+ }
+ printf("%s: type=%s", child.GetChars(), FileTypeName(info.m_Type));
+ if (info.m_Type != NPT_FileInfo::FILE_TYPE_DIRECTORY) printf(" size=%lld", info.m_Size);
+ if (info.m_AttributesMask & NPT_FILE_ATTRIBUTE_READ_ONLY &&
+ info.m_Attributes & NPT_FILE_ATTRIBUTE_READ_ONLY) {
+ printf(" RO");
+ }
+ if (info.m_AttributesMask & NPT_FILE_ATTRIBUTE_LINK &&
+ info.m_Attributes & NPT_FILE_ATTRIBUTE_LINK) {
+ printf(" LINK");
+ }
+ printf("\n");
+ NPT_String cre_time = NPT_DateTime(info.m_CreationTime, true).ToString(NPT_DateTime::FORMAT_RFC_1123);
+ for (unsigned int i=0; i<indent; i++) { printf(" "); }
+ printf("created: %s\n", cre_time.GetChars());
+ NPT_String mod_time = NPT_DateTime(info.m_ModificationTime, true).ToString(NPT_DateTime::FORMAT_RFC_1123);
+ for (unsigned int i=0; i<indent; i++) { printf(" "); }
+ printf("modified: %s\n", mod_time.GetChars());
+
+ if (info.m_Type == NPT_FileInfo::FILE_TYPE_DIRECTORY) {
+ result = WalkDir(child, indent+1);
+ if (NPT_FAILED(result)) return result;
+ }
+ }
+
+ return NPT_SUCCESS;
+}
+
+/*----------------------------------------------------------------------
+| main
++---------------------------------------------------------------------*/
+int
+main(int argc, char** argv)
+{
+ if (argc != 2) {
+ fprintf(stderr,
+ "ERROR: root directory name not specified\n"
+ "usage: filetest2 <root_path>\n");
+ return 1;
+ }
+
+ WalkDir(argv[1], 0);
+
+ return 0;
+}