summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcheckLicense.pl2
-rw-r--r--cmpcj/res/images/folder_black.pngbin0 -> 117733 bytes
-rw-r--r--cmps/main.cc67
-rw-r--r--cmps/nbproject/Makefile-Debug.mk36
-rw-r--r--cmps/nbproject/configurations.xml78
-rw-r--r--cmps/nbproject/project.xml1
-rw-r--r--cmps/server.cbp5
-rw-r--r--cmps/server.cbp.save9
-rw-r--r--cmps/server.layout2
-rw-r--r--cmps/server.layout.save2
-rw-r--r--cmps/serverlib/include/AbstractMediaRequestHandler.h6
-rw-r--r--cmps/serverlib/include/HTMLListAssembler.h12
-rw-r--r--cmps/serverlib/include/HTTPMediaResponse.h12
-rw-r--r--cmps/serverlib/nbproject/Makefile-Debug.mk28
-rw-r--r--cmps/serverlib/nbproject/configurations.xml57
-rw-r--r--cmps/serverlib/nbproject/private/configurations.xml2
-rw-r--r--cmps/serverlib/nbproject/project.xml8
-rw-r--r--cmps/serverlib/serverlib.cbp7
-rw-r--r--cmps/serverlib/serverlib.layout8
-rw-r--r--cmps/serverlib/serverlib.layout.save12
-rw-r--r--cmps/serverlib/src/AbstractMediaRequestHandler.cc8
-rw-r--r--cmps/serverlib/src/HTMLListAssembler.cc12
-rw-r--r--cmps/serverlib/src/HTTPMediaResponse.cc12
-rw-r--r--cmps/serverlib/src/JSonListAssembler.cc12
-rw-r--r--cmps/serverlib/src/MediaFileHandler.cc18
-rw-r--r--cmps/serverlib/src/MediaListHandler.cc4
-rw-r--r--cmps/tests/ConnectionHandlerTest.cc6
-rw-r--r--cmps/tests/FScanTest.cc17
-rw-r--r--cmps/tests/FileSystemTest.cc29
-rw-r--r--libs/IO/File.cc (renamed from libs/fsScan/src/File.cc)0
-rw-r--r--libs/IO/File.h (renamed from libs/fsScan/include/File.h)0
-rw-r--r--libs/IO/FileRepresentation.cc (renamed from libs/fsScan/src/FileRepresentation.cc)0
-rw-r--r--libs/IO/FileRepresentation.h (renamed from libs/fsScan/include/FileRepresentation.h)0
-rw-r--r--libs/IO/FileSystem.cc (renamed from libs/fsScan/src/FileSystem.cc)0
-rw-r--r--libs/IO/FileSystem.h (renamed from libs/fsScan/include/FileSystem.h)0
-rw-r--r--libs/IO/IO.cbp70
-rw-r--r--libs/IO/IO.cbp.save68
-rw-r--r--libs/IO/IO.depend1
-rw-r--r--libs/IO/IO.layout34
-rw-r--r--libs/IO/IO.layout.save34
-rw-r--r--libs/IO/Makefile128
-rw-r--r--libs/IO/nbproject/Makefile-Debug.mk120
-rw-r--r--libs/IO/nbproject/Makefile-Release.mk116
-rw-r--r--libs/IO/nbproject/Makefile-impl.mk133
-rw-r--r--libs/IO/nbproject/Makefile-variables.mk35
-rw-r--r--libs/IO/nbproject/Package-Debug.bash75
-rw-r--r--libs/IO/nbproject/Package-Release.bash75
-rw-r--r--libs/IO/nbproject/configurations.xml116
-rw-r--r--libs/IO/nbproject/private/Makefile-variables.mk7
-rw-r--r--libs/IO/nbproject/private/configurations.xml72
-rw-r--r--libs/IO/nbproject/private/private.xml8
-rw-r--r--libs/IO/nbproject/project.xml28
-rw-r--r--libs/IO/summary.txt1
-rw-r--r--libs/fsScan/fsScan.cbp13
-rw-r--r--libs/fsScan/fsScan.layout46
-rw-r--r--libs/fsScan/fsScan.layout.save46
-rw-r--r--libs/fsScan/include/AbstractMedia.h13
-rw-r--r--libs/fsScan/include/AbstractMultiFileMovie.h12
-rw-r--r--libs/fsScan/include/Audio.h14
-rw-r--r--libs/fsScan/include/DVDImage.h12
-rw-r--r--libs/fsScan/include/FSMediaScanner.h (renamed from libs/fsScan/include/FilesystemScanner.h)26
-rw-r--r--libs/fsScan/include/LegacyVdrRecording.h12
-rw-r--r--libs/fsScan/include/MediaFactory.h19
-rw-r--r--libs/fsScan/include/Movie.h14
-rw-r--r--libs/fsScan/include/Picture.h12
-rw-r--r--libs/fsScan/include/VdrRecording.h12
-rw-r--r--libs/fsScan/nbproject/Makefile-Debug.mk54
-rw-r--r--libs/fsScan/nbproject/Makefile-Release.mk24
-rw-r--r--libs/fsScan/nbproject/configurations.xml55
-rw-r--r--libs/fsScan/nbproject/project.xml7
-rw-r--r--libs/fsScan/src/AbstractMedia.cc17
-rw-r--r--libs/fsScan/src/AbstractMultiFileMovie.cc12
-rw-r--r--libs/fsScan/src/Audio.cc19
-rw-r--r--libs/fsScan/src/DVDImage.cc12
-rw-r--r--libs/fsScan/src/FSMediaScanner.cc (renamed from libs/fsScan/src/FilesystemScanner.cc)26
-rw-r--r--libs/fsScan/src/LegacyVdrRecording.cc12
-rw-r--r--libs/fsScan/src/MediaFactory.cc40
-rw-r--r--libs/fsScan/src/Movie.cc18
-rw-r--r--libs/fsScan/src/Picture.cc12
-rw-r--r--libs/fsScan/src/VdrRecording.cc12
-rw-r--r--libs/networking/include/Credentials.h7
-rw-r--r--libs/networking/include/HTTPResponse.h12
-rw-r--r--libs/networking/include/ServerConfig.h38
-rw-r--r--libs/networking/nbproject/Makefile-Debug.mk50
-rw-r--r--libs/networking/nbproject/Makefile-Release.mk6
-rw-r--r--libs/networking/nbproject/configurations.xml39
-rw-r--r--libs/networking/nbproject/private/configurations.xml2
-rw-r--r--libs/networking/nbproject/project.xml6
-rw-r--r--libs/networking/networking.cbp9
-rw-r--r--libs/networking/networking.layout30
-rw-r--r--libs/networking/networking.layout.save24
-rw-r--r--libs/networking/src/ConnectionHandler.cc12
-rw-r--r--libs/networking/src/HTTPResponse.cc12
-rw-r--r--libs/networking/src/ServerConfig.cc127
-rw-r--r--libs/util/Url.cc (renamed from libs/networking/src/Url.cc)0
-rw-r--r--libs/util/Url.h (renamed from libs/networking/include/Url.h)0
-rw-r--r--libs/util/include/AbstractListAssembler.h12
-rw-r--r--libs/util/include/JSonWriter.h12
-rw-r--r--libs/util/include/ManagedMap.h12
-rw-r--r--libs/util/include/Persistable.h35
-rw-r--r--libs/util/include/Url.h67
-rw-r--r--libs/util/nbproject/Makefile-Debug.mk12
-rw-r--r--libs/util/nbproject/Makefile-Release.mk6
-rw-r--r--libs/util/nbproject/configurations.xml19
-rw-r--r--libs/util/nbproject/private/configurations.xml2
-rw-r--r--libs/util/nbproject/project.xml4
-rw-r--r--libs/util/src/Url.cc229
-rw-r--r--libs/util/util.cbp8
-rw-r--r--libs/util/util.layout28
-rw-r--r--libs/util/util.layout.save30
-rw-r--r--libs/vdr/nbproject/Makefile-Debug.mk4
-rw-r--r--libs/vdr/nbproject/configurations.xml4
-rw-r--r--libs/vdr/nbproject/private/configurations.xml2
-rw-r--r--libs/vdr/src/i18n.cc16
-rw-r--r--libs/vdr/vdr.cbp6
-rw-r--r--libs/vdr/vdr.layout30
-rw-r--r--libs/vdr/vdr.layout.save26
-rw-r--r--tests/ConnectionHandlerTest/ConnectionHandlerTest.cbp5
-rw-r--r--tests/ConnectionHandlerTest/ConnectionHandlerTest.cc15
-rw-r--r--tests/ConnectionHandlerTest/ConnectionHandlerTest.layout2
-rw-r--r--tests/ConnectionHandlerTest/ConnectionHandlerTest.layout.save2
-rw-r--r--tests/CredentialPersistence/CredentialPersistence.cbp2
-rw-r--r--tests/CredentialPersistence/CredentialPersistence.layout2
-rw-r--r--tests/CredentialPersistence/CredentialPersistence.layout.save2
-rw-r--r--tests/FilesystemTest/main.cpp234
-rw-r--r--tests/JSonTest/JSonTest.cbp2
126 files changed, 2731 insertions, 637 deletions
diff --git a/checkLicense.pl b/checkLicense.pl
index 82d71cc..13a0b41 100755
--- a/checkLicense.pl
+++ b/checkLicense.pl
@@ -136,7 +136,7 @@ sub processFile {
$line =~ s/^(?:\/\*+| \*+ |\/+ | \*+\/)(.*)$/$1/;
next if $line =~ /^\s*$/;
next if $line =~ /^ \*\n/;
- @parts = split(/\:\s*/, $line);
+ @parts = split(/\:\s*/, $line, 2);
if ($line =~ /Created on (.+)$/) {
$tags{'Created'} = $1;
diff --git a/cmpcj/res/images/folder_black.png b/cmpcj/res/images/folder_black.png
new file mode 100644
index 0000000..01b5b20
--- /dev/null
+++ b/cmpcj/res/images/folder_black.png
Binary files differ
diff --git a/cmps/main.cc b/cmps/main.cc
index 0f392af..da5b260 100644
--- a/cmps/main.cc
+++ b/cmps/main.cc
@@ -25,7 +25,7 @@
#include <HTTPServer.h>
#include <HTTPRequest.h>
#include <HTTPResponse.h>
-#include <FilesystemScanner.h>
+#include <FSMediaScanner.h>
#include <MediaFactory.h>
#include <MediaListHandler.h>
#include <MediaFileHandler.h>
@@ -39,16 +39,15 @@
#include <getopt.h>
static struct option longOptions[] = {
- { "port", required_argument, NULL, 'p' }
-, { "mediaRoot", required_argument, NULL, 'r' }
-, { "favicon", required_argument, NULL, 'i' }
-, { "help", no_argument, NULL, 'h' }
+ { "appDir", required_argument, NULL, 'd' }
+, { "realm", required_argument, NULL, 'r' }
+, { "help", no_argument, NULL, 'h' }
, { NULL, no_argument, NULL, 0 }
};
static int refreshScanner(void *opaque, cHTTPRequest &Request)
{
- cFilesystemScanner *fsc = (cFilesystemScanner *)opaque;
+ cFSMediaScanner *fsc = (cFSMediaScanner *)opaque;
if (fsc) {
fsc->Refresh();
@@ -61,19 +60,17 @@ static void usage(void)
{
fprintf(stderr, "cmps - the backend of CMP (compound media player)\n");
fprintf(stderr, " is streaming- and HTTP-server and accepts these commandline options:\n");
- fprintf(stderr, "-h, --help the help, you are reading\n");
- fprintf(stderr, "-r, --mediaRoot <path> the directory, where to start to scan for media\n");
- fprintf(stderr, " (default is /media)\n");
- fprintf(stderr, "-p, --port ### the servers port to listen for client connections\n");
- fprintf(stderr, " (default is 12345)\n");
- fprintf(stderr, "-i, --favicon <path> the application icon, used by webbrowsers to\n");
- fprintf(stderr, " prefix the urls to identify the server\n");
- fprintf(stderr, " (default is /media/favicon.ico)\n");
+ fprintf(stderr, "-h, --help the help, you are reading\n");
+ fprintf(stderr, "-d, --appDir <path> the directory, where the server may write config files\n");
+ fprintf(stderr, " (default is /var/lib/cmp)\n");
+ fprintf(stderr, "-r, --realm <path> absolute path to credential file. That file must be\n");
+ fprintf(stderr, " writable to enable remote administration of principals)\n");
+ fprintf(stderr, " (default is no file / no authorization required)\n");
exit(0);
}
-static void parseCommandline(int argc, char *argv[], cServerConfig &config)
+static void setup(int argc, char *argv[], cServerConfig &config)
{
int c;
@@ -84,53 +81,43 @@ static void parseCommandline(int argc, char *argv[], cServerConfig &config)
while ((c = getopt_long(argc, argv, "hp:r:i:", longOptions, NULL)) != -1) {
switch (c) {
- case 'p': {
- if (isnumber(optarg)) {
- int n = atoi(optarg);
+ case 'd': {
+ cFile appDir(optarg);
- if (n > 0) config.SetPort(n);
+ if (appDir.Exists() && appDir.IsDirectory() && appDir.CanWrite()) {
+ config.SetConfigBaseDir(appDir.AbsolutePath());
}
} break;
case 'r': {
- struct stat st;
+ cFile credentials(optarg);
- if (!stat(optarg, &st)) {
- if ((st.st_mode & S_IFMT) == S_IFDIR && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) {
- config.SetDocumentRoot(optarg);
- }
- }
- } break;
-
- case 'i': {
- struct stat st;
-
- if (!stat(optarg, &st)) {
- if ((st.st_mode & S_IFMT) == S_IFREG && (st.st_mode & (S_IRUSR | S_IRGRP | S_IROTH))) {
- config.SetAppIcon(optarg);
- }
+ if (credentials.Exists() && credentials.CanRead()) {
+ config.SetCredentialsFile(credentials.AbsolutePath());
}
} break;
case 'h': usage(); break;
}
}
+ config.Load("srserver.conf");
+ if (!config.CredentialsFile() && config.AuthorizationRequired()) config.SetAuthorizationRequired(false);
+ config.Dump();
}
int main(int argc, char** argv)
{
- cServerConfig config(12345);
-
- parseCommandline(argc, argv, config);
+ cServerConfig config("/var/lib/cmp");
- cFilesystemScanner *scanner = new cFilesystemScanner();
+ setup(argc, argv, config);
+ cFSMediaScanner *scanner = new cFSMediaScanner();
if (!scanner) {
fprintf(stderr, "could not initialize application! (1)");
exit(-1);
}
- scanner->SetMediaFactory(new cMediaFactory(config.DocumentRoot()));
+ scanner->SetMediaFactory(new cMediaFactory(config));
- cAbstractMediaRequestHandler::SetFilesystemScanner(scanner);
+ cAbstractMediaRequestHandler::SetFSMediaScanner(scanner);
/*
* register request handlers with their uri-prefix
*/
diff --git a/cmps/nbproject/Makefile-Debug.mk b/cmps/nbproject/Makefile-Debug.mk
index 183ac43..a86df80 100644
--- a/cmps/nbproject/Makefile-Debug.mk
+++ b/cmps/nbproject/Makefile-Debug.mk
@@ -52,8 +52,8 @@ TESTFILES= \
CFLAGS=
# CC Compiler Flags
-CCFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi
-CXXFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi
+CCFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration
+CXXFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration
# Fortran Compiler Flags
FFLAGS=
@@ -62,7 +62,7 @@ FFLAGS=
ASFLAGS=
# Link Libraries and Options
-LDLIBSOPTIONS=serverlib/dist/Debug/GNU-Linux-x86/libserverlib.a ../libs/fsScan/dist/Debug/GNU-Linux-x86/libfsscan.a ../libs/networking/dist/Debug/GNU-Linux-x86/libnetworking.a ../libs/util/dist/Debug/GNU-Linux-x86/libutil.a ../libs/vdr/dist/Debug/GNU-Linux-x86/libvdr.a -lpthread -lrt -lssl -lcrypt
+LDLIBSOPTIONS=serverlib/dist/Debug/GNU-Linux-x86/libserverlib.a ../libs/fsScan/dist/Debug/GNU-Linux-x86/libfsscan.a ../libs/networking/dist/Debug/GNU-Linux-x86/libnetworking.a ../libs/IO/dist/Debug/GNU-Linux-x86/libio.a ../libs/util/dist/Debug/GNU-Linux-x86/libutil.a ../libs/vdr/dist/Debug/GNU-Linux-x86/libvdr.a -lpthread -lrt -lssl -lcrypt -lpcrecpp
# Build Targets
.build-conf: ${BUILD_SUBPROJECTS}
@@ -74,6 +74,8 @@ ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/cmps: ../libs/fsScan/dist/Debug/GNU-L
${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/cmps: ../libs/networking/dist/Debug/GNU-Linux-x86/libnetworking.a
+${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/cmps: ../libs/IO/dist/Debug/GNU-Linux-x86/libio.a
+
${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/cmps: ../libs/util/dist/Debug/GNU-Linux-x86/libutil.a
${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/cmps: ../libs/vdr/dist/Debug/GNU-Linux-x86/libvdr.a
@@ -85,15 +87,22 @@ ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/cmps: ${OBJECTFILES}
${OBJECTDIR}/main.o: main.cc
${MKDIR} -p ${OBJECTDIR}
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -Iserverlib/include -I../libs/fsScan/include -I../libs/networking/include -I../libs/util/include -I../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/main.o main.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -Iserverlib/include -I../libs/fsScan/include -I../libs/networking/include -I../libs/IO/include -I../libs/util/include -I../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/main.o main.cc
# Subprojects
.build-subprojects:
cd serverlib && ${MAKE} -f Makefile CONF=Debug
cd ../libs/fsScan && ${MAKE} -f Makefile CONF=Debug
cd ../libs/networking && ${MAKE} -f Makefile CONF=Debug
+ cd ../libs/IO && ${MAKE} -f Makefile CONF=Debug
cd ../libs/util && ${MAKE} -f Makefile CONF=Debug
cd ../libs/vdr && ${MAKE} -f Makefile CONF=Debug
+ cd ../libs/vdr && ${MAKE} -f Makefile CONF=Debug
+ cd ../libs/util && ${MAKE} -f Makefile CONF=Debug
+ cd ../libs/networking && ${MAKE} -f Makefile CONF=Debug
+ cd ../libs/IO && ${MAKE} -f Makefile CONF=Debug
+ cd ../libs/fsScan && ${MAKE} -f Makefile CONF=Debug
+ cd serverlib && ${MAKE} -f Makefile CONF=Debug
# Build Test Targets
.build-tests-conf: .build-conf ${TESTFILES}
@@ -121,31 +130,31 @@ ${TESTDIR}/TestFiles/f4: ${TESTDIR}/tests/JSonTest.o ${OBJECTFILES:%.o=%_nomain.
${TESTDIR}/tests/CodecTest.o: tests/CodecTest.cc
${MKDIR} -p ${TESTDIR}/tests
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -Iserverlib/include -I../libs/fsScan/include -I../libs/networking/include -I../libs/util/include -I../libs/vdr/include -I. -MMD -MP -MF $@.d -o ${TESTDIR}/tests/CodecTest.o tests/CodecTest.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -Iserverlib/include -I../libs/fsScan/include -I../libs/networking/include -I../libs/IO/include -I../libs/util/include -I../libs/vdr/include -I. -MMD -MP -MF $@.d -o ${TESTDIR}/tests/CodecTest.o tests/CodecTest.cc
${TESTDIR}/tests/ConnectionHandlerTest.o: tests/ConnectionHandlerTest.cc
${MKDIR} -p ${TESTDIR}/tests
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -Iserverlib/include -I../libs/fsScan/include -I../libs/networking/include -I../libs/util/include -I../libs/vdr/include -I. -MMD -MP -MF $@.d -o ${TESTDIR}/tests/ConnectionHandlerTest.o tests/ConnectionHandlerTest.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -Iserverlib/include -I../libs/fsScan/include -I../libs/networking/include -I../libs/IO/include -I../libs/util/include -I../libs/vdr/include -I. -MMD -MP -MF $@.d -o ${TESTDIR}/tests/ConnectionHandlerTest.o tests/ConnectionHandlerTest.cc
${TESTDIR}/tests/FileSystemTest.o: tests/FileSystemTest.cc
${MKDIR} -p ${TESTDIR}/tests
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -Iserverlib/include -I../libs/fsScan/include -I../libs/networking/include -I../libs/util/include -I../libs/vdr/include -I. -MMD -MP -MF $@.d -o ${TESTDIR}/tests/FileSystemTest.o tests/FileSystemTest.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -Iserverlib/include -I../libs/fsScan/include -I../libs/networking/include -I../libs/IO/include -I../libs/util/include -I../libs/vdr/include -I. -MMD -MP -MF $@.d -o ${TESTDIR}/tests/FileSystemTest.o tests/FileSystemTest.cc
${TESTDIR}/tests/FScanTest.o: tests/FScanTest.cc
${MKDIR} -p ${TESTDIR}/tests
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -Iserverlib/include -I../libs/fsScan/include -I../libs/networking/include -I../libs/util/include -I../libs/vdr/include -I. -MMD -MP -MF $@.d -o ${TESTDIR}/tests/FScanTest.o tests/FScanTest.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -Iserverlib/include -I../libs/fsScan/include -I../libs/networking/include -I../libs/IO/include -I../libs/util/include -I../libs/vdr/include -I. -MMD -MP -MF $@.d -o ${TESTDIR}/tests/FScanTest.o tests/FScanTest.cc
${TESTDIR}/tests/JSonTest.o: tests/JSonTest.cc
${MKDIR} -p ${TESTDIR}/tests
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -Iserverlib/include -I../libs/fsScan/include -I../libs/networking/include -I../libs/util/include -I../libs/vdr/include -I. -MMD -MP -MF $@.d -o ${TESTDIR}/tests/JSonTest.o tests/JSonTest.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -Iserverlib/include -I../libs/fsScan/include -I../libs/networking/include -I../libs/IO/include -I../libs/util/include -I../libs/vdr/include -I. -MMD -MP -MF $@.d -o ${TESTDIR}/tests/JSonTest.o tests/JSonTest.cc
${OBJECTDIR}/main_nomain.o: ${OBJECTDIR}/main.o main.cc
@@ -156,7 +165,7 @@ ${OBJECTDIR}/main_nomain.o: ${OBJECTDIR}/main.o main.cc
(echo "$$NMOUTPUT" | ${GREP} 'T _main$$'); \
then \
${RM} $@.d;\
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -Iserverlib/include -I../libs/fsScan/include -I../libs/networking/include -I../libs/util/include -I../libs/vdr/include -Dmain=__nomain -MMD -MP -MF $@.d -o ${OBJECTDIR}/main_nomain.o main.cc;\
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -Iserverlib/include -I../libs/fsScan/include -I../libs/networking/include -I../libs/IO/include -I../libs/util/include -I../libs/vdr/include -Dmain=__nomain -MMD -MP -MF $@.d -o ${OBJECTDIR}/main_nomain.o main.cc;\
else \
${CP} ${OBJECTDIR}/main.o ${OBJECTDIR}/main_nomain.o;\
fi
@@ -184,8 +193,15 @@ ${OBJECTDIR}/main_nomain.o: ${OBJECTDIR}/main.o main.cc
cd serverlib && ${MAKE} -f Makefile CONF=Debug clean
cd ../libs/fsScan && ${MAKE} -f Makefile CONF=Debug clean
cd ../libs/networking && ${MAKE} -f Makefile CONF=Debug clean
+ cd ../libs/IO && ${MAKE} -f Makefile CONF=Debug clean
cd ../libs/util && ${MAKE} -f Makefile CONF=Debug clean
cd ../libs/vdr && ${MAKE} -f Makefile CONF=Debug clean
+ cd ../libs/vdr && ${MAKE} -f Makefile CONF=Debug clean
+ cd ../libs/util && ${MAKE} -f Makefile CONF=Debug clean
+ cd ../libs/networking && ${MAKE} -f Makefile CONF=Debug clean
+ cd ../libs/IO && ${MAKE} -f Makefile CONF=Debug clean
+ cd ../libs/fsScan && ${MAKE} -f Makefile CONF=Debug clean
+ cd serverlib && ${MAKE} -f Makefile CONF=Debug clean
# Enable dependency checking
.dep.inc: .depcheck-impl
diff --git a/cmps/nbproject/configurations.xml b/cmps/nbproject/configurations.xml
index e30f086..38fad19 100644
--- a/cmps/nbproject/configurations.xml
+++ b/cmps/nbproject/configurations.xml
@@ -69,10 +69,11 @@
<pElem>serverlib/include</pElem>
<pElem>../libs/fsScan/include</pElem>
<pElem>../libs/networking/include</pElem>
+ <pElem>../libs/IO/include</pElem>
<pElem>../libs/util/include</pElem>
<pElem>../libs/vdr/include</pElem>
</incDir>
- <commandLine>-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi</commandLine>
+ <commandLine>-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration</commandLine>
<preprocessorList>
<Elem>_GNU_SOURCE=1</Elem>
<Elem>_REENTRANT</Elem>
@@ -118,6 +119,18 @@
</makeArtifact>
</linkerLibProjectItem>
<linkerLibProjectItem>
+ <makeArtifact PL="../libs/IO"
+ CT="3"
+ CN="Debug"
+ AC="true"
+ BL="true"
+ WD="../libs/IO"
+ BC="${MAKE} -f Makefile CONF=Debug"
+ CC="${MAKE} -f Makefile CONF=Debug clean"
+ OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libio.a">
+ </makeArtifact>
+ </linkerLibProjectItem>
+ <linkerLibProjectItem>
<makeArtifact PL="../libs/util"
CT="3"
CN="Debug"
@@ -145,8 +158,71 @@
<linkerLibLibItem>rt</linkerLibLibItem>
<linkerLibLibItem>ssl</linkerLibLibItem>
<linkerLibLibItem>crypt</linkerLibLibItem>
+ <linkerLibLibItem>pcrecpp</linkerLibLibItem>
</linkerLibItems>
</linkerTool>
+ <requiredProjects>
+ <makeArtifact PL="../libs/vdr"
+ CT="3"
+ CN="Debug"
+ AC="true"
+ BL="true"
+ WD="../libs/vdr"
+ BC="${MAKE} -f Makefile CONF=Debug"
+ CC="${MAKE} -f Makefile CONF=Debug clean"
+ OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libvdr.a">
+ </makeArtifact>
+ <makeArtifact PL="../libs/util"
+ CT="3"
+ CN="Debug"
+ AC="true"
+ BL="true"
+ WD="../libs/util"
+ BC="${MAKE} -f Makefile CONF=Debug"
+ CC="${MAKE} -f Makefile CONF=Debug clean"
+ OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libutil.a">
+ </makeArtifact>
+ <makeArtifact PL="../libs/networking"
+ CT="3"
+ CN="Debug"
+ AC="true"
+ BL="true"
+ WD="../libs/networking"
+ BC="${MAKE} -f Makefile CONF=Debug"
+ CC="${MAKE} -f Makefile CONF=Debug clean"
+ OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libnetworking.a">
+ </makeArtifact>
+ <makeArtifact PL="../libs/IO"
+ CT="3"
+ CN="Debug"
+ AC="true"
+ BL="true"
+ WD="../libs/IO"
+ BC="${MAKE} -f Makefile CONF=Debug"
+ CC="${MAKE} -f Makefile CONF=Debug clean"
+ OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libio.a">
+ </makeArtifact>
+ <makeArtifact PL="../libs/fsScan"
+ CT="3"
+ CN="Debug"
+ AC="true"
+ BL="true"
+ WD="../libs/fsScan"
+ BC="${MAKE} -f Makefile CONF=Debug"
+ CC="${MAKE} -f Makefile CONF=Debug clean"
+ OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a">
+ </makeArtifact>
+ <makeArtifact PL="serverlib"
+ CT="3"
+ CN="Debug"
+ AC="true"
+ BL="true"
+ WD="serverlib"
+ BC="${MAKE} -f Makefile CONF=Debug"
+ CC="${MAKE} -f Makefile CONF=Debug clean"
+ OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libserverlib.a">
+ </makeArtifact>
+ </requiredProjects>
</compileType>
<folder path="TestFiles/f1">
<cTool>
diff --git a/cmps/nbproject/project.xml b/cmps/nbproject/project.xml
index b24cfef..ddc8162 100644
--- a/cmps/nbproject/project.xml
+++ b/cmps/nbproject/project.xml
@@ -11,6 +11,7 @@
<make-dep-projects>
<make-dep-project>../libs/util</make-dep-project>
<make-dep-project>../libs/vdr</make-dep-project>
+ <make-dep-project>../libs/IO</make-dep-project>
<make-dep-project>../libs/fsScan</make-dep-project>
<make-dep-project>serverlib</make-dep-project>
<make-dep-project>../libs/networking</make-dep-project>
diff --git a/cmps/server.cbp b/cmps/server.cbp
index 4c165d5..f33bde6 100644
--- a/cmps/server.cbp
+++ b/cmps/server.cbp
@@ -30,12 +30,13 @@
</Build>
<Compiler>
<Add option="-Wall" />
- <Add option="-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi" />
+ <Add option="-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration" />
<Add option="-D_REENTRANT" />
<Add option="-D_GNU_SOURCE=1" />
<Add directory="../libs/vdr/include" />
<Add directory="../libs/util/include" />
<Add directory="../libs/networking/include" />
+ <Add directory="../libs/IO/include" />
<Add directory="../libs/fsScan/include" />
<Add directory="serverlib/include" />
<Add directory="include" />
@@ -44,12 +45,14 @@
<Add library="serverlib/libserverlib.a" />
<Add library="../libs/fsScan/libfsScan.a" />
<Add library="../libs/networking/libnetworking.a" />
+ <Add library="../libs/IO/libIO.a" />
<Add library="../libs/util/libutil.a" />
<Add library="../libs/vdr/libvdr.a" />
<Add library="pthread" />
<Add library="ssl" />
<Add library="crypt" />
<Add library="rt" />
+ <Add library="pcrecpp" />
</Linker>
<Unit filename="main.cc" />
<Extensions>
diff --git a/cmps/server.cbp.save b/cmps/server.cbp.save
index fd89233..f33bde6 100644
--- a/cmps/server.cbp.save
+++ b/cmps/server.cbp.save
@@ -7,7 +7,7 @@
<Option compiler="gcc" />
<Build>
<Target title="Debug">
- <Option output="bin/Debug/CMP" prefix_auto="1" extension_auto="1" />
+ <Option output="bin/Debug/cmps" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Debug/" />
<Option type="1" />
<Option compiler="gcc" />
@@ -16,7 +16,7 @@
</Compiler>
</Target>
<Target title="Release">
- <Option output="bin/Release/CMP" prefix_auto="1" extension_auto="1" />
+ <Option output="bin/Release/cmps" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Release/" />
<Option type="1" />
<Option compiler="gcc" />
@@ -30,12 +30,13 @@
</Build>
<Compiler>
<Add option="-Wall" />
- <Add option="-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi" />
+ <Add option="-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration" />
<Add option="-D_REENTRANT" />
<Add option="-D_GNU_SOURCE=1" />
<Add directory="../libs/vdr/include" />
<Add directory="../libs/util/include" />
<Add directory="../libs/networking/include" />
+ <Add directory="../libs/IO/include" />
<Add directory="../libs/fsScan/include" />
<Add directory="serverlib/include" />
<Add directory="include" />
@@ -44,12 +45,14 @@
<Add library="serverlib/libserverlib.a" />
<Add library="../libs/fsScan/libfsScan.a" />
<Add library="../libs/networking/libnetworking.a" />
+ <Add library="../libs/IO/libIO.a" />
<Add library="../libs/util/libutil.a" />
<Add library="../libs/vdr/libvdr.a" />
<Add library="pthread" />
<Add library="ssl" />
<Add library="crypt" />
<Add library="rt" />
+ <Add library="pcrecpp" />
</Linker>
<Unit filename="main.cc" />
<Extensions>
diff --git a/cmps/server.layout b/cmps/server.layout
index 75de2f8..cfd47d8 100644
--- a/cmps/server.layout
+++ b/cmps/server.layout
@@ -3,7 +3,7 @@
<ActiveTarget name="Debug" />
<File name="main.cc" open="1" top="1" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="1529" topLine="0" />
+ <Cursor1 position="3431" topLine="40" />
</Cursor>
</File>
</CodeBlocks_layout_file>
diff --git a/cmps/server.layout.save b/cmps/server.layout.save
index 2c8a82b..697bb3f 100644
--- a/cmps/server.layout.save
+++ b/cmps/server.layout.save
@@ -3,7 +3,7 @@
<ActiveTarget name="Debug" />
<File name="main.cc" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="1529" topLine="0" />
+ <Cursor1 position="4020" topLine="55" />
</Cursor>
</File>
</CodeBlocks_layout_file>
diff --git a/cmps/serverlib/include/AbstractMediaRequestHandler.h b/cmps/serverlib/include/AbstractMediaRequestHandler.h
index f92e87c..5122390 100644
--- a/cmps/serverlib/include/AbstractMediaRequestHandler.h
+++ b/cmps/serverlib/include/AbstractMediaRequestHandler.h
@@ -27,15 +27,15 @@
#include <HTTPRequestHandler.h>
-class cFilesystemScanner;
+class cFSMediaScanner;
class cAbstractMediaRequestHandler : public cHTTPRequestHandler {
public:
virtual ~cAbstractMediaRequestHandler();
- static void SetFilesystemScanner(cFilesystemScanner *Scanner);
+ static void SetFSMediaScanner(cFSMediaScanner *Scanner);
protected:
cAbstractMediaRequestHandler();
- cFilesystemScanner *FileSystemScanner(void);
+ cFSMediaScanner *FSMediaScanner(void);
};
#endif /* ABSTRACTMEDIAREQUESTHANDLER_H */
diff --git a/cmps/serverlib/include/HTMLListAssembler.h b/cmps/serverlib/include/HTMLListAssembler.h
index 2b8fa65..878ec5e 100644
--- a/cmps/serverlib/include/HTMLListAssembler.h
+++ b/cmps/serverlib/include/HTMLListAssembler.h
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: HTMLListAssembler.h
* Created: 6. Juli 2012, 09
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: cmps - the backend (server) part of compound media player
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#ifndef HTMLLISTASSEMBLER_H
diff --git a/cmps/serverlib/include/HTTPMediaResponse.h b/cmps/serverlib/include/HTTPMediaResponse.h
index 40830c4..981e431 100644
--- a/cmps/serverlib/include/HTTPMediaResponse.h
+++ b/cmps/serverlib/include/HTTPMediaResponse.h
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: HTTPMediaResponse.h
* Created: 6. Juli 2012, 07
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: cmps - the backend (server) part of compound media player
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#ifndef HTTPMEDIARESPONSE_H
diff --git a/cmps/serverlib/nbproject/Makefile-Debug.mk b/cmps/serverlib/nbproject/Makefile-Debug.mk
index a95cf37..62660d5 100644
--- a/cmps/serverlib/nbproject/Makefile-Debug.mk
+++ b/cmps/serverlib/nbproject/Makefile-Debug.mk
@@ -48,8 +48,8 @@ OBJECTFILES= \
CFLAGS=
# CC Compiler Flags
-CCFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi
-CXXFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi
+CCFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration
+CXXFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration
# Fortran Compiler Flags
FFLAGS=
@@ -73,40 +73,45 @@ ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libserverlib.a: ${OBJECTFILES}
${OBJECTDIR}/src/JSonListAssembler.o: src/JSonListAssembler.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../../libs/fsScan/include -I../../libs/networking/include -I../../libs/util/include -I../../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/JSonListAssembler.o src/JSonListAssembler.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../../libs/fsScan/include -I../../libs/networking/include -I../../libs/IO/include -I../../libs/util/include -I../../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/JSonListAssembler.o src/JSonListAssembler.cc
${OBJECTDIR}/src/CommandHandler.o: src/CommandHandler.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../../libs/fsScan/include -I../../libs/networking/include -I../../libs/util/include -I../../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/CommandHandler.o src/CommandHandler.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../../libs/fsScan/include -I../../libs/networking/include -I../../libs/IO/include -I../../libs/util/include -I../../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/CommandHandler.o src/CommandHandler.cc
${OBJECTDIR}/src/HTMLListAssembler.o: src/HTMLListAssembler.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../../libs/fsScan/include -I../../libs/networking/include -I../../libs/util/include -I../../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTMLListAssembler.o src/HTMLListAssembler.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../../libs/fsScan/include -I../../libs/networking/include -I../../libs/IO/include -I../../libs/util/include -I../../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTMLListAssembler.o src/HTMLListAssembler.cc
${OBJECTDIR}/src/AbstractMediaRequestHandler.o: src/AbstractMediaRequestHandler.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../../libs/fsScan/include -I../../libs/networking/include -I../../libs/util/include -I../../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/AbstractMediaRequestHandler.o src/AbstractMediaRequestHandler.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../../libs/fsScan/include -I../../libs/networking/include -I../../libs/IO/include -I../../libs/util/include -I../../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/AbstractMediaRequestHandler.o src/AbstractMediaRequestHandler.cc
${OBJECTDIR}/src/HTTPMediaResponse.o: src/HTTPMediaResponse.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../../libs/fsScan/include -I../../libs/networking/include -I../../libs/util/include -I../../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPMediaResponse.o src/HTTPMediaResponse.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../../libs/fsScan/include -I../../libs/networking/include -I../../libs/IO/include -I../../libs/util/include -I../../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPMediaResponse.o src/HTTPMediaResponse.cc
${OBJECTDIR}/src/MediaListHandler.o: src/MediaListHandler.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../../libs/fsScan/include -I../../libs/networking/include -I../../libs/util/include -I../../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/MediaListHandler.o src/MediaListHandler.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../../libs/fsScan/include -I../../libs/networking/include -I../../libs/IO/include -I../../libs/util/include -I../../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/MediaListHandler.o src/MediaListHandler.cc
${OBJECTDIR}/src/MediaFileHandler.o: src/MediaFileHandler.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../../libs/fsScan/include -I../../libs/networking/include -I../../libs/util/include -I../../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/MediaFileHandler.o src/MediaFileHandler.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../../libs/fsScan/include -I../../libs/networking/include -I../../libs/IO/include -I../../libs/util/include -I../../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/MediaFileHandler.o src/MediaFileHandler.cc
# Subprojects
.build-subprojects:
+ cd ../../libs/vdr && ${MAKE} -f Makefile CONF=Debug
+ cd ../../libs/util && ${MAKE} -f Makefile CONF=Debug
+ cd ../../libs/networking && ${MAKE} -f Makefile CONF=Debug
+ cd ../../libs/IO && ${MAKE} -f Makefile CONF=Debug
+ cd ../../libs/fsScan && ${MAKE} -f Makefile CONF=Debug
# Clean Targets
.clean-conf: ${CLEAN_SUBPROJECTS}
@@ -115,6 +120,11 @@ ${OBJECTDIR}/src/MediaFileHandler.o: src/MediaFileHandler.cc
# Subprojects
.clean-subprojects:
+ cd ../../libs/vdr && ${MAKE} -f Makefile CONF=Debug clean
+ cd ../../libs/util && ${MAKE} -f Makefile CONF=Debug clean
+ cd ../../libs/networking && ${MAKE} -f Makefile CONF=Debug clean
+ cd ../../libs/IO && ${MAKE} -f Makefile CONF=Debug clean
+ cd ../../libs/fsScan && ${MAKE} -f Makefile CONF=Debug clean
# Enable dependency checking
.dep.inc: .depcheck-impl
diff --git a/cmps/serverlib/nbproject/configurations.xml b/cmps/serverlib/nbproject/configurations.xml
index 3291f98..b0c9ad3 100644
--- a/cmps/serverlib/nbproject/configurations.xml
+++ b/cmps/serverlib/nbproject/configurations.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<configurationDescriptor version="80">
+<configurationDescriptor version="84">
<logicalFolder name="root" displayName="root" projectFiles="true" kind="ROOT">
<logicalFolder name="HeaderFiles"
displayName="Header Files"
@@ -53,10 +53,11 @@
<pElem>include</pElem>
<pElem>../../libs/fsScan/include</pElem>
<pElem>../../libs/networking/include</pElem>
+ <pElem>../../libs/IO/include</pElem>
<pElem>../../libs/util/include</pElem>
<pElem>../../libs/vdr/include</pElem>
</incDir>
- <commandLine>-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi</commandLine>
+ <commandLine>-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration</commandLine>
<preprocessorList>
<Elem>_GNU_SOURCE=1</Elem>
<Elem>_REENTRANT</Elem>
@@ -65,6 +66,58 @@
</ccTool>
<archiverTool>
</archiverTool>
+ <requiredProjects>
+ <makeArtifact PL="../../libs/vdr"
+ CT="3"
+ CN="Debug"
+ AC="true"
+ BL="true"
+ WD="../../libs/vdr"
+ BC="${MAKE} -f Makefile CONF=Debug"
+ CC="${MAKE} -f Makefile CONF=Debug clean"
+ OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libvdr.a">
+ </makeArtifact>
+ <makeArtifact PL="../../libs/util"
+ CT="3"
+ CN="Debug"
+ AC="true"
+ BL="true"
+ WD="../../libs/util"
+ BC="${MAKE} -f Makefile CONF=Debug"
+ CC="${MAKE} -f Makefile CONF=Debug clean"
+ OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libutil.a">
+ </makeArtifact>
+ <makeArtifact PL="../../libs/networking"
+ CT="3"
+ CN="Debug"
+ AC="true"
+ BL="true"
+ WD="../../libs/networking"
+ BC="${MAKE} -f Makefile CONF=Debug"
+ CC="${MAKE} -f Makefile CONF=Debug clean"
+ OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libnetworking.a">
+ </makeArtifact>
+ <makeArtifact PL="../../libs/IO"
+ CT="3"
+ CN="Debug"
+ AC="true"
+ BL="true"
+ WD="../../libs/IO"
+ BC="${MAKE} -f Makefile CONF=Debug"
+ CC="${MAKE} -f Makefile CONF=Debug clean"
+ OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libio.a">
+ </makeArtifact>
+ <makeArtifact PL="../../libs/fsScan"
+ CT="3"
+ CN="Debug"
+ AC="true"
+ BL="true"
+ WD="../../libs/fsScan"
+ BC="${MAKE} -f Makefile CONF=Debug"
+ CC="${MAKE} -f Makefile CONF=Debug clean"
+ OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a">
+ </makeArtifact>
+ </requiredProjects>
</compileType>
</conf>
<conf name="Release" type="3">
diff --git a/cmps/serverlib/nbproject/private/configurations.xml b/cmps/serverlib/nbproject/private/configurations.xml
index fa15dc7..616cc91 100644
--- a/cmps/serverlib/nbproject/private/configurations.xml
+++ b/cmps/serverlib/nbproject/private/configurations.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<configurationDescriptor version="80">
+<configurationDescriptor version="84">
<projectmakefile>Makefile</projectmakefile>
<confs>
<conf name="Debug" type="3">
diff --git a/cmps/serverlib/nbproject/project.xml b/cmps/serverlib/nbproject/project.xml
index 564e561..fee9c5d 100644
--- a/cmps/serverlib/nbproject/project.xml
+++ b/cmps/serverlib/nbproject/project.xml
@@ -8,7 +8,13 @@
<cpp-extensions>cc</cpp-extensions>
<header-extensions>h</header-extensions>
<sourceEncoding>UTF-8</sourceEncoding>
- <make-dep-projects/>
+ <make-dep-projects>
+ <make-dep-project>../../libs/util</make-dep-project>
+ <make-dep-project>../../libs/vdr</make-dep-project>
+ <make-dep-project>../../libs/networking</make-dep-project>
+ <make-dep-project>../../libs/IO</make-dep-project>
+ <make-dep-project>../../libs/fsScan</make-dep-project>
+ </make-dep-projects>
<sourceRootList/>
<confList>
<confElem>
diff --git a/cmps/serverlib/serverlib.cbp b/cmps/serverlib/serverlib.cbp
index 92deaf4..f81f760 100644
--- a/cmps/serverlib/serverlib.cbp
+++ b/cmps/serverlib/serverlib.cbp
@@ -7,7 +7,7 @@
<Option compiler="gcc" />
<Build>
<Target title="Debug">
- <Option output="libserverlib" prefix_auto="1" extension_auto="1" />
+ <Option output="serverlib" prefix_auto="1" extension_auto="1" />
<Option working_dir="" />
<Option object_output="obj/Debug/" />
<Option type="2" />
@@ -19,7 +19,7 @@
</Compiler>
</Target>
<Target title="Release">
- <Option output="libserverlib" prefix_auto="1" extension_auto="1" />
+ <Option output="serverlib" prefix_auto="1" extension_auto="1" />
<Option working_dir="" />
<Option object_output="obj/Release/" />
<Option type="2" />
@@ -35,12 +35,13 @@
</Target>
</Build>
<Compiler>
- <Add option="-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi" />
+ <Add option="-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration" />
<Add option="-D_REENTRANT" />
<Add option="-D_GNU_SOURCE=1" />
<Add directory="include" />
<Add directory="../../libs/fsScan/include" />
<Add directory="../../libs/networking/include" />
+ <Add directory="../../libs/IO/include" />
<Add directory="../../libs/util/include" />
<Add directory="../../libs/vdr/include" />
</Compiler>
diff --git a/cmps/serverlib/serverlib.layout b/cmps/serverlib/serverlib.layout
index 8f17071..de6ba2e 100644
--- a/cmps/serverlib/serverlib.layout
+++ b/cmps/serverlib/serverlib.layout
@@ -11,14 +11,14 @@
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
- <File name="src/AbstractMediaRequestHandler.cc" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/JSonListAssembler.cc" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="0" topLine="0" />
+ <Cursor1 position="1183" topLine="0" />
</Cursor>
</File>
- <File name="src/JSonListAssembler.cc" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/AbstractMediaRequestHandler.cc" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="1183" topLine="0" />
+ <Cursor1 position="0" topLine="0" />
</Cursor>
</File>
</CodeBlocks_layout_file>
diff --git a/cmps/serverlib/serverlib.layout.save b/cmps/serverlib/serverlib.layout.save
index cd411cc..de6ba2e 100644
--- a/cmps/serverlib/serverlib.layout.save
+++ b/cmps/serverlib/serverlib.layout.save
@@ -1,22 +1,22 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_layout_file>
<ActiveTarget name="Debug" />
- <File name="src/AbstractMediaRequestHandler.cc" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/HTMLListAssembler.cc" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
- <File name="src/JSonListAssembler.cc" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/MediaListHandler.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="1183" topLine="0" />
+ <Cursor1 position="0" topLine="0" />
</Cursor>
</File>
- <File name="src/HTMLListAssembler.cc" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/JSonListAssembler.cc" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="0" topLine="0" />
+ <Cursor1 position="1183" topLine="0" />
</Cursor>
</File>
- <File name="src/MediaListHandler.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/AbstractMediaRequestHandler.cc" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
diff --git a/cmps/serverlib/src/AbstractMediaRequestHandler.cc b/cmps/serverlib/src/AbstractMediaRequestHandler.cc
index ad845b6..b60bcb8 100644
--- a/cmps/serverlib/src/AbstractMediaRequestHandler.cc
+++ b/cmps/serverlib/src/AbstractMediaRequestHandler.cc
@@ -23,9 +23,9 @@
* --------------------------------------------------------------
*/
#include <AbstractMediaRequestHandler.h>
-#include <FilesystemScanner.h>
+#include <FSMediaScanner.h>
-static cFilesystemScanner *scanner = NULL;
+static cFSMediaScanner *scanner = NULL;
cAbstractMediaRequestHandler::cAbstractMediaRequestHandler()
{
@@ -35,12 +35,12 @@ cAbstractMediaRequestHandler::~cAbstractMediaRequestHandler()
{
}
-cFilesystemScanner *cAbstractMediaRequestHandler::FileSystemScanner(void)
+cFSMediaScanner *cAbstractMediaRequestHandler::FSMediaScanner(void)
{
return scanner;
}
-void cAbstractMediaRequestHandler::SetFilesystemScanner(cFilesystemScanner* Scanner)
+void cAbstractMediaRequestHandler::SetFSMediaScanner(cFSMediaScanner* Scanner)
{
scanner = Scanner;
} \ No newline at end of file
diff --git a/cmps/serverlib/src/HTMLListAssembler.cc b/cmps/serverlib/src/HTMLListAssembler.cc
index bf190fe..1fc964e 100644
--- a/cmps/serverlib/src/HTMLListAssembler.cc
+++ b/cmps/serverlib/src/HTMLListAssembler.cc
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: HTMLListAssembler.cc
* Created: 6. Juli 2012, 09
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: cmps - the backend (server) part of compound media player
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#include <HTMLListAssembler.h>
diff --git a/cmps/serverlib/src/HTTPMediaResponse.cc b/cmps/serverlib/src/HTTPMediaResponse.cc
index e403afe..729c46e 100644
--- a/cmps/serverlib/src/HTTPMediaResponse.cc
+++ b/cmps/serverlib/src/HTTPMediaResponse.cc
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: HTTPMediaResponse.cc
* Created: 6. Juli 2012, 07
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: cmps - the backend (server) part of compound media player
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#include <HTTPMediaResponse.h>
diff --git a/cmps/serverlib/src/JSonListAssembler.cc b/cmps/serverlib/src/JSonListAssembler.cc
index 05ff5cc..6cba0bb 100644
--- a/cmps/serverlib/src/JSonListAssembler.cc
+++ b/cmps/serverlib/src/JSonListAssembler.cc
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: JSonListAssembler.cc
* Created: 6. Juli 2012, 09
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: cmps - the backend (server) part of compound media player
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#include <JSonListAssembler.h>
diff --git a/cmps/serverlib/src/MediaFileHandler.cc b/cmps/serverlib/src/MediaFileHandler.cc
index 200c933..c4e237c 100644
--- a/cmps/serverlib/src/MediaFileHandler.cc
+++ b/cmps/serverlib/src/MediaFileHandler.cc
@@ -1,30 +1,30 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: MediaFileHandler.cc
* Created: 5. Juli 2012, 08
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: cmps - the backend (server) part of compound media player
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#include <MediaFileHandler.h>
#include <AbstractMedia.h>
-#include <FilesystemScanner.h>
+#include <FSMediaScanner.h>
#include <HTTPRequest.h>
#include <HTTPMediaResponse.h>
#include <StringBuilder.h>
@@ -41,8 +41,8 @@ cMediaFileHandler::~cMediaFileHandler()
cHTTPResponse *cMediaFileHandler::ProcessRequest(cHTTPRequest& Request)
{
isyslog("have to find requested media: >%s<", Request.Url().Path());
-
- cAbstractMedia *media = FileSystemScanner()->FindMedia(Request.Url().Path());
+
+ cAbstractMedia *media = FSMediaScanner()->FindMedia(Request.Url().Path());
isyslog("cMediaFileHandler::ProcessRequest ... %0X", media);
diff --git a/cmps/serverlib/src/MediaListHandler.cc b/cmps/serverlib/src/MediaListHandler.cc
index cdb2b21..d5aaa78 100644
--- a/cmps/serverlib/src/MediaListHandler.cc
+++ b/cmps/serverlib/src/MediaListHandler.cc
@@ -24,7 +24,7 @@
*/
#include <MediaListHandler.h>
#include <AbstractListAssembler.h>
-#include <FilesystemScanner.h>
+#include <FSMediaScanner.h>
#include <HTTPRequest.h>
#include <HTTPResponse.h>
#include <StringBuilder.h>
@@ -69,7 +69,7 @@ cHTTPResponse *cMediaListHandler::ProcessRequest(cHTTPRequest& Request)
if (!la) return new cHTTPResponse(HTTP_NotFound);
res = new cHTTPResponse(HTTP_OK);
res->SetContentType(la->MediaType());
- la->AssembleList(res->StringBuilder(), FileSystemScanner()->MediaPool(), FileSystemScanner()->Categories(), start, delta);
+ la->AssembleList(res->StringBuilder(), FSMediaScanner()->MediaPool(), FSMediaScanner()->Categories(), start, delta);
return res;
}
diff --git a/cmps/tests/ConnectionHandlerTest.cc b/cmps/tests/ConnectionHandlerTest.cc
index 6e0257b..8ff3cce 100644
--- a/cmps/tests/ConnectionHandlerTest.cc
+++ b/cmps/tests/ConnectionHandlerTest.cc
@@ -24,7 +24,7 @@
*/
#include <ConnectionHandler.h>
#include <ServerConfig.h>
-#include <FilesystemScanner.h>
+#include <FSMediaScanner.h>
#include <MediaFactory.h>
#include <MediaListHandler.h>
#include <MediaFileHandler.h>
@@ -54,7 +54,7 @@ private:
cServerConfig config;
cConnectionHandler ch;
const char *name;
- cFilesystemScanner *scanner;
+ cFSMediaScanner *scanner;
};
cTestUnit::cTestUnit(const char* Name, cConnectionPoint &cp)
@@ -67,7 +67,7 @@ cTestUnit::cTestUnit(const char* Name, cConnectionPoint &cp)
config.SetDocumentRoot("/media/video");
config.SetAppIcon("/media/favicon.ico");
- scanner = new cFilesystemScanner();
+ scanner = new cFSMediaScanner();
if (!scanner) {
fprintf(stderr, "could not initialize application! (1)");
exit(-1);
diff --git a/cmps/tests/FScanTest.cc b/cmps/tests/FScanTest.cc
index 3a60bfb..a426c0d 100644
--- a/cmps/tests/FScanTest.cc
+++ b/cmps/tests/FScanTest.cc
@@ -1,33 +1,32 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: FScanTest.cc
* Created: 02.07.2012, 16
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: cmps - the backend (server) part of compound media player
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#include <stdlib.h>
#include <iostream>
#include <Audio.h>
#include <Movie.h>
-#include <Picture.h>
-#include <FilesystemScanner.h>
+#include <PictuFSMediaScannerner.h>
#include <MediaFactory.h>
#include <TimeMs.h>
@@ -73,7 +72,7 @@ void FScanTest::test4()
///< file server (added 18G audio) found 5698 media, in 44653 ms.
///< file server (same files, fresh reboot) found 5698 media, in 54723 ms.
{
- cFilesystemScanner scanner;
+ cFSMediaScanner scanner;
cAbstractMedia *media;
std::cout << "FScanTest test 4" << std::endl;
diff --git a/cmps/tests/FileSystemTest.cc b/cmps/tests/FileSystemTest.cc
index 42a7836..3908941 100644
--- a/cmps/tests/FileSystemTest.cc
+++ b/cmps/tests/FileSystemTest.cc
@@ -1,10 +1,27 @@
-/*
- * File: FileSystemTest.cc
- * Author: django
- *
- * Created on 21.07.2012, 12:40:48
+/**
+ * ======================== legal notice ======================
+ *
+ * File: FileSystemTest.cc
+ * Created: 21.07.2012, 12
+ * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
+ * Project: cmps - the backend (server) part of compound media player
+ *
+ * CMP - compound media player
+ *
+ * is a client/server mediaplayer intended to play any media from any workstation
+ * without the need to export or mount shares. cmps is an easy to use backend
+ * with a (ready to use) HTML-interface. Additionally the backend supports
+ * authentication via HTTP-digest authorization.
+ * cmpc is a client with vdr-like osd-menues.
+ *
+ * Copyright (c) 2012 Reinhard Mantey, some rights reserved!
+ * published under Creative Commons by-sa
+ * For details see http://creativecommons.org/licenses/by-sa/3.0/
+ *
+ * The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
+ *
+ * --------------------------------------------------------------
*/
-
#include <stdlib.h>
#include <iostream>
#include <FileSystem.h>
diff --git a/libs/fsScan/src/File.cc b/libs/IO/File.cc
index 477c5c8..477c5c8 100644
--- a/libs/fsScan/src/File.cc
+++ b/libs/IO/File.cc
diff --git a/libs/fsScan/include/File.h b/libs/IO/File.h
index 587d99c..587d99c 100644
--- a/libs/fsScan/include/File.h
+++ b/libs/IO/File.h
diff --git a/libs/fsScan/src/FileRepresentation.cc b/libs/IO/FileRepresentation.cc
index 81599a3..81599a3 100644
--- a/libs/fsScan/src/FileRepresentation.cc
+++ b/libs/IO/FileRepresentation.cc
diff --git a/libs/fsScan/include/FileRepresentation.h b/libs/IO/FileRepresentation.h
index 39a3c1e..39a3c1e 100644
--- a/libs/fsScan/include/FileRepresentation.h
+++ b/libs/IO/FileRepresentation.h
diff --git a/libs/fsScan/src/FileSystem.cc b/libs/IO/FileSystem.cc
index 3891c97..3891c97 100644
--- a/libs/fsScan/src/FileSystem.cc
+++ b/libs/IO/FileSystem.cc
diff --git a/libs/fsScan/include/FileSystem.h b/libs/IO/FileSystem.h
index 0cf4a2f..0cf4a2f 100644
--- a/libs/fsScan/include/FileSystem.h
+++ b/libs/IO/FileSystem.h
diff --git a/libs/IO/IO.cbp b/libs/IO/IO.cbp
new file mode 100644
index 0000000..36f087a
--- /dev/null
+++ b/libs/IO/IO.cbp
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_project_file>
+ <FileVersion major="1" minor="6" />
+ <Project>
+ <Option title="CMP.libs.IO" />
+ <Option pch_mode="2" />
+ <Option compiler="gcc" />
+ <Build>
+ <Target title="Debug">
+ <Option output="IO" prefix_auto="1" extension_auto="1" />
+ <Option working_dir="" />
+ <Option object_output="obj/Debug/" />
+ <Option type="2" />
+ <Option compiler="gcc" />
+ <Option createDefFile="1" />
+ <Compiler>
+ <Add option="-Wall" />
+ <Add option="-g" />
+ </Compiler>
+ </Target>
+ <Target title="Release">
+ <Option output="IO" prefix_auto="1" extension_auto="1" />
+ <Option working_dir="" />
+ <Option object_output="obj/Release/" />
+ <Option type="2" />
+ <Option compiler="gcc" />
+ <Option createDefFile="1" />
+ <Compiler>
+ <Add option="-Wall" />
+ <Add option="-O2" />
+ </Compiler>
+ <Linker>
+ <Add option="-s" />
+ </Linker>
+ </Target>
+ </Build>
+ <Compiler>
+ <Add option="-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration" />
+ <Add option="-D_REENTRANT" />
+ <Add option="-D_GNU_SOURCE=1" />
+ <Add option="-D_FILE_OFFSET_BITS=64" />
+ <Add option="-D_LARGEFILE_SOURCE" />
+ <Add option="-D_LARGEFILE64_SOURCE" />
+ <Add option="-D__STDC_CONSTANT_MACROS" />
+ <Add option="-D__STDC_FORMAT_MACROS" />
+ <Add option="-D__STDC_LIMIT_MACROS" />
+ <Add directory="include" />
+ <Add directory="../util/include" />
+ <Add directory="../vdr/include" />
+ </Compiler>
+ <Unit filename="include/ConfigReader.h" />
+ <Unit filename="include/File.h" />
+ <Unit filename="include/FileReader.h" />
+ <Unit filename="include/FileRepresentation.h" />
+ <Unit filename="include/FileSystem.h" />
+ <Unit filename="include/LineReader.h" />
+ <Unit filename="src/ConfigReader.cc" />
+ <Unit filename="src/File.cc" />
+ <Unit filename="src/FileReader.cc" />
+ <Unit filename="src/FileRepresentation.cc" />
+ <Unit filename="src/FileSystem.cc" />
+ <Unit filename="src/LineReader.cc" />
+ <Extensions>
+ <code_completion />
+ <envvars />
+ <lib_finder disable_auto="1" />
+ <debugger />
+ </Extensions>
+ </Project>
+</CodeBlocks_project_file>
diff --git a/libs/IO/IO.cbp.save b/libs/IO/IO.cbp.save
new file mode 100644
index 0000000..52f0fe6
--- /dev/null
+++ b/libs/IO/IO.cbp.save
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_project_file>
+ <FileVersion major="1" minor="6" />
+ <Project>
+ <Option title="CMP.libs.IO" />
+ <Option pch_mode="2" />
+ <Option compiler="gcc" />
+ <Build>
+ <Target title="Debug">
+ <Option output="IO" prefix_auto="1" extension_auto="1" />
+ <Option working_dir="" />
+ <Option object_output="obj/Debug/" />
+ <Option type="2" />
+ <Option compiler="gcc" />
+ <Option createDefFile="1" />
+ <Compiler>
+ <Add option="-Wall" />
+ <Add option="-g" />
+ </Compiler>
+ </Target>
+ <Target title="Release">
+ <Option output="IO" prefix_auto="1" extension_auto="1" />
+ <Option working_dir="" />
+ <Option object_output="obj/Release/" />
+ <Option type="2" />
+ <Option compiler="gcc" />
+ <Option createDefFile="1" />
+ <Compiler>
+ <Add option="-Wall" />
+ <Add option="-O2" />
+ </Compiler>
+ <Linker>
+ <Add option="-s" />
+ </Linker>
+ </Target>
+ </Build>
+ <Compiler>
+ <Add option="-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration" />
+ <Add option="-D_REENTRANT" />
+ <Add option="-D_GNU_SOURCE=1" />
+ <Add option="-D_FILE_OFFSET_BITS=64" />
+ <Add option="-D_LARGEFILE_SOURCE" />
+ <Add option="-D_LARGEFILE64_SOURCE" />
+ <Add option="-D__STDC_CONSTANT_MACROS" />
+ <Add option="-D__STDC_FORMAT_MACROS" />
+ <Add option="-D__STDC_LIMIT_MACROS" />
+ <Add directory="include" />
+ <Add directory="../util/include" />
+ <Add directory="../vdr/include" />
+ </Compiler>
+ <Unit filename="include/File.h" />
+ <Unit filename="include/FileReader.h" />
+ <Unit filename="include/FileRepresentation.h" />
+ <Unit filename="include/FileSystem.h" />
+ <Unit filename="include/LineReader.h" />
+ <Unit filename="src/File.cc" />
+ <Unit filename="src/FileReader.cc" />
+ <Unit filename="src/FileRepresentation.cc" />
+ <Unit filename="src/FileSystem.cc" />
+ <Unit filename="src/LineReader.cc" />
+ <Extensions>
+ <code_completion />
+ <envvars />
+ <lib_finder disable_auto="1" />
+ <debugger />
+ </Extensions>
+ </Project>
+</CodeBlocks_project_file>
diff --git a/libs/IO/IO.depend b/libs/IO/IO.depend
new file mode 100644
index 0000000..c4ac310
--- /dev/null
+++ b/libs/IO/IO.depend
@@ -0,0 +1 @@
+# depslib dependency file v1.0
diff --git a/libs/IO/IO.layout b/libs/IO/IO.layout
new file mode 100644
index 0000000..f0b6b2a
--- /dev/null
+++ b/libs/IO/IO.layout
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_layout_file>
+ <ActiveTarget name="Debug" />
+ <File name="src/ConfigReader.cc" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="459" topLine="0" />
+ </Cursor>
+ </File>
+ <File name="src/File.cc" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="1638" topLine="30" />
+ </Cursor>
+ </File>
+ <File name="src/FileReader.cc" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="1320" topLine="0" />
+ </Cursor>
+ </File>
+ <File name="src/FileRepresentation.cc" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="1846" topLine="0" />
+ </Cursor>
+ </File>
+ <File name="include/ConfigReader.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="475" topLine="0" />
+ </Cursor>
+ </File>
+ <File name="src/LineReader.cc" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="854" topLine="0" />
+ </Cursor>
+ </File>
+</CodeBlocks_layout_file>
diff --git a/libs/IO/IO.layout.save b/libs/IO/IO.layout.save
new file mode 100644
index 0000000..e837daf
--- /dev/null
+++ b/libs/IO/IO.layout.save
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_layout_file>
+ <ActiveTarget name="Debug" />
+ <File name="src/ConfigReader.cc" open="1" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="0" topLine="0" />
+ </Cursor>
+ </File>
+ <File name="src/File.cc" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="1638" topLine="30" />
+ </Cursor>
+ </File>
+ <File name="src/FileReader.cc" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="1320" topLine="0" />
+ </Cursor>
+ </File>
+ <File name="src/FileRepresentation.cc" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="1846" topLine="0" />
+ </Cursor>
+ </File>
+ <File name="include/ConfigReader.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="475" topLine="0" />
+ </Cursor>
+ </File>
+ <File name="src/LineReader.cc" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="854" topLine="0" />
+ </Cursor>
+ </File>
+</CodeBlocks_layout_file>
diff --git a/libs/IO/Makefile b/libs/IO/Makefile
new file mode 100644
index 0000000..ec9de69
--- /dev/null
+++ b/libs/IO/Makefile
@@ -0,0 +1,128 @@
+#
+# There exist several targets which are by default empty and which can be
+# used for execution of your targets. These targets are usually executed
+# before and after some main targets. They are:
+#
+# .build-pre: called before 'build' target
+# .build-post: called after 'build' target
+# .clean-pre: called before 'clean' target
+# .clean-post: called after 'clean' target
+# .clobber-pre: called before 'clobber' target
+# .clobber-post: called after 'clobber' target
+# .all-pre: called before 'all' target
+# .all-post: called after 'all' target
+# .help-pre: called before 'help' target
+# .help-post: called after 'help' target
+#
+# Targets beginning with '.' are not intended to be called on their own.
+#
+# Main targets can be executed directly, and they are:
+#
+# build build a specific configuration
+# clean remove built files from a configuration
+# clobber remove all built files
+# all build all configurations
+# help print help mesage
+#
+# Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and
+# .help-impl are implemented in nbproject/makefile-impl.mk.
+#
+# Available make variables:
+#
+# CND_BASEDIR base directory for relative paths
+# CND_DISTDIR default top distribution directory (build artifacts)
+# CND_BUILDDIR default top build directory (object files, ...)
+# CONF name of current configuration
+# CND_PLATFORM_${CONF} platform name (current configuration)
+# CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration)
+# CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration)
+# CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration)
+# CND_PACKAGE_DIR_${CONF} directory of package (current configuration)
+# CND_PACKAGE_NAME_${CONF} name of package (current configuration)
+# CND_PACKAGE_PATH_${CONF} path to package (current configuration)
+#
+# NOCDDL
+
+
+# Environment
+MKDIR=mkdir
+CP=cp
+CCADMIN=CCadmin
+
+
+# build
+build: .build-post
+
+.build-pre:
+# Add your pre 'build' code here...
+
+.build-post: .build-impl
+# Add your post 'build' code here...
+
+
+# clean
+clean: .clean-post
+
+.clean-pre:
+# Add your pre 'clean' code here...
+
+.clean-post: .clean-impl
+# Add your post 'clean' code here...
+
+
+# clobber
+clobber: .clobber-post
+
+.clobber-pre:
+# Add your pre 'clobber' code here...
+
+.clobber-post: .clobber-impl
+# Add your post 'clobber' code here...
+
+
+# all
+all: .all-post
+
+.all-pre:
+# Add your pre 'all' code here...
+
+.all-post: .all-impl
+# Add your post 'all' code here...
+
+
+# build tests
+build-tests: .build-tests-post
+
+.build-tests-pre:
+# Add your pre 'build-tests' code here...
+
+.build-tests-post: .build-tests-impl
+# Add your post 'build-tests' code here...
+
+
+# run tests
+test: .test-post
+
+.test-pre:
+# Add your pre 'test' code here...
+
+.test-post: .test-impl
+# Add your post 'test' code here...
+
+
+# help
+help: .help-post
+
+.help-pre:
+# Add your pre 'help' code here...
+
+.help-post: .help-impl
+# Add your post 'help' code here...
+
+
+
+# include project implementation makefile
+include nbproject/Makefile-impl.mk
+
+# include project make variables
+include nbproject/Makefile-variables.mk
diff --git a/libs/IO/nbproject/Makefile-Debug.mk b/libs/IO/nbproject/Makefile-Debug.mk
new file mode 100644
index 0000000..0fa73d7
--- /dev/null
+++ b/libs/IO/nbproject/Makefile-Debug.mk
@@ -0,0 +1,120 @@
+#
+# Generated Makefile - do not edit!
+#
+# Edit the Makefile in the project folder instead (../Makefile). Each target
+# has a -pre and a -post target defined where you can add customized code.
+#
+# This makefile implements configuration specific macros and targets.
+
+
+# Environment
+MKDIR=mkdir
+CP=cp
+GREP=grep
+NM=nm
+CCADMIN=CCadmin
+RANLIB=ranlib
+CC=gcc
+CCC=g++
+CXX=g++
+FC=gfortran
+AS=as
+
+# Macros
+CND_PLATFORM=GNU-Linux-x86
+CND_DLIB_EXT=so
+CND_CONF=Debug
+CND_DISTDIR=dist
+CND_BUILDDIR=build
+
+# Include project Makefile
+include Makefile
+
+# Object Directory
+OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}
+
+# Object Files
+OBJECTFILES= \
+ ${OBJECTDIR}/src/FileRepresentation.o \
+ ${OBJECTDIR}/src/LineReader.o \
+ ${OBJECTDIR}/src/File.o \
+ ${OBJECTDIR}/src/ConfigReader.o \
+ ${OBJECTDIR}/src/FileReader.o \
+ ${OBJECTDIR}/src/FileSystem.o
+
+
+# C Compiler Flags
+CFLAGS=
+
+# CC Compiler Flags
+CCFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration
+CXXFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration
+
+# Fortran Compiler Flags
+FFLAGS=
+
+# Assembler Flags
+ASFLAGS=
+
+# Link Libraries and Options
+LDLIBSOPTIONS=
+
+# Build Targets
+.build-conf: ${BUILD_SUBPROJECTS}
+ "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libio.a
+
+${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libio.a: ${OBJECTFILES}
+ ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}
+ ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libio.a
+ ${AR} -rv ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libio.a ${OBJECTFILES}
+ $(RANLIB) ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libio.a
+
+${OBJECTDIR}/src/FileRepresentation.o: src/FileRepresentation.cc
+ ${MKDIR} -p ${OBJECTDIR}/src
+ ${RM} $@.d
+ $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/FileRepresentation.o src/FileRepresentation.cc
+
+${OBJECTDIR}/src/LineReader.o: src/LineReader.cc
+ ${MKDIR} -p ${OBJECTDIR}/src
+ ${RM} $@.d
+ $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/LineReader.o src/LineReader.cc
+
+${OBJECTDIR}/src/File.o: src/File.cc
+ ${MKDIR} -p ${OBJECTDIR}/src
+ ${RM} $@.d
+ $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/File.o src/File.cc
+
+${OBJECTDIR}/src/ConfigReader.o: src/ConfigReader.cc
+ ${MKDIR} -p ${OBJECTDIR}/src
+ ${RM} $@.d
+ $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/ConfigReader.o src/ConfigReader.cc
+
+${OBJECTDIR}/src/FileReader.o: src/FileReader.cc
+ ${MKDIR} -p ${OBJECTDIR}/src
+ ${RM} $@.d
+ $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/FileReader.o src/FileReader.cc
+
+${OBJECTDIR}/src/FileSystem.o: src/FileSystem.cc
+ ${MKDIR} -p ${OBJECTDIR}/src
+ ${RM} $@.d
+ $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/FileSystem.o src/FileSystem.cc
+
+# Subprojects
+.build-subprojects:
+ cd ../vdr && ${MAKE} -f Makefile CONF=Debug
+ cd ../util && ${MAKE} -f Makefile CONF=Debug
+
+# Clean Targets
+.clean-conf: ${CLEAN_SUBPROJECTS}
+ ${RM} -r ${CND_BUILDDIR}/${CND_CONF}
+ ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libio.a
+
+# Subprojects
+.clean-subprojects:
+ cd ../vdr && ${MAKE} -f Makefile CONF=Debug clean
+ cd ../util && ${MAKE} -f Makefile CONF=Debug clean
+
+# Enable dependency checking
+.dep.inc: .depcheck-impl
+
+include .dep.inc
diff --git a/libs/IO/nbproject/Makefile-Release.mk b/libs/IO/nbproject/Makefile-Release.mk
new file mode 100644
index 0000000..853a053
--- /dev/null
+++ b/libs/IO/nbproject/Makefile-Release.mk
@@ -0,0 +1,116 @@
+#
+# Generated Makefile - do not edit!
+#
+# Edit the Makefile in the project folder instead (../Makefile). Each target
+# has a -pre and a -post target defined where you can add customized code.
+#
+# This makefile implements configuration specific macros and targets.
+
+
+# Environment
+MKDIR=mkdir
+CP=cp
+GREP=grep
+NM=nm
+CCADMIN=CCadmin
+RANLIB=ranlib
+CC=gcc
+CCC=g++
+CXX=g++
+FC=gfortran
+AS=as
+
+# Macros
+CND_PLATFORM=GNU-Linux-x86
+CND_DLIB_EXT=so
+CND_CONF=Release
+CND_DISTDIR=dist
+CND_BUILDDIR=build
+
+# Include project Makefile
+include Makefile
+
+# Object Directory
+OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}
+
+# Object Files
+OBJECTFILES= \
+ ${OBJECTDIR}/src/FileRepresentation.o \
+ ${OBJECTDIR}/src/LineReader.o \
+ ${OBJECTDIR}/src/File.o \
+ ${OBJECTDIR}/src/ConfigReader.o \
+ ${OBJECTDIR}/src/FileReader.o \
+ ${OBJECTDIR}/src/FileSystem.o
+
+
+# C Compiler Flags
+CFLAGS=
+
+# CC Compiler Flags
+CCFLAGS=
+CXXFLAGS=
+
+# Fortran Compiler Flags
+FFLAGS=
+
+# Assembler Flags
+ASFLAGS=
+
+# Link Libraries and Options
+LDLIBSOPTIONS=
+
+# Build Targets
+.build-conf: ${BUILD_SUBPROJECTS}
+ "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libio.a
+
+${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libio.a: ${OBJECTFILES}
+ ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}
+ ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libio.a
+ ${AR} -rv ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libio.a ${OBJECTFILES}
+ $(RANLIB) ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libio.a
+
+${OBJECTDIR}/src/FileRepresentation.o: src/FileRepresentation.cc
+ ${MKDIR} -p ${OBJECTDIR}/src
+ ${RM} $@.d
+ $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/FileRepresentation.o src/FileRepresentation.cc
+
+${OBJECTDIR}/src/LineReader.o: src/LineReader.cc
+ ${MKDIR} -p ${OBJECTDIR}/src
+ ${RM} $@.d
+ $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/LineReader.o src/LineReader.cc
+
+${OBJECTDIR}/src/File.o: src/File.cc
+ ${MKDIR} -p ${OBJECTDIR}/src
+ ${RM} $@.d
+ $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/File.o src/File.cc
+
+${OBJECTDIR}/src/ConfigReader.o: src/ConfigReader.cc
+ ${MKDIR} -p ${OBJECTDIR}/src
+ ${RM} $@.d
+ $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/ConfigReader.o src/ConfigReader.cc
+
+${OBJECTDIR}/src/FileReader.o: src/FileReader.cc
+ ${MKDIR} -p ${OBJECTDIR}/src
+ ${RM} $@.d
+ $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/FileReader.o src/FileReader.cc
+
+${OBJECTDIR}/src/FileSystem.o: src/FileSystem.cc
+ ${MKDIR} -p ${OBJECTDIR}/src
+ ${RM} $@.d
+ $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/FileSystem.o src/FileSystem.cc
+
+# Subprojects
+.build-subprojects:
+
+# Clean Targets
+.clean-conf: ${CLEAN_SUBPROJECTS}
+ ${RM} -r ${CND_BUILDDIR}/${CND_CONF}
+ ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libio.a
+
+# Subprojects
+.clean-subprojects:
+
+# Enable dependency checking
+.dep.inc: .depcheck-impl
+
+include .dep.inc
diff --git a/libs/IO/nbproject/Makefile-impl.mk b/libs/IO/nbproject/Makefile-impl.mk
new file mode 100644
index 0000000..41a3b3c
--- /dev/null
+++ b/libs/IO/nbproject/Makefile-impl.mk
@@ -0,0 +1,133 @@
+#
+# Generated Makefile - do not edit!
+#
+# Edit the Makefile in the project folder instead (../Makefile). Each target
+# has a pre- and a post- target defined where you can add customization code.
+#
+# This makefile implements macros and targets common to all configurations.
+#
+# NOCDDL
+
+
+# Building and Cleaning subprojects are done by default, but can be controlled with the SUB
+# macro. If SUB=no, subprojects will not be built or cleaned. The following macro
+# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf
+# and .clean-reqprojects-conf unless SUB has the value 'no'
+SUB_no=NO
+SUBPROJECTS=${SUB_${SUB}}
+BUILD_SUBPROJECTS_=.build-subprojects
+BUILD_SUBPROJECTS_NO=
+BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}}
+CLEAN_SUBPROJECTS_=.clean-subprojects
+CLEAN_SUBPROJECTS_NO=
+CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}}
+
+
+# Project Name
+PROJECTNAME=IO
+
+# Active Configuration
+DEFAULTCONF=Debug
+CONF=${DEFAULTCONF}
+
+# All Configurations
+ALLCONFS=Debug Release
+
+
+# build
+.build-impl: .build-pre .validate-impl .depcheck-impl
+ @#echo "=> Running $@... Configuration=$(CONF)"
+ "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf
+
+
+# clean
+.clean-impl: .clean-pre .validate-impl .depcheck-impl
+ @#echo "=> Running $@... Configuration=$(CONF)"
+ "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf
+
+
+# clobber
+.clobber-impl: .clobber-pre .depcheck-impl
+ @#echo "=> Running $@..."
+ for CONF in ${ALLCONFS}; \
+ do \
+ "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf; \
+ done
+
+# all
+.all-impl: .all-pre .depcheck-impl
+ @#echo "=> Running $@..."
+ for CONF in ${ALLCONFS}; \
+ do \
+ "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf; \
+ done
+
+# build tests
+.build-tests-impl: .build-impl .build-tests-pre
+ @#echo "=> Running $@... Configuration=$(CONF)"
+ "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-tests-conf
+
+# run tests
+.test-impl: .build-tests-impl .test-pre
+ @#echo "=> Running $@... Configuration=$(CONF)"
+ "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .test-conf
+
+# dependency checking support
+.depcheck-impl:
+ @echo "# This code depends on make tool being used" >.dep.inc
+ @if [ -n "${MAKE_VERSION}" ]; then \
+ echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \
+ echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \
+ echo "include \$${DEPFILES}" >>.dep.inc; \
+ echo "endif" >>.dep.inc; \
+ else \
+ echo ".KEEP_STATE:" >>.dep.inc; \
+ echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \
+ fi
+
+# configuration validation
+.validate-impl:
+ @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \
+ then \
+ echo ""; \
+ echo "Error: can not find the makefile for configuration '${CONF}' in project ${PROJECTNAME}"; \
+ echo "See 'make help' for details."; \
+ echo "Current directory: " `pwd`; \
+ echo ""; \
+ fi
+ @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \
+ then \
+ exit 1; \
+ fi
+
+
+# help
+.help-impl: .help-pre
+ @echo "This makefile supports the following configurations:"
+ @echo " ${ALLCONFS}"
+ @echo ""
+ @echo "and the following targets:"
+ @echo " build (default target)"
+ @echo " clean"
+ @echo " clobber"
+ @echo " all"
+ @echo " help"
+ @echo ""
+ @echo "Makefile Usage:"
+ @echo " make [CONF=<CONFIGURATION>] [SUB=no] build"
+ @echo " make [CONF=<CONFIGURATION>] [SUB=no] clean"
+ @echo " make [SUB=no] clobber"
+ @echo " make [SUB=no] all"
+ @echo " make help"
+ @echo ""
+ @echo "Target 'build' will build a specific configuration and, unless 'SUB=no',"
+ @echo " also build subprojects."
+ @echo "Target 'clean' will clean a specific configuration and, unless 'SUB=no',"
+ @echo " also clean subprojects."
+ @echo "Target 'clobber' will remove all built files from all configurations and,"
+ @echo " unless 'SUB=no', also from subprojects."
+ @echo "Target 'all' will will build all configurations and, unless 'SUB=no',"
+ @echo " also build subprojects."
+ @echo "Target 'help' prints this message."
+ @echo ""
+
diff --git a/libs/IO/nbproject/Makefile-variables.mk b/libs/IO/nbproject/Makefile-variables.mk
new file mode 100644
index 0000000..56d45ff
--- /dev/null
+++ b/libs/IO/nbproject/Makefile-variables.mk
@@ -0,0 +1,35 @@
+#
+# Generated - do not edit!
+#
+# NOCDDL
+#
+CND_BASEDIR=`pwd`
+CND_BUILDDIR=build
+CND_DISTDIR=dist
+# Debug configuration
+CND_PLATFORM_Debug=GNU-Linux-x86
+CND_ARTIFACT_DIR_Debug=dist/Debug/GNU-Linux-x86
+CND_ARTIFACT_NAME_Debug=libio.a
+CND_ARTIFACT_PATH_Debug=dist/Debug/GNU-Linux-x86/libio.a
+CND_PACKAGE_DIR_Debug=dist/Debug/GNU-Linux-x86/package
+CND_PACKAGE_NAME_Debug=IO.tar
+CND_PACKAGE_PATH_Debug=dist/Debug/GNU-Linux-x86/package/IO.tar
+# Release configuration
+CND_PLATFORM_Release=GNU-Linux-x86
+CND_ARTIFACT_DIR_Release=dist/Release/GNU-Linux-x86
+CND_ARTIFACT_NAME_Release=libio.a
+CND_ARTIFACT_PATH_Release=dist/Release/GNU-Linux-x86/libio.a
+CND_PACKAGE_DIR_Release=dist/Release/GNU-Linux-x86/package
+CND_PACKAGE_NAME_Release=IO.tar
+CND_PACKAGE_PATH_Release=dist/Release/GNU-Linux-x86/package/IO.tar
+#
+# include compiler specific variables
+#
+# dmake command
+ROOT:sh = test -f nbproject/private/Makefile-variables.mk || \
+ (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk)
+#
+# gmake command
+.PHONY: $(shell test -f nbproject/private/Makefile-variables.mk || (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk))
+#
+include nbproject/private/Makefile-variables.mk
diff --git a/libs/IO/nbproject/Package-Debug.bash b/libs/IO/nbproject/Package-Debug.bash
new file mode 100644
index 0000000..d2cdb5c
--- /dev/null
+++ b/libs/IO/nbproject/Package-Debug.bash
@@ -0,0 +1,75 @@
+#!/bin/bash -x
+
+#
+# Generated - do not edit!
+#
+
+# Macros
+TOP=`pwd`
+CND_PLATFORM=GNU-Linux-x86
+CND_CONF=Debug
+CND_DISTDIR=dist
+CND_BUILDDIR=build
+NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging
+TMPDIRNAME=tmp-packaging
+OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libio.a
+OUTPUT_BASENAME=libio.a
+PACKAGE_TOP_DIR=IO/
+
+# Functions
+function checkReturnCode
+{
+ rc=$?
+ if [ $rc != 0 ]
+ then
+ exit $rc
+ fi
+}
+function makeDirectory
+# $1 directory path
+# $2 permission (optional)
+{
+ mkdir -p "$1"
+ checkReturnCode
+ if [ "$2" != "" ]
+ then
+ chmod $2 "$1"
+ checkReturnCode
+ fi
+}
+function copyFileToTmpDir
+# $1 from-file path
+# $2 to-file path
+# $3 permission
+{
+ cp "$1" "$2"
+ checkReturnCode
+ if [ "$3" != "" ]
+ then
+ chmod $3 "$2"
+ checkReturnCode
+ fi
+}
+
+# Setup
+cd "${TOP}"
+mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package
+rm -rf ${NBTMPDIR}
+mkdir -p ${NBTMPDIR}
+
+# Copy files and create directories and links
+cd "${TOP}"
+makeDirectory "${NBTMPDIR}/IO/lib"
+copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}lib/${OUTPUT_BASENAME}" 0644
+
+
+# Generate tar file
+cd "${TOP}"
+rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/IO.tar
+cd ${NBTMPDIR}
+tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/IO.tar *
+checkReturnCode
+
+# Cleanup
+cd "${TOP}"
+rm -rf ${NBTMPDIR}
diff --git a/libs/IO/nbproject/Package-Release.bash b/libs/IO/nbproject/Package-Release.bash
new file mode 100644
index 0000000..13f19f5
--- /dev/null
+++ b/libs/IO/nbproject/Package-Release.bash
@@ -0,0 +1,75 @@
+#!/bin/bash -x
+
+#
+# Generated - do not edit!
+#
+
+# Macros
+TOP=`pwd`
+CND_PLATFORM=GNU-Linux-x86
+CND_CONF=Release
+CND_DISTDIR=dist
+CND_BUILDDIR=build
+NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging
+TMPDIRNAME=tmp-packaging
+OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libio.a
+OUTPUT_BASENAME=libio.a
+PACKAGE_TOP_DIR=IO/
+
+# Functions
+function checkReturnCode
+{
+ rc=$?
+ if [ $rc != 0 ]
+ then
+ exit $rc
+ fi
+}
+function makeDirectory
+# $1 directory path
+# $2 permission (optional)
+{
+ mkdir -p "$1"
+ checkReturnCode
+ if [ "$2" != "" ]
+ then
+ chmod $2 "$1"
+ checkReturnCode
+ fi
+}
+function copyFileToTmpDir
+# $1 from-file path
+# $2 to-file path
+# $3 permission
+{
+ cp "$1" "$2"
+ checkReturnCode
+ if [ "$3" != "" ]
+ then
+ chmod $3 "$2"
+ checkReturnCode
+ fi
+}
+
+# Setup
+cd "${TOP}"
+mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package
+rm -rf ${NBTMPDIR}
+mkdir -p ${NBTMPDIR}
+
+# Copy files and create directories and links
+cd "${TOP}"
+makeDirectory "${NBTMPDIR}/IO/lib"
+copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}lib/${OUTPUT_BASENAME}" 0644
+
+
+# Generate tar file
+cd "${TOP}"
+rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/IO.tar
+cd ${NBTMPDIR}
+tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/IO.tar *
+checkReturnCode
+
+# Cleanup
+cd "${TOP}"
+rm -rf ${NBTMPDIR}
diff --git a/libs/IO/nbproject/configurations.xml b/libs/IO/nbproject/configurations.xml
new file mode 100644
index 0000000..7cc1823
--- /dev/null
+++ b/libs/IO/nbproject/configurations.xml
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configurationDescriptor version="84">
+ <logicalFolder name="root" displayName="root" projectFiles="true" kind="ROOT">
+ <logicalFolder name="HeaderFiles"
+ displayName="Header Files"
+ projectFiles="true">
+ <itemPath>include/ConfigReader.h</itemPath>
+ <itemPath>include/File.h</itemPath>
+ <itemPath>include/FileReader.h</itemPath>
+ <itemPath>include/FileRepresentation.h</itemPath>
+ <itemPath>include/FileSystem.h</itemPath>
+ <itemPath>include/LineReader.h</itemPath>
+ </logicalFolder>
+ <logicalFolder name="ResourceFiles"
+ displayName="Resource Files"
+ projectFiles="true">
+ </logicalFolder>
+ <logicalFolder name="SourceFiles"
+ displayName="Source Files"
+ projectFiles="true">
+ <itemPath>src/ConfigReader.cc</itemPath>
+ <itemPath>src/File.cc</itemPath>
+ <itemPath>src/FileReader.cc</itemPath>
+ <itemPath>src/FileRepresentation.cc</itemPath>
+ <itemPath>src/FileSystem.cc</itemPath>
+ <itemPath>src/LineReader.cc</itemPath>
+ </logicalFolder>
+ <logicalFolder name="TestFiles"
+ displayName="Test Files"
+ projectFiles="false"
+ kind="TEST_LOGICAL_FOLDER">
+ </logicalFolder>
+ <logicalFolder name="ExternalFiles"
+ displayName="Important Files"
+ projectFiles="false"
+ kind="IMPORTANT_FILES_FOLDER">
+ <itemPath>Makefile</itemPath>
+ </logicalFolder>
+ </logicalFolder>
+ <projectmakefile>Makefile</projectmakefile>
+ <confs>
+ <conf name="Debug" type="3">
+ <toolsSet>
+ <remote-sources-mode>LOCAL_SOURCES</remote-sources-mode>
+ <compilerSet>default</compilerSet>
+ </toolsSet>
+ <compileType>
+ <ccTool>
+ <incDir>
+ <pElem>include</pElem>
+ <pElem>../util/include</pElem>
+ <pElem>../vdr/include</pElem>
+ </incDir>
+ <commandLine>-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration</commandLine>
+ <preprocessorList>
+ <Elem>_FILE_OFFSET_BITS=64</Elem>
+ <Elem>_GNU_SOURCE=1</Elem>
+ <Elem>_LARGEFILE64_SOURCE</Elem>
+ <Elem>_LARGEFILE_SOURCE</Elem>
+ <Elem>_REENTRANT</Elem>
+ <Elem>__STDC_CONSTANT_MACROS</Elem>
+ <Elem>__STDC_FORMAT_MACROS</Elem>
+ <Elem>__STDC_LIMIT_MACROS</Elem>
+ </preprocessorList>
+ <warningLevel>2</warningLevel>
+ </ccTool>
+ <archiverTool>
+ </archiverTool>
+ <requiredProjects>
+ <makeArtifact PL="../vdr"
+ CT="3"
+ CN="Debug"
+ AC="true"
+ BL="true"
+ WD="../vdr"
+ BC="${MAKE} -f Makefile CONF=Debug"
+ CC="${MAKE} -f Makefile CONF=Debug clean"
+ OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libvdr.a">
+ </makeArtifact>
+ <makeArtifact PL="../util"
+ CT="3"
+ CN="Debug"
+ AC="true"
+ BL="true"
+ WD="../util"
+ BC="${MAKE} -f Makefile CONF=Debug"
+ CC="${MAKE} -f Makefile CONF=Debug clean"
+ OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libutil.a">
+ </makeArtifact>
+ </requiredProjects>
+ </compileType>
+ </conf>
+ <conf name="Release" type="3">
+ <toolsSet>
+ <remote-sources-mode>LOCAL_SOURCES</remote-sources-mode>
+ <compilerSet>default</compilerSet>
+ </toolsSet>
+ <compileType>
+ <cTool>
+ <developmentMode>5</developmentMode>
+ </cTool>
+ <ccTool>
+ <developmentMode>5</developmentMode>
+ </ccTool>
+ <fortranCompilerTool>
+ <developmentMode>5</developmentMode>
+ </fortranCompilerTool>
+ <asmTool>
+ <developmentMode>5</developmentMode>
+ </asmTool>
+ <archiverTool>
+ </archiverTool>
+ </compileType>
+ </conf>
+ </confs>
+</configurationDescriptor>
diff --git a/libs/IO/nbproject/private/Makefile-variables.mk b/libs/IO/nbproject/private/Makefile-variables.mk
new file mode 100644
index 0000000..a64183e
--- /dev/null
+++ b/libs/IO/nbproject/private/Makefile-variables.mk
@@ -0,0 +1,7 @@
+#
+# Generated - do not edit!
+#
+# NOCDDL
+#
+# Debug configuration
+# Release configuration
diff --git a/libs/IO/nbproject/private/configurations.xml b/libs/IO/nbproject/private/configurations.xml
new file mode 100644
index 0000000..616cc91
--- /dev/null
+++ b/libs/IO/nbproject/private/configurations.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configurationDescriptor version="84">
+ <projectmakefile>Makefile</projectmakefile>
+ <confs>
+ <conf name="Debug" type="3">
+ <toolsSet>
+ <developmentServer>localhost</developmentServer>
+ <platform>2</platform>
+ </toolsSet>
+ <dbx_gdbdebugger version="1">
+ <gdb_pathmaps>
+ </gdb_pathmaps>
+ <gdb_interceptlist>
+ <gdbinterceptoptions gdb_all="false" gdb_unhandled="true" gdb_unexpected="true"/>
+ </gdb_interceptlist>
+ <gdb_options>
+ <DebugOptions>
+ </DebugOptions>
+ </gdb_options>
+ <gdb_buildfirst gdb_buildfirst_overriden="false" gdb_buildfirst_old="false"/>
+ </dbx_gdbdebugger>
+ <nativedebugger version="1">
+ <engine>gdb</engine>
+ </nativedebugger>
+ <runprofile version="9">
+ <runcommandpicklist>
+ <runcommandpicklistitem>"${OUTPUT_PATH}"</runcommandpicklistitem>
+ </runcommandpicklist>
+ <runcommand>"${OUTPUT_PATH}"</runcommand>
+ <rundir></rundir>
+ <buildfirst>true</buildfirst>
+ <terminal-type>0</terminal-type>
+ <remove-instrumentation>0</remove-instrumentation>
+ <environment>
+ </environment>
+ </runprofile>
+ </conf>
+ <conf name="Release" type="3">
+ <toolsSet>
+ <developmentServer>localhost</developmentServer>
+ <platform>2</platform>
+ </toolsSet>
+ <dbx_gdbdebugger version="1">
+ <gdb_pathmaps>
+ </gdb_pathmaps>
+ <gdb_interceptlist>
+ <gdbinterceptoptions gdb_all="false" gdb_unhandled="true" gdb_unexpected="true"/>
+ </gdb_interceptlist>
+ <gdb_options>
+ <DebugOptions>
+ </DebugOptions>
+ </gdb_options>
+ <gdb_buildfirst gdb_buildfirst_overriden="false" gdb_buildfirst_old="false"/>
+ </dbx_gdbdebugger>
+ <nativedebugger version="1">
+ <engine>gdb</engine>
+ </nativedebugger>
+ <runprofile version="9">
+ <runcommandpicklist>
+ <runcommandpicklistitem>"${OUTPUT_PATH}"</runcommandpicklistitem>
+ </runcommandpicklist>
+ <runcommand>"${OUTPUT_PATH}"</runcommand>
+ <rundir></rundir>
+ <buildfirst>true</buildfirst>
+ <terminal-type>0</terminal-type>
+ <remove-instrumentation>0</remove-instrumentation>
+ <environment>
+ </environment>
+ </runprofile>
+ </conf>
+ </confs>
+</configurationDescriptor>
diff --git a/libs/IO/nbproject/private/private.xml b/libs/IO/nbproject/private/private.xml
new file mode 100644
index 0000000..3ef29a3
--- /dev/null
+++ b/libs/IO/nbproject/private/private.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
+ <data xmlns="http://www.netbeans.org/ns/make-project-private/1">
+ <activeConfTypeElem>3</activeConfTypeElem>
+ <activeConfIndexElem>0</activeConfIndexElem>
+ </data>
+ <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
+</project-private>
diff --git a/libs/IO/nbproject/project.xml b/libs/IO/nbproject/project.xml
new file mode 100644
index 0000000..e083e62
--- /dev/null
+++ b/libs/IO/nbproject/project.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>org.netbeans.modules.cnd.makeproject</type>
+ <configuration>
+ <data xmlns="http://www.netbeans.org/ns/make-project/1">
+ <name>IO</name>
+ <c-extensions/>
+ <cpp-extensions>cc</cpp-extensions>
+ <header-extensions>h</header-extensions>
+ <sourceEncoding>UTF-8</sourceEncoding>
+ <make-dep-projects>
+ <make-dep-project>../vdr</make-dep-project>
+ <make-dep-project>../util</make-dep-project>
+ </make-dep-projects>
+ <sourceRootList/>
+ <confList>
+ <confElem>
+ <name>Debug</name>
+ <type>3</type>
+ </confElem>
+ <confElem>
+ <name>Release</name>
+ <type>3</type>
+ </confElem>
+ </confList>
+ </data>
+ </configuration>
+</project>
diff --git a/libs/IO/summary.txt b/libs/IO/summary.txt
new file mode 100644
index 0000000..543fe28
--- /dev/null
+++ b/libs/IO/summary.txt
@@ -0,0 +1 @@
+libIO: classes for files, filesystem and input/output
diff --git a/libs/fsScan/fsScan.cbp b/libs/fsScan/fsScan.cbp
index 8f51f56..21a5de4 100644
--- a/libs/fsScan/fsScan.cbp
+++ b/libs/fsScan/fsScan.cbp
@@ -35,11 +35,12 @@
</Target>
</Build>
<Compiler>
- <Add option="-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi" />
+ <Add option="-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration" />
<Add option="-D_REENTRANT" />
<Add option="-D_GNU_SOURCE=1" />
<Add directory="../vdr/include" />
<Add directory="../util/include" />
+ <Add directory="../IO/include" />
<Add directory="../networking/include" />
<Add directory="include" />
</Compiler>
@@ -47,10 +48,7 @@
<Unit filename="include/AbstractMultiFileMovie.h" />
<Unit filename="include/Audio.h" />
<Unit filename="include/DVDImage.h" />
- <Unit filename="include/File.h" />
- <Unit filename="include/FileRepresentation.h" />
- <Unit filename="include/FileSystem.h" />
- <Unit filename="include/FilesystemScanner.h" />
+ <Unit filename="include/FSMediaScanner.h" />
<Unit filename="include/LegacyVdrRecording.h" />
<Unit filename="include/MediaFactory.h" />
<Unit filename="include/Movie.h" />
@@ -60,10 +58,7 @@
<Unit filename="src/AbstractMultiFileMovie.cc" />
<Unit filename="src/Audio.cc" />
<Unit filename="src/DVDImage.cc" />
- <Unit filename="src/File.cc" />
- <Unit filename="src/FileRepresentation.cc" />
- <Unit filename="src/FileSystem.cc" />
- <Unit filename="src/FilesystemScanner.cc" />
+ <Unit filename="src/FSMediaScanner.cc" />
<Unit filename="src/LegacyVdrRecording.cc" />
<Unit filename="src/MediaFactory.cc" />
<Unit filename="src/Movie.cc" />
diff --git a/libs/fsScan/fsScan.layout b/libs/fsScan/fsScan.layout
index 2fdf779..2db2bda 100644
--- a/libs/fsScan/fsScan.layout
+++ b/libs/fsScan/fsScan.layout
@@ -1,39 +1,24 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_layout_file>
<ActiveTarget name="Debug" />
- <File name="src/FileRepresentation.cc" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
- <Cursor>
- <Cursor1 position="1911" topLine="9" />
- </Cursor>
- </File>
- <File name="include/File.h" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
- <Cursor>
- <Cursor1 position="1782" topLine="0" />
- </Cursor>
- </File>
- <File name="src/FilesystemScanner.cc" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
- <Cursor>
- <Cursor1 position="2177" topLine="0" />
- </Cursor>
- </File>
<File name="src/AbstractMedia.cc" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1453" topLine="0" />
</Cursor>
</File>
- <File name="src/LegacyVdrRecording.cc" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/MediaFactory.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="1450" topLine="0" />
+ <Cursor1 position="1317" topLine="18" />
</Cursor>
</File>
- <File name="src/MediaFactory.cc" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/LegacyVdrRecording.cc" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="1709" topLine="9" />
+ <Cursor1 position="1450" topLine="0" />
</Cursor>
</File>
- <File name="include/MediaFactory.h" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="include/MediaFactory.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="1119" topLine="0" />
+ <Cursor1 position="1670" topLine="0" />
</Cursor>
</File>
<File name="src/VdrRecording.cc" open="0" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
@@ -41,24 +26,9 @@
<Cursor1 position="1404" topLine="0" />
</Cursor>
</File>
- <File name="include/FileRepresentation.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
- <Cursor>
- <Cursor1 position="1593" topLine="0" />
- </Cursor>
- </File>
- <File name="include/FileSystem.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
- <Cursor>
- <Cursor1 position="1438" topLine="0" />
- </Cursor>
- </File>
- <File name="src/File.cc" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
- <Cursor>
- <Cursor1 position="3161" topLine="54" />
- </Cursor>
- </File>
- <File name="src/FileSystem.cc" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="include/AbstractMedia.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="1476" topLine="9" />
+ <Cursor1 position="1008" topLine="0" />
</Cursor>
</File>
</CodeBlocks_layout_file>
diff --git a/libs/fsScan/fsScan.layout.save b/libs/fsScan/fsScan.layout.save
index 6134cfb..2db2bda 100644
--- a/libs/fsScan/fsScan.layout.save
+++ b/libs/fsScan/fsScan.layout.save
@@ -6,29 +6,19 @@
<Cursor1 position="1453" topLine="0" />
</Cursor>
</File>
- <File name="src/LegacyVdrRecording.cc" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
- <Cursor>
- <Cursor1 position="1450" topLine="0" />
- </Cursor>
- </File>
- <File name="src/FilesystemScanner.cc" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/MediaFactory.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="2177" topLine="0" />
+ <Cursor1 position="1317" topLine="18" />
</Cursor>
</File>
- <File name="include/MediaFactory.h" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
- <Cursor>
- <Cursor1 position="1119" topLine="0" />
- </Cursor>
- </File>
- <File name="include/FileSystem.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/LegacyVdrRecording.cc" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="1438" topLine="0" />
+ <Cursor1 position="1450" topLine="0" />
</Cursor>
</File>
- <File name="src/FileSystem.cc" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="include/MediaFactory.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="1476" topLine="9" />
+ <Cursor1 position="1670" topLine="0" />
</Cursor>
</File>
<File name="src/VdrRecording.cc" open="0" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
@@ -36,29 +26,9 @@
<Cursor1 position="1404" topLine="0" />
</Cursor>
</File>
- <File name="include/File.h" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
- <Cursor>
- <Cursor1 position="1782" topLine="0" />
- </Cursor>
- </File>
- <File name="src/File.cc" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
- <Cursor>
- <Cursor1 position="3161" topLine="54" />
- </Cursor>
- </File>
- <File name="src/MediaFactory.cc" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
- <Cursor>
- <Cursor1 position="1709" topLine="9" />
- </Cursor>
- </File>
- <File name="src/FileRepresentation.cc" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
- <Cursor>
- <Cursor1 position="1911" topLine="9" />
- </Cursor>
- </File>
- <File name="include/FileRepresentation.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="include/AbstractMedia.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="1593" topLine="0" />
+ <Cursor1 position="1008" topLine="0" />
</Cursor>
</File>
</CodeBlocks_layout_file>
diff --git a/libs/fsScan/include/AbstractMedia.h b/libs/fsScan/include/AbstractMedia.h
index 750ffde..8c87dd5 100644
--- a/libs/fsScan/include/AbstractMedia.h
+++ b/libs/fsScan/include/AbstractMedia.h
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: AbstractMedia.h
* Created: 2. Juli 2012, 14
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libfsScan: mediatypes and filesystem scanning
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#ifndef ABSTRACTMEDIA_H
@@ -56,6 +56,7 @@ public:
ulong LastModified(void) const;
const char *LogicalPath(void) const { return logicalPath; }
virtual const char *Name(void) const;
+ virtual bool NeedsFurtherScan(void) const;
virtual size_t Size(void) const;
virtual const char *URI(void) const { return uri; }
virtual void Refresh(void);
diff --git a/libs/fsScan/include/AbstractMultiFileMovie.h b/libs/fsScan/include/AbstractMultiFileMovie.h
index aed75b9..6913a74 100644
--- a/libs/fsScan/include/AbstractMultiFileMovie.h
+++ b/libs/fsScan/include/AbstractMultiFileMovie.h
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: AbstractMultiFileMovie.h
* Created: 3. Juli 2012, 07
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libfsScan: mediatypes and filesystem scanning
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#ifndef ABSTRACTMULTIFILEMOVIE_H
diff --git a/libs/fsScan/include/Audio.h b/libs/fsScan/include/Audio.h
index 44472ef..42611c2 100644
--- a/libs/fsScan/include/Audio.h
+++ b/libs/fsScan/include/Audio.h
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: Audio.h
* Created: 2. Juli 2012, 15
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libfsScan: mediatypes and filesystem scanning
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#ifndef AUDIO_H
@@ -32,6 +32,8 @@ public:
cAudio(const cFile &File, const char *Mime);
virtual ~cAudio();
+ virtual bool NeedsFurtherScan(void) const;
+
private:
static const char *ContentType(const char *Extension);
static SupportedExtension knownExtensions[];
diff --git a/libs/fsScan/include/DVDImage.h b/libs/fsScan/include/DVDImage.h
index 1a657ff..5845d77 100644
--- a/libs/fsScan/include/DVDImage.h
+++ b/libs/fsScan/include/DVDImage.h
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: DVDImage.h
* Created: 3. Juli 2012, 08
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libfsScan: mediatypes and filesystem scanning
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#ifndef DVDIMAGE_H
diff --git a/libs/fsScan/include/FilesystemScanner.h b/libs/fsScan/include/FSMediaScanner.h
index 51cd44e..1c85b46 100644
--- a/libs/fsScan/include/FilesystemScanner.h
+++ b/libs/fsScan/include/FSMediaScanner.h
@@ -1,39 +1,39 @@
/**
* ======================== legal notice ======================
- *
- * File: FilesystemScanner.h
+ *
+ * File: FSMediaScanner.h
* Created: 2. Juli 2012, 13
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libfsScan: mediatypes and filesystem scanning
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
-#ifndef FILESYSTEMSCANNER_H
-#define FILESYSTEMSCANNER_H
+#ifndef FSMEDIASCANNER_H
+#define FSMEDIASCANNER_H
#include <ManagedVector.h>
#include <MediaFactory.h>
#include <map>
class cAbstractMedia;
-class cFilesystemScanner {
+class cFSMediaScanner {
public:
- cFilesystemScanner();
- virtual ~cFilesystemScanner();
+ cFSMediaScanner();
+ virtual ~cFSMediaScanner();
cManagedVector &MediaPool(void) { return pool; }
std::map<int, size_t> &Categories(void) { return categories; }
@@ -48,5 +48,5 @@ private:
cMediaFactory *mediaFactory;
};
-#endif /* FILESYSTEMSCANNER_H */
+#endif /* FSMEDIASCANNER_H */
diff --git a/libs/fsScan/include/LegacyVdrRecording.h b/libs/fsScan/include/LegacyVdrRecording.h
index d60902a..cc46348 100644
--- a/libs/fsScan/include/LegacyVdrRecording.h
+++ b/libs/fsScan/include/LegacyVdrRecording.h
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: LegacyVdrRecording.h
* Created: 3. Juli 2012, 08
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libfsScan: mediatypes and filesystem scanning
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#ifndef LEGACYVDRRECORDING_H
diff --git a/libs/fsScan/include/MediaFactory.h b/libs/fsScan/include/MediaFactory.h
index 200335b..2ddcaa5 100644
--- a/libs/fsScan/include/MediaFactory.h
+++ b/libs/fsScan/include/MediaFactory.h
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: MediaFactory.h
* Created: 2. Juli 2012, 15
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libfsScan: mediatypes and filesystem scanning
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#ifndef MEDIAFACTORY_H
@@ -32,9 +32,10 @@
class cAbstractMedia;
class cFile;
class cManagedVector;
+class cServerConfig;
class cMediaFactory {
public:
- cMediaFactory(const cFile &BaseDirectory);
+ cMediaFactory(const cServerConfig &config);
virtual ~cMediaFactory();
cAbstractMedia *CreateMedia(const cFile &FileOrDirectory);
@@ -43,8 +44,12 @@ public:
void SetBaseDirectory(const cFile &dir);
private:
+ void Scan4MetaData(cAbstractMedia *media);
+ int CreateMedia(const cFile *Parent, const char *Name);
static int createMedia(void *opaque, cFile *Parent, const char *Name);
+ const cServerConfig &config;
cFile baseDirectory;
+ cManagedVector *mediaPool;
char *scratch;
size_t scratchSize;
};
diff --git a/libs/fsScan/include/Movie.h b/libs/fsScan/include/Movie.h
index ecb62ec..5a4f60d 100644
--- a/libs/fsScan/include/Movie.h
+++ b/libs/fsScan/include/Movie.h
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: Movie.h
* Created: 2. Juli 2012, 15
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libfsScan: mediatypes and filesystem scanning
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#ifndef MOVIE_H
@@ -32,6 +32,8 @@ public:
cMovie(const cFile &File, const char *Mime, SupportedMediaType Type = cAbstractMedia::Movie);
virtual ~cMovie();
+ virtual bool NeedsFurtherScan(void) const;
+
private:
static const char *ContentType(const char *Extension);
static SupportedExtension knownExtensions[];
diff --git a/libs/fsScan/include/Picture.h b/libs/fsScan/include/Picture.h
index 3e9a079..669509b 100644
--- a/libs/fsScan/include/Picture.h
+++ b/libs/fsScan/include/Picture.h
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: Picture.h
* Created: 2. Juli 2012, 15
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libfsScan: mediatypes and filesystem scanning
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#ifndef PICTURE_H
diff --git a/libs/fsScan/include/VdrRecording.h b/libs/fsScan/include/VdrRecording.h
index 9b92c61..a8ec292 100644
--- a/libs/fsScan/include/VdrRecording.h
+++ b/libs/fsScan/include/VdrRecording.h
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: VdrRecording.h
* Created: 3. Juli 2012, 08
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libfsScan: mediatypes and filesystem scanning
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#ifndef VDRRECORDING_H
diff --git a/libs/fsScan/nbproject/Makefile-Debug.mk b/libs/fsScan/nbproject/Makefile-Debug.mk
index 316d5a4..1e0062b 100644
--- a/libs/fsScan/nbproject/Makefile-Debug.mk
+++ b/libs/fsScan/nbproject/Makefile-Debug.mk
@@ -41,10 +41,7 @@ OBJECTFILES= \
${OBJECTDIR}/src/VdrRecording.o \
${OBJECTDIR}/src/MediaFactory.o \
${OBJECTDIR}/src/LegacyVdrRecording.o \
- ${OBJECTDIR}/src/FileRepresentation.o \
- ${OBJECTDIR}/src/File.o \
- ${OBJECTDIR}/src/FilesystemScanner.o \
- ${OBJECTDIR}/src/FileSystem.o \
+ ${OBJECTDIR}/src/FSMediaScanner.o \
${OBJECTDIR}/src/AbstractMultiFileMovie.o \
${OBJECTDIR}/src/AbstractMedia.o \
${OBJECTDIR}/src/Movie.o
@@ -54,8 +51,8 @@ OBJECTFILES= \
CFLAGS=
# CC Compiler Flags
-CCFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi
-CXXFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi
+CCFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration
+CXXFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration
# Fortran Compiler Flags
FFLAGS=
@@ -79,70 +76,59 @@ ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a: ${OBJECTFILES}
${OBJECTDIR}/src/Picture.o: src/Picture.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Picture.o src/Picture.cc
+ $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Picture.o src/Picture.cc
${OBJECTDIR}/src/Audio.o: src/Audio.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Audio.o src/Audio.cc
+ $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Audio.o src/Audio.cc
${OBJECTDIR}/src/DVDImage.o: src/DVDImage.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/DVDImage.o src/DVDImage.cc
+ $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/DVDImage.o src/DVDImage.cc
${OBJECTDIR}/src/VdrRecording.o: src/VdrRecording.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/VdrRecording.o src/VdrRecording.cc
+ $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/VdrRecording.o src/VdrRecording.cc
${OBJECTDIR}/src/MediaFactory.o: src/MediaFactory.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/MediaFactory.o src/MediaFactory.cc
+ $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/MediaFactory.o src/MediaFactory.cc
${OBJECTDIR}/src/LegacyVdrRecording.o: src/LegacyVdrRecording.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/LegacyVdrRecording.o src/LegacyVdrRecording.cc
+ $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/LegacyVdrRecording.o src/LegacyVdrRecording.cc
-${OBJECTDIR}/src/FileRepresentation.o: src/FileRepresentation.cc
+${OBJECTDIR}/src/FSMediaScanner.o: src/FSMediaScanner.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/FileRepresentation.o src/FileRepresentation.cc
-
-${OBJECTDIR}/src/File.o: src/File.cc
- ${MKDIR} -p ${OBJECTDIR}/src
- ${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/File.o src/File.cc
-
-${OBJECTDIR}/src/FilesystemScanner.o: src/FilesystemScanner.cc
- ${MKDIR} -p ${OBJECTDIR}/src
- ${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/FilesystemScanner.o src/FilesystemScanner.cc
-
-${OBJECTDIR}/src/FileSystem.o: src/FileSystem.cc
- ${MKDIR} -p ${OBJECTDIR}/src
- ${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/FileSystem.o src/FileSystem.cc
+ $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/FSMediaScanner.o src/FSMediaScanner.cc
${OBJECTDIR}/src/AbstractMultiFileMovie.o: src/AbstractMultiFileMovie.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/AbstractMultiFileMovie.o src/AbstractMultiFileMovie.cc
+ $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/AbstractMultiFileMovie.o src/AbstractMultiFileMovie.cc
${OBJECTDIR}/src/AbstractMedia.o: src/AbstractMedia.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/AbstractMedia.o src/AbstractMedia.cc
+ $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/AbstractMedia.o src/AbstractMedia.cc
${OBJECTDIR}/src/Movie.o: src/Movie.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Movie.o src/Movie.cc
+ $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Movie.o src/Movie.cc
# Subprojects
.build-subprojects:
+ cd ../vdr && ${MAKE} -f Makefile CONF=Debug
+ cd ../util && ${MAKE} -f Makefile CONF=Debug
+ cd ../networking && ${MAKE} -f Makefile CONF=Debug
+ cd ../IO && ${MAKE} -f Makefile CONF=Debug
# Clean Targets
.clean-conf: ${CLEAN_SUBPROJECTS}
@@ -151,6 +137,10 @@ ${OBJECTDIR}/src/Movie.o: src/Movie.cc
# Subprojects
.clean-subprojects:
+ cd ../vdr && ${MAKE} -f Makefile CONF=Debug clean
+ cd ../util && ${MAKE} -f Makefile CONF=Debug clean
+ cd ../networking && ${MAKE} -f Makefile CONF=Debug clean
+ cd ../IO && ${MAKE} -f Makefile CONF=Debug clean
# Enable dependency checking
.dep.inc: .depcheck-impl
diff --git a/libs/fsScan/nbproject/Makefile-Release.mk b/libs/fsScan/nbproject/Makefile-Release.mk
index 072cdf0..bc8c6a9 100644
--- a/libs/fsScan/nbproject/Makefile-Release.mk
+++ b/libs/fsScan/nbproject/Makefile-Release.mk
@@ -41,10 +41,7 @@ OBJECTFILES= \
${OBJECTDIR}/src/VdrRecording.o \
${OBJECTDIR}/src/MediaFactory.o \
${OBJECTDIR}/src/LegacyVdrRecording.o \
- ${OBJECTDIR}/src/FileRepresentation.o \
- ${OBJECTDIR}/src/File.o \
- ${OBJECTDIR}/src/FilesystemScanner.o \
- ${OBJECTDIR}/src/FileSystem.o \
+ ${OBJECTDIR}/src/FSMediaScanner.o \
${OBJECTDIR}/src/AbstractMultiFileMovie.o \
${OBJECTDIR}/src/AbstractMedia.o \
${OBJECTDIR}/src/Movie.o
@@ -106,25 +103,10 @@ ${OBJECTDIR}/src/LegacyVdrRecording.o: src/LegacyVdrRecording.cc
${RM} $@.d
$(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/LegacyVdrRecording.o src/LegacyVdrRecording.cc
-${OBJECTDIR}/src/FileRepresentation.o: src/FileRepresentation.cc
+${OBJECTDIR}/src/FSMediaScanner.o: src/FSMediaScanner.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/FileRepresentation.o src/FileRepresentation.cc
-
-${OBJECTDIR}/src/File.o: src/File.cc
- ${MKDIR} -p ${OBJECTDIR}/src
- ${RM} $@.d
- $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/File.o src/File.cc
-
-${OBJECTDIR}/src/FilesystemScanner.o: src/FilesystemScanner.cc
- ${MKDIR} -p ${OBJECTDIR}/src
- ${RM} $@.d
- $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/FilesystemScanner.o src/FilesystemScanner.cc
-
-${OBJECTDIR}/src/FileSystem.o: src/FileSystem.cc
- ${MKDIR} -p ${OBJECTDIR}/src
- ${RM} $@.d
- $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/FileSystem.o src/FileSystem.cc
+ $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/FSMediaScanner.o src/FSMediaScanner.cc
${OBJECTDIR}/src/AbstractMultiFileMovie.o: src/AbstractMultiFileMovie.cc
${MKDIR} -p ${OBJECTDIR}/src
diff --git a/libs/fsScan/nbproject/configurations.xml b/libs/fsScan/nbproject/configurations.xml
index ca6b34a..9984a4c 100644
--- a/libs/fsScan/nbproject/configurations.xml
+++ b/libs/fsScan/nbproject/configurations.xml
@@ -8,10 +8,7 @@
<itemPath>include/AbstractMultiFileMovie.h</itemPath>
<itemPath>include/Audio.h</itemPath>
<itemPath>include/DVDImage.h</itemPath>
- <itemPath>include/File.h</itemPath>
- <itemPath>include/FileRepresentation.h</itemPath>
- <itemPath>include/FileSystem.h</itemPath>
- <itemPath>include/FilesystemScanner.h</itemPath>
+ <itemPath>include/FSMediaScanner.h</itemPath>
<itemPath>include/LegacyVdrRecording.h</itemPath>
<itemPath>include/MediaFactory.h</itemPath>
<itemPath>include/Movie.h</itemPath>
@@ -29,10 +26,7 @@
<itemPath>src/AbstractMultiFileMovie.cc</itemPath>
<itemPath>src/Audio.cc</itemPath>
<itemPath>src/DVDImage.cc</itemPath>
- <itemPath>src/File.cc</itemPath>
- <itemPath>src/FileRepresentation.cc</itemPath>
- <itemPath>src/FileSystem.cc</itemPath>
- <itemPath>src/FilesystemScanner.cc</itemPath>
+ <itemPath>src/FSMediaScanner.cc</itemPath>
<itemPath>src/LegacyVdrRecording.cc</itemPath>
<itemPath>src/MediaFactory.cc</itemPath>
<itemPath>src/Movie.cc</itemPath>
@@ -64,10 +58,11 @@
<incDir>
<pElem>include</pElem>
<pElem>../networking/include</pElem>
+ <pElem>../IO/include</pElem>
<pElem>../util/include</pElem>
<pElem>../vdr/include</pElem>
</incDir>
- <commandLine>-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi</commandLine>
+ <commandLine>-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration</commandLine>
<preprocessorList>
<Elem>_FILE_OFFSET_BITS=64</Elem>
<Elem>_GNU_SOURCE=1</Elem>
@@ -82,6 +77,48 @@
</ccTool>
<archiverTool>
</archiverTool>
+ <requiredProjects>
+ <makeArtifact PL="../vdr"
+ CT="3"
+ CN="Debug"
+ AC="true"
+ BL="true"
+ WD="../vdr"
+ BC="${MAKE} -f Makefile CONF=Debug"
+ CC="${MAKE} -f Makefile CONF=Debug clean"
+ OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libvdr.a">
+ </makeArtifact>
+ <makeArtifact PL="../util"
+ CT="3"
+ CN="Debug"
+ AC="true"
+ BL="true"
+ WD="../util"
+ BC="${MAKE} -f Makefile CONF=Debug"
+ CC="${MAKE} -f Makefile CONF=Debug clean"
+ OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libutil.a">
+ </makeArtifact>
+ <makeArtifact PL="../networking"
+ CT="3"
+ CN="Debug"
+ AC="true"
+ BL="true"
+ WD="../networking"
+ BC="${MAKE} -f Makefile CONF=Debug"
+ CC="${MAKE} -f Makefile CONF=Debug clean"
+ OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libnetworking.a">
+ </makeArtifact>
+ <makeArtifact PL="../IO"
+ CT="3"
+ CN="Debug"
+ AC="true"
+ BL="true"
+ WD="../IO"
+ BC="${MAKE} -f Makefile CONF=Debug"
+ CC="${MAKE} -f Makefile CONF=Debug clean"
+ OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libio.a">
+ </makeArtifact>
+ </requiredProjects>
</compileType>
</conf>
<conf name="Release" type="3">
diff --git a/libs/fsScan/nbproject/project.xml b/libs/fsScan/nbproject/project.xml
index a104f65..f749866 100644
--- a/libs/fsScan/nbproject/project.xml
+++ b/libs/fsScan/nbproject/project.xml
@@ -8,7 +8,12 @@
<cpp-extensions>cc</cpp-extensions>
<header-extensions>h</header-extensions>
<sourceEncoding>UTF-8</sourceEncoding>
- <make-dep-projects/>
+ <make-dep-projects>
+ <make-dep-project>../IO</make-dep-project>
+ <make-dep-project>../vdr</make-dep-project>
+ <make-dep-project>../util</make-dep-project>
+ <make-dep-project>../networking</make-dep-project>
+ </make-dep-projects>
<sourceRootList/>
<confList>
<confElem>
diff --git a/libs/fsScan/src/AbstractMedia.cc b/libs/fsScan/src/AbstractMedia.cc
index 27ad751..924f01a 100644
--- a/libs/fsScan/src/AbstractMedia.cc
+++ b/libs/fsScan/src/AbstractMedia.cc
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: AbstractMedia.cc
* Created: 2. Juli 2012, 14
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libfsScan: mediatypes and filesystem scanning
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#include <AbstractMedia.h>
@@ -112,6 +112,11 @@ const char *cAbstractMedia::MediaType2Text(int Type)
}
}
+bool cAbstractMedia::NeedsFurtherScan(void) const
+{
+ return false;
+}
+
const char *cAbstractMedia::AbsolutePath(void) const
{
return keyPath.AbsolutePath();
diff --git a/libs/fsScan/src/AbstractMultiFileMovie.cc b/libs/fsScan/src/AbstractMultiFileMovie.cc
index d20da87..f679511 100644
--- a/libs/fsScan/src/AbstractMultiFileMovie.cc
+++ b/libs/fsScan/src/AbstractMultiFileMovie.cc
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: AbstractMultiFileMovie.cc
* Created: 3. Juli 2012, 07
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libfsScan: mediatypes and filesystem scanning
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#include <AbstractMultiFileMovie.h>
diff --git a/libs/fsScan/src/Audio.cc b/libs/fsScan/src/Audio.cc
index 8933c36..6c90fbc 100644
--- a/libs/fsScan/src/Audio.cc
+++ b/libs/fsScan/src/Audio.cc
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: Audio.cc
* Created: 2. Juli 2012, 15
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libfsScan: mediatypes and filesystem scanning
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#include <Audio.h>
@@ -40,7 +40,7 @@ SupportedExtension cAudio::knownExtensions[] = {
{ "mp3", "audio/mpeg" },
{ "mp4", "audio/x-mpeg4" },
{ "m4a", "audio/x-m4" },
- { "mpg", "audio/mpeg" },
+// { "mpg", "audio/mpeg" },
{ "mpp", "audio/x-musepack" },
{ "ram", "audio/x-realaudio" },
{ NULL, NULL }
@@ -63,3 +63,8 @@ const char *cAudio::ContentType(const char* Extension)
return NULL;
}
+bool cAudio::NeedsFurtherScan(void) const
+{
+//TODO: common meta data: artist, title
+ return true;
+}
diff --git a/libs/fsScan/src/DVDImage.cc b/libs/fsScan/src/DVDImage.cc
index 8c789b4..0d23ae1 100644
--- a/libs/fsScan/src/DVDImage.cc
+++ b/libs/fsScan/src/DVDImage.cc
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: DVDImage.cc
* Created: 3. Juli 2012, 08
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libfsScan: mediatypes and filesystem scanning
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#include <DVDImage.h>
diff --git a/libs/fsScan/src/FilesystemScanner.cc b/libs/fsScan/src/FSMediaScanner.cc
index cbe4b95..f4ac14e 100644
--- a/libs/fsScan/src/FilesystemScanner.cc
+++ b/libs/fsScan/src/FSMediaScanner.cc
@@ -1,28 +1,28 @@
/**
* ======================== legal notice ======================
- *
- * File: FilesystemScanner.cc
+ *
+ * File: FSMediaScanner.cc
* Created: 2. Juli 2012, 13
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libfsScan: mediatypes and filesystem scanning
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
-#include <FilesystemScanner.h>
+#include <FSMediaScanner.h>
#include <AbstractMedia.h>
#include <Logging.h>
#include <stddef.h>
@@ -40,20 +40,20 @@ void freeMediaCallback(void *elem)
delete (cAbstractMedia *)elem;
}
-cFilesystemScanner::cFilesystemScanner()
+cFSMediaScanner::cFSMediaScanner()
: fileBufSize(512)
, pool(freeMediaCallback)
, mediaFactory(NULL)
{
}
-cFilesystemScanner::~cFilesystemScanner()
+cFSMediaScanner::~cFSMediaScanner()
{
pool.clear();
if (mediaFactory) delete mediaFactory;
}
-void cFilesystemScanner::SetMediaFactory(cMediaFactory* factory)
+void cFSMediaScanner::SetMediaFactory(cMediaFactory* factory)
{
mediaFactory = factory;
}
@@ -76,7 +76,7 @@ bool defaultMediaSortOrder(void *a, void *b)
return rv;
}
-void cFilesystemScanner::Refresh()
+void cFSMediaScanner::Refresh()
{
if (!mediaFactory) return;
pool.clear();
@@ -96,7 +96,7 @@ void cFilesystemScanner::Refresh()
}
}
-cAbstractMedia *cFilesystemScanner::FindMedia(const char *Path)
+cAbstractMedia *cFSMediaScanner::FindMedia(const char *Path)
{
cAbstractMedia *rv = NULL, *tmp;
diff --git a/libs/fsScan/src/LegacyVdrRecording.cc b/libs/fsScan/src/LegacyVdrRecording.cc
index 731d0f3..5ee635c 100644
--- a/libs/fsScan/src/LegacyVdrRecording.cc
+++ b/libs/fsScan/src/LegacyVdrRecording.cc
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: LegacyVdrRecording.cc
* Created: 3. Juli 2012, 08
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libfsScan: mediatypes and filesystem scanning
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#include <LegacyVdrRecording.h>
diff --git a/libs/fsScan/src/MediaFactory.cc b/libs/fsScan/src/MediaFactory.cc
index 22b9044..4dec763 100644
--- a/libs/fsScan/src/MediaFactory.cc
+++ b/libs/fsScan/src/MediaFactory.cc
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: MediaFactory.cc
* Created: 2. Juli 2012, 15
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libfsScan: mediatypes and filesystem scanning
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#include <MediaFactory.h>
@@ -29,6 +29,7 @@
#include <LegacyVdrRecording.h>
#include <VdrRecording.h>
#include <DVDImage.h>
+#include <ServerConfig.h>
#include <StringBuilder.h>
#include <Logging.h>
#include <File.h>
@@ -36,8 +37,9 @@
#include <stdlib.h>
#include <string.h>
-cMediaFactory::cMediaFactory(const cFile &BaseDirectory)
- : baseDirectory(BaseDirectory)
+cMediaFactory::cMediaFactory(const cServerConfig &sc)
+ : config(sc)
+ , baseDirectory(sc.DocumentRoot())
, scratch(NULL)
, scratchSize(1024)
{
@@ -61,7 +63,14 @@ void cMediaFactory::SetBaseDirectory(const cFile &dir)
int cMediaFactory::createMedia(void *opaque, cFile *Parent, const char *Name)
{
if (!opaque) return -1;
- cManagedVector *pool = (cManagedVector *) opaque;
+ cMediaFactory *mf = (cMediaFactory *) opaque;
+
+ return mf->CreateMedia(Parent, Name);
+}
+
+int cMediaFactory::CreateMedia(const cFile *Parent, const char *Name)
+{
+// cManagedVector *pool = (cManagedVector *) opaque;
cFile *curFile = new cFile(*Parent, Name);
const char *mimeType = NULL;
cAbstractMedia *rv = NULL;
@@ -93,7 +102,7 @@ int cMediaFactory::createMedia(void *opaque, cFile *Parent, const char *Name)
}
delete tmp;
}
- if (!rv) curFile->VisitFiles(createMedia, opaque);
+ if (!rv) curFile->VisitFiles(createMedia, this);
}
else {
const char *extension = strrchr(Name, '.');
@@ -117,7 +126,8 @@ int cMediaFactory::createMedia(void *opaque, cFile *Parent, const char *Name)
}
delete curFile;
if (rv) {
- pool->push_back(rv);
+ if (config.WantExtendedScan() && rv->NeedsFurtherScan()) Scan4MetaData(rv);
+ mediaPool->push_back(rv);
return 0;
}
return -1;
@@ -128,5 +138,11 @@ void cMediaFactory::Scan4Media(cManagedVector& pool)
if (!baseDirectory.Exists() || !baseDirectory.IsDirectory()) return;
baseDirectory.SetVirtualRoot();
- baseDirectory.VisitFiles(createMedia, &pool);
+ mediaPool = &pool;
+ baseDirectory.VisitFiles(createMedia, this);
+}
+
+void cMediaFactory::Scan4MetaData(cAbstractMedia* media)
+{
+ //TODO:
}
diff --git a/libs/fsScan/src/Movie.cc b/libs/fsScan/src/Movie.cc
index 759ff3d..a63ff19 100644
--- a/libs/fsScan/src/Movie.cc
+++ b/libs/fsScan/src/Movie.cc
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: Movie.cc
* Created: 2. Juli 2012, 15
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libfsScan: mediatypes and filesystem scanning
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#include <Movie.h>
@@ -37,6 +37,7 @@ SupportedExtension cMovie::knownExtensions[] = {
{ "ogv", "video/ogg" },
{ "mkv", "video/x-matroska" },
{ "mov", "video/quicktime" },
+ { "mpg", "video/mpeg" },
{ "mpeg", "video/mpeg" },
{ "swf", "application/x-shockwave-flash" },
{ NULL, NULL }
@@ -59,3 +60,8 @@ const char *cMovie::ContentType(const char* Extension)
return NULL;
}
+bool cMovie::NeedsFurtherScan(void) const
+{
+//TODO: common meta data: width, height, interlaced
+ return true;
+}
diff --git a/libs/fsScan/src/Picture.cc b/libs/fsScan/src/Picture.cc
index 566c44c..19a02a1 100644
--- a/libs/fsScan/src/Picture.cc
+++ b/libs/fsScan/src/Picture.cc
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: Picture.cc
* Created: 2. Juli 2012, 15
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libfsScan: mediatypes and filesystem scanning
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#include <Picture.h>
diff --git a/libs/fsScan/src/VdrRecording.cc b/libs/fsScan/src/VdrRecording.cc
index 4fb61fa..03abccf 100644
--- a/libs/fsScan/src/VdrRecording.cc
+++ b/libs/fsScan/src/VdrRecording.cc
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: VdrRecording.cc
* Created: 3. Juli 2012, 08
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libfsScan: mediatypes and filesystem scanning
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#include <VdrRecording.h>
diff --git a/libs/networking/include/Credentials.h b/libs/networking/include/Credentials.h
index cdc7903..44dc17c 100644
--- a/libs/networking/include/Credentials.h
+++ b/libs/networking/include/Credentials.h
@@ -26,10 +26,11 @@
#define CREDENTIALS_H
#include <Principal.h>
+#include <Persistable.h>
#include <string>
#include <tr1/unordered_map>
-class cCredentials {
+class cCredentials : public cPersistable {
public:
typedef std::tr1::unordered_map<std::string, cPrincipal *>::const_iterator const_iterator;
cCredentials();
@@ -39,8 +40,8 @@ public:
const char *ApplicationRealm(void) const;
void SetApplicationRealm(const char *ApplicationRealm = "knownUser@myApp");
- int Load(const char *FileName);
- int Store(const char *FileName);
+ virtual int Load(const char *FileName);
+ virtual int Store(const char *FileName);
void Put(const char *Key, cPrincipal *p);
cPrincipal *Get(const char *Key);
diff --git a/libs/networking/include/HTTPResponse.h b/libs/networking/include/HTTPResponse.h
index dbc0969..0bb6d72 100644
--- a/libs/networking/include/HTTPResponse.h
+++ b/libs/networking/include/HTTPResponse.h
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: HTTPResponse.h
* Created: 4. Juli 2012, 06
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libnetworking: classes for tcp/ip sockets and http-protocol handling
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#ifndef HTTPRESPONSE_H
diff --git a/libs/networking/include/ServerConfig.h b/libs/networking/include/ServerConfig.h
index 0f9efec..88789cb 100644
--- a/libs/networking/include/ServerConfig.h
+++ b/libs/networking/include/ServerConfig.h
@@ -1,57 +1,73 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: ServerConfig.h
* Created: 8. Juli 2012, 06
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libnetworking: classes for tcp/ip sockets and http-protocol handling
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#ifndef SERVERCONFIG_H
#define SERVERCONFIG_H
+#include <Persistable.h>
#include <ServerSocket.h>
#include <Authorization.h>
-class cServerConfig
-{
+class cServerConfig : public cPersistable {
public:
- cServerConfig(int Port);
+ cServerConfig(const char *ConfigBaseDir);
virtual ~cServerConfig();
bool AuthorizationRequired(void) { return authorizationRequired; }
const char *AppIconPath(void) const { return appIconPath; }
const char *DocumentRoot(void) const { return documentRoot; }
-
+ bool WantExtendedScan(void) const { return wantExtendedScan; }
+ const char *CredentialsFile(void) const { return credentialsFile; }
+ const char *MediaInfo(void) const { return mediaInfo; }
+ const char *FFMpeg(void) const { return ffmpeg; }
+ void Dump(void);
+ virtual int Load(const char *FileName);
+ virtual int Store(const char *FileName);
void SetAppIcon(const char *AppIcon);
void SetAuthorizationRequired(bool Authorize) { authorizationRequired = Authorize; }
+ void SetConfigBaseDir(const char *ConfigBaseDir);
+ void SetCredentialsFile(const char *FileName);
void SetDocumentRoot(const char *DocumentRoot);
+ void SetMediaInfo(const char *MediaInfo);
+ void SetFFMpeg(const char *FFMpeg);
void SetPort(int port);
+ void SetWantExtendedScan(bool wantScan) { wantExtendedScan = wantScan; }
private:
cServerSocket server;
cAuthorizations authorizations;
bool authorizationRequired;
+ bool wantExtendedScan;
+ char *configBaseDir;
+ char *credentialsFile;
char *documentRoot;
char *appIconPath;
+ char *mediaInfo;
+ char *ffmpeg;
friend class cHTTPServer;
friend class cConnectionHandler;
-};
+ };
#endif /* SERVERCONFIG_H */
diff --git a/libs/networking/nbproject/Makefile-Debug.mk b/libs/networking/nbproject/Makefile-Debug.mk
index e971c9e..8c52867 100644
--- a/libs/networking/nbproject/Makefile-Debug.mk
+++ b/libs/networking/nbproject/Makefile-Debug.mk
@@ -38,7 +38,6 @@ OBJECTFILES= \
${OBJECTDIR}/src/HTTPRequest.o \
${OBJECTDIR}/src/ServerSocket.o \
${OBJECTDIR}/src/HTTPAuthorizationRequest.o \
- ${OBJECTDIR}/src/Url.o \
${OBJECTDIR}/src/Principal.o \
${OBJECTDIR}/src/Authorization.o \
${OBJECTDIR}/src/ServerConfig.o \
@@ -60,8 +59,8 @@ OBJECTFILES= \
CFLAGS=
# CC Compiler Flags
-CCFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi
-CXXFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi
+CCFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration
+CXXFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration
# Fortran Compiler Flags
FFLAGS=
@@ -85,100 +84,97 @@ ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libnetworking.a: ${OBJECTFILES}
${OBJECTDIR}/src/HTTPRequest.o: src/HTTPRequest.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPRequest.o src/HTTPRequest.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPRequest.o src/HTTPRequest.cc
${OBJECTDIR}/src/ServerSocket.o: src/ServerSocket.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/ServerSocket.o src/ServerSocket.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/ServerSocket.o src/ServerSocket.cc
${OBJECTDIR}/src/HTTPAuthorizationRequest.o: src/HTTPAuthorizationRequest.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPAuthorizationRequest.o src/HTTPAuthorizationRequest.cc
-
-${OBJECTDIR}/src/Url.o: src/Url.cc
- ${MKDIR} -p ${OBJECTDIR}/src
- ${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Url.o src/Url.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPAuthorizationRequest.o src/HTTPAuthorizationRequest.cc
${OBJECTDIR}/src/Principal.o: src/Principal.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Principal.o src/Principal.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Principal.o src/Principal.cc
${OBJECTDIR}/src/Authorization.o: src/Authorization.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Authorization.o src/Authorization.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Authorization.o src/Authorization.cc
${OBJECTDIR}/src/ServerConfig.o: src/ServerConfig.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/ServerConfig.o src/ServerConfig.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/ServerConfig.o src/ServerConfig.cc
${OBJECTDIR}/src/HTTPServer.o: src/HTTPServer.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPServer.o src/HTTPServer.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPServer.o src/HTTPServer.cc
${OBJECTDIR}/src/ConnectionPoint.o: src/ConnectionPoint.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/ConnectionPoint.o src/ConnectionPoint.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/ConnectionPoint.o src/ConnectionPoint.cc
${OBJECTDIR}/src/HTTPResponse.o: src/HTTPResponse.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPResponse.o src/HTTPResponse.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPResponse.o src/HTTPResponse.cc
${OBJECTDIR}/src/ConnectionHandler.o: src/ConnectionHandler.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/ConnectionHandler.o src/ConnectionHandler.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/ConnectionHandler.o src/ConnectionHandler.cc
${OBJECTDIR}/src/Credentials.o: src/Credentials.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Credentials.o src/Credentials.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Credentials.o src/Credentials.cc
${OBJECTDIR}/src/HTTPRequestHandler.o: src/HTTPRequestHandler.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPRequestHandler.o src/HTTPRequestHandler.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPRequestHandler.o src/HTTPRequestHandler.cc
${OBJECTDIR}/src/HTTPMessage.o: src/HTTPMessage.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPMessage.o src/HTTPMessage.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPMessage.o src/HTTPMessage.cc
${OBJECTDIR}/src/HTTPFileResponse.o: src/HTTPFileResponse.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPFileResponse.o src/HTTPFileResponse.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPFileResponse.o src/HTTPFileResponse.cc
${OBJECTDIR}/src/HTTPParser.o: src/HTTPParser.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPParser.o src/HTTPParser.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPParser.o src/HTTPParser.cc
${OBJECTDIR}/src/ClientSocket.o: src/ClientSocket.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/ClientSocket.o src/ClientSocket.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/ClientSocket.o src/ClientSocket.cc
${OBJECTDIR}/src/AbstractSocket.o: src/AbstractSocket.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/AbstractSocket.o src/AbstractSocket.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/AbstractSocket.o src/AbstractSocket.cc
${OBJECTDIR}/src/HTTPStatus.o: src/HTTPStatus.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
- $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPStatus.o src/HTTPStatus.cc
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPStatus.o src/HTTPStatus.cc
# Subprojects
.build-subprojects:
+ cd ../vdr && ${MAKE} -f Makefile CONF=Debug
+ cd ../util && ${MAKE} -f Makefile CONF=Debug
# Clean Targets
.clean-conf: ${CLEAN_SUBPROJECTS}
@@ -187,6 +183,8 @@ ${OBJECTDIR}/src/HTTPStatus.o: src/HTTPStatus.cc
# Subprojects
.clean-subprojects:
+ cd ../vdr && ${MAKE} -f Makefile CONF=Debug clean
+ cd ../util && ${MAKE} -f Makefile CONF=Debug clean
# Enable dependency checking
.dep.inc: .depcheck-impl
diff --git a/libs/networking/nbproject/Makefile-Release.mk b/libs/networking/nbproject/Makefile-Release.mk
index c5df60f..50a2158 100644
--- a/libs/networking/nbproject/Makefile-Release.mk
+++ b/libs/networking/nbproject/Makefile-Release.mk
@@ -38,7 +38,6 @@ OBJECTFILES= \
${OBJECTDIR}/src/HTTPRequest.o \
${OBJECTDIR}/src/ServerSocket.o \
${OBJECTDIR}/src/HTTPAuthorizationRequest.o \
- ${OBJECTDIR}/src/Url.o \
${OBJECTDIR}/src/Principal.o \
${OBJECTDIR}/src/Authorization.o \
${OBJECTDIR}/src/ServerConfig.o \
@@ -97,11 +96,6 @@ ${OBJECTDIR}/src/HTTPAuthorizationRequest.o: src/HTTPAuthorizationRequest.cc
${RM} $@.d
$(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPAuthorizationRequest.o src/HTTPAuthorizationRequest.cc
-${OBJECTDIR}/src/Url.o: src/Url.cc
- ${MKDIR} -p ${OBJECTDIR}/src
- ${RM} $@.d
- $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Url.o src/Url.cc
-
${OBJECTDIR}/src/Principal.o: src/Principal.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
diff --git a/libs/networking/nbproject/configurations.xml b/libs/networking/nbproject/configurations.xml
index 65b61b7..acb657c 100644
--- a/libs/networking/nbproject/configurations.xml
+++ b/libs/networking/nbproject/configurations.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<configurationDescriptor version="80">
+<configurationDescriptor version="84">
<logicalFolder name="root" displayName="root" projectFiles="true" kind="ROOT">
<logicalFolder name="HeaderFiles"
displayName="Header Files"
@@ -22,7 +22,6 @@
<itemPath>include/Principal.h</itemPath>
<itemPath>include/ServerConfig.h</itemPath>
<itemPath>include/ServerSocket.h</itemPath>
- <itemPath>include/Url.h</itemPath>
</logicalFolder>
<logicalFolder name="ResourceFiles"
displayName="Resource Files"
@@ -49,7 +48,6 @@
<itemPath>src/Principal.cc</itemPath>
<itemPath>src/ServerConfig.cc</itemPath>
<itemPath>src/ServerSocket.cc</itemPath>
- <itemPath>src/Url.cc</itemPath>
</logicalFolder>
<logicalFolder name="TestFiles"
displayName="Test Files"
@@ -75,10 +73,11 @@
<ccTool>
<incDir>
<pElem>include</pElem>
+ <pElem>../IO/include</pElem>
<pElem>../util/include</pElem>
<pElem>../vdr/include</pElem>
</incDir>
- <commandLine>-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi</commandLine>
+ <commandLine>-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration</commandLine>
<preprocessorList>
<Elem>_GNU_SOURCE=1</Elem>
<Elem>_REENTRANT</Elem>
@@ -87,6 +86,38 @@
</ccTool>
<archiverTool>
</archiverTool>
+ <requiredProjects>
+ <makeArtifact PL="../vdr"
+ CT="3"
+ CN="Debug"
+ AC="true"
+ BL="true"
+ WD="../vdr"
+ BC="${MAKE} -f Makefile CONF=Debug"
+ CC="${MAKE} -f Makefile CONF=Debug clean"
+ OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libvdr.a">
+ </makeArtifact>
+ <makeArtifact PL="../util"
+ CT="3"
+ CN="Debug"
+ AC="true"
+ BL="true"
+ WD="../util"
+ BC="${MAKE} -f Makefile CONF=Debug"
+ CC="${MAKE} -f Makefile CONF=Debug clean"
+ OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libutil.a">
+ </makeArtifact>
+ <makeArtifact PL="../IO"
+ CT="3"
+ CN="Debug"
+ AC="true"
+ BL="false"
+ WD="../IO"
+ BC="${MAKE} -f Makefile CONF=Debug"
+ CC="${MAKE} -f Makefile CONF=Debug clean"
+ OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libio.a">
+ </makeArtifact>
+ </requiredProjects>
</compileType>
</conf>
<conf name="Release" type="3">
diff --git a/libs/networking/nbproject/private/configurations.xml b/libs/networking/nbproject/private/configurations.xml
index fa15dc7..616cc91 100644
--- a/libs/networking/nbproject/private/configurations.xml
+++ b/libs/networking/nbproject/private/configurations.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<configurationDescriptor version="80">
+<configurationDescriptor version="84">
<projectmakefile>Makefile</projectmakefile>
<confs>
<conf name="Debug" type="3">
diff --git a/libs/networking/nbproject/project.xml b/libs/networking/nbproject/project.xml
index 45ed83d..33cec47 100644
--- a/libs/networking/nbproject/project.xml
+++ b/libs/networking/nbproject/project.xml
@@ -8,7 +8,11 @@
<cpp-extensions>cc</cpp-extensions>
<header-extensions>h</header-extensions>
<sourceEncoding>UTF-8</sourceEncoding>
- <make-dep-projects/>
+ <make-dep-projects>
+ <make-dep-project>../IO</make-dep-project>
+ <make-dep-project>../vdr</make-dep-project>
+ <make-dep-project>../util</make-dep-project>
+ </make-dep-projects>
<sourceRootList/>
<confList>
<confElem>
diff --git a/libs/networking/networking.cbp b/libs/networking/networking.cbp
index fc36817..9fbdf1b 100644
--- a/libs/networking/networking.cbp
+++ b/libs/networking/networking.cbp
@@ -7,7 +7,7 @@
<Option compiler="gcc" />
<Build>
<Target title="Debug">
- <Option output="libnetworking" prefix_auto="1" extension_auto="1" />
+ <Option output="networking" prefix_auto="1" extension_auto="1" />
<Option working_dir="" />
<Option object_output="obj/Debug/" />
<Option type="2" />
@@ -19,7 +19,7 @@
</Compiler>
</Target>
<Target title="Release">
- <Option output="libnetworking" prefix_auto="1" extension_auto="1" />
+ <Option output="networking" prefix_auto="1" extension_auto="1" />
<Option working_dir="" />
<Option object_output="obj/Release/" />
<Option type="2" />
@@ -35,11 +35,12 @@
</Target>
</Build>
<Compiler>
- <Add option="-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi" />
+ <Add option="-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration" />
<Add option="-D_REENTRANT" />
<Add option="-D_GNU_SOURCE=1" />
<Add directory="../vdr/include" />
<Add directory="../util/include" />
+ <Add directory="../IO/include" />
<Add directory="include" />
</Compiler>
<Unit filename="include/AbstractSocket.h" />
@@ -59,7 +60,6 @@
<Unit filename="include/Principal.h" />
<Unit filename="include/ServerConfig.h" />
<Unit filename="include/ServerSocket.h" />
- <Unit filename="include/Url.h" />
<Unit filename="src/AbstractSocket.cc" />
<Unit filename="src/Authorization.cc" />
<Unit filename="src/ClientSocket.cc" />
@@ -77,7 +77,6 @@
<Unit filename="src/Principal.cc" />
<Unit filename="src/ServerConfig.cc" />
<Unit filename="src/ServerSocket.cc" />
- <Unit filename="src/Url.cc" />
<Extensions>
<code_completion />
<envvars />
diff --git a/libs/networking/networking.layout b/libs/networking/networking.layout
index ec82f77..d908ef8 100644
--- a/libs/networking/networking.layout
+++ b/libs/networking/networking.layout
@@ -1,44 +1,54 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_layout_file>
<ActiveTarget name="Debug" />
- <File name="src/HTTPFileResponse.cc" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/ConnectionHandler.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="0" topLine="0" />
+ <Cursor1 position="1551" topLine="0" />
</Cursor>
</File>
- <File name="include/HTTPResponse.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="include/ConnectionPoint.h" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
- <File name="include/ConnectionHandler.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/ConnectionPoint.cc" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
- <File name="src/ConnectionHandler.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/HTTPFileResponse.cc" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="1551" topLine="0" />
+ <Cursor1 position="0" topLine="0" />
</Cursor>
</File>
- <File name="include/ConnectionPoint.h" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="include/HTTPMessage.h" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
- <File name="include/HTTPMessage.h" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="include/ConnectionHandler.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
- <File name="src/ConnectionPoint.cc" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/HTTPMessage.cc" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
- <File name="src/HTTPMessage.cc" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="include/ServerConfig.h" open="1" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="1684" topLine="0" />
+ </Cursor>
+ </File>
+ <File name="include/HTTPResponse.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
+ <File name="src/ServerConfig.cc" open="1" top="1" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="1670" topLine="0" />
+ </Cursor>
+ </File>
</CodeBlocks_layout_file>
diff --git a/libs/networking/networking.layout.save b/libs/networking/networking.layout.save
index 5cfe8a9..d0cb4d6 100644
--- a/libs/networking/networking.layout.save
+++ b/libs/networking/networking.layout.save
@@ -1,7 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_layout_file>
<ActiveTarget name="Debug" />
- <File name="include/HTTPResponse.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/ConnectionHandler.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="1551" topLine="0" />
+ </Cursor>
+ </File>
+ <File name="include/ConnectionPoint.h" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
@@ -16,29 +21,34 @@
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
- <File name="src/HTTPMessage.cc" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="include/HTTPMessage.h" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
- <File name="include/ConnectionPoint.h" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="include/ConnectionHandler.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
- <File name="include/HTTPMessage.h" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/HTTPMessage.cc" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
- <File name="include/ConnectionHandler.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="include/ServerConfig.h" open="1" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
- <File name="src/ConnectionHandler.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="include/HTTPResponse.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="1551" topLine="0" />
+ <Cursor1 position="0" topLine="0" />
+ </Cursor>
+ </File>
+ <File name="src/ServerConfig.cc" open="1" top="1" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="1538" topLine="0" />
</Cursor>
</File>
</CodeBlocks_layout_file>
diff --git a/libs/networking/src/ConnectionHandler.cc b/libs/networking/src/ConnectionHandler.cc
index abed00f..4e87750 100644
--- a/libs/networking/src/ConnectionHandler.cc
+++ b/libs/networking/src/ConnectionHandler.cc
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: ConnectionHandler.cc
* Created: 4. Juli 2012, 07
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libnetworking: classes for tcp/ip sockets and http-protocol handling
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#include <ConnectionHandler.h>
diff --git a/libs/networking/src/HTTPResponse.cc b/libs/networking/src/HTTPResponse.cc
index e9ae8eb..f76fff5 100644
--- a/libs/networking/src/HTTPResponse.cc
+++ b/libs/networking/src/HTTPResponse.cc
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: HTTPResponse.cc
* Created: 4. Juli 2012, 06
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libnetworking: classes for tcp/ip sockets and http-protocol handling
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#include <HTTPResponse.h>
diff --git a/libs/networking/src/ServerConfig.cc b/libs/networking/src/ServerConfig.cc
index a339497..0b29d8a 100644
--- a/libs/networking/src/ServerConfig.cc
+++ b/libs/networking/src/ServerConfig.cc
@@ -1,47 +1,60 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: ServerConfig.cc
* Created: 8. Juli 2012, 06
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libnetworking: classes for tcp/ip sockets and http-protocol handling
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#include <ServerConfig.h>
+#include <ConfigReader.h>
+#include <LineReader.h>
+#include <FileReader.h>
+#include <File.h>
#include <Logging.h>
#include <util.h>
#include <sys/stat.h>
#include <sys/types.h>
-cServerConfig::cServerConfig(int Port)
- : server(Port, 5)
+cServerConfig::cServerConfig(const char *ConfigBaseDir)
+ : server(12345, 5)
+ , authorizationRequired(false)
+ , wantExtendedScan(false)
+ , configBaseDir(ConfigBaseDir ? strdup(ConfigBaseDir) : NULL)
+ , credentialsFile(NULL)
, documentRoot(NULL)
, appIconPath(NULL)
+ , mediaInfo(NULL)
+ , ffmpeg(NULL)
{
}
cServerConfig::~cServerConfig()
{
- FREE(appIconPath);
+ FREE(configBaseDir);
FREE(documentRoot);
+ FREE(appIconPath);
+ FREE(mediaInfo);
+ FREE(ffmpeg);
}
-void cServerConfig::SetAppIcon(const char* AppIcon)
+void cServerConfig::SetAppIcon(const char *AppIcon)
{
struct stat st;
@@ -53,13 +66,103 @@ void cServerConfig::SetAppIcon(const char* AppIcon)
else esyslog("ERROR: failed to stat application icon! %s", AppIcon);
}
-void cServerConfig::SetDocumentRoot(const char* DocumentRoot)
+void cServerConfig::SetConfigBaseDir(const char *ConfigBaseDir)
+{
+ free(configBaseDir);
+ configBaseDir = ConfigBaseDir ? strdup(ConfigBaseDir) : NULL;
+}
+
+void cServerConfig::SetCredentialsFile(const char *FileName)
+{
+ free(credentialsFile);
+ credentialsFile = FileName ? strdup(FileName) : NULL;
+}
+
+void cServerConfig::SetDocumentRoot(const char *DocumentRoot)
{
free(documentRoot);
documentRoot = DocumentRoot ? strdup(DocumentRoot) : NULL;
}
+void cServerConfig::SetMediaInfo(const char *MediaInfo)
+{
+ free(mediaInfo);
+ mediaInfo = MediaInfo ? strdup(MediaInfo) : NULL;
+}
+
+void cServerConfig::SetFFMpeg(const char* FFMpeg)
+{
+ free(ffmpeg);
+ ffmpeg = FFMpeg ? strdup(FFMpeg) : NULL;
+}
+
void cServerConfig::SetPort(int port)
{
server.SetPort(port);
-} \ No newline at end of file
+}
+
+void cServerConfig::Dump(void)
+{
+ isyslog("server-config - socket #%d", server.Port());
+ isyslog("server-config - authorization required: %s", authorizationRequired ? "yes" : "no");
+ isyslog("server-config - do extended scan: %s", wantExtendedScan ? "yes" : "no");
+ isyslog("server-config - application dir: %s", configBaseDir);
+ isyslog("server-config - credentials file: %s", credentialsFile);
+ isyslog("server-config - media root: %s", documentRoot);
+ isyslog("server-config - app icon: %s", appIconPath);
+ isyslog("server-config - mediainfo: %s", mediaInfo);
+ isyslog("server-config - ffmpeg: %s", ffmpeg);
+}
+
+int cServerConfig::Load(const char* FileName)
+{
+ cConfigReader *cr = new cConfigReader(new cLineReader(new cFileReader(new cFile(configBaseDir, FileName))));
+ cConfigReader::ConfigEntry *ce;
+ int numberOfEntries = 0;
+
+ while ((ce = cr->ReadValue())) {
+ std::string name = std::get<0>(*ce);
+
+ if (!strcmp("media-root", name.c_str())) {
+ SetDocumentRoot(std::get<1>(*ce).c_str());
+ ++numberOfEntries;
+ }
+ else if (!strcmp("favicon", name.c_str())) {
+ SetAppIcon(std::get<1>(*ce).c_str());
+ ++numberOfEntries;
+ }
+ else if (!strcmp("cmps-port", name.c_str())) {
+ SetPort(atoi(std::get<1>(*ce).c_str()));
+ ++numberOfEntries;
+ }
+#ifdef NOT_YET
+ else if (!strcmp("want-auth", name.c_str())) {
+ SetAuthorizationRequired(!strcasecmp("true", std::get<1>(*ce).c_str()));
+ ++numberOfEntries;
+ }
+#endif
+ else if (!strcmp("want-meta", name.c_str())) {
+ SetWantExtendedScan(!strcasecmp("true", std::get<1>(*ce).c_str()));
+ ++numberOfEntries;
+ }
+ else if (!strcmp("mediainfo", name.c_str())) {
+ SetMediaInfo(std::get<1>(*ce).c_str());
+ ++numberOfEntries;
+ }
+ else if (!strcmp("ffmpeg", name.c_str())) {
+ SetFFMpeg(std::get<1>(*ce).c_str());
+ ++numberOfEntries;
+ }
+ delete ce;
+ }
+ cr->Close();
+ delete cr;
+
+ return numberOfEntries > 0;
+}
+
+int cServerConfig::Store(const char* FileName)
+{
+ //TODO:
+ return 0;
+}
diff --git a/libs/networking/src/Url.cc b/libs/util/Url.cc
index ce951e6..ce951e6 100644
--- a/libs/networking/src/Url.cc
+++ b/libs/util/Url.cc
diff --git a/libs/networking/include/Url.h b/libs/util/Url.h
index f4dc1af..f4dc1af 100644
--- a/libs/networking/include/Url.h
+++ b/libs/util/Url.h
diff --git a/libs/util/include/AbstractListAssembler.h b/libs/util/include/AbstractListAssembler.h
index 9ce357b..d709249 100644
--- a/libs/util/include/AbstractListAssembler.h
+++ b/libs/util/include/AbstractListAssembler.h
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: AbstractListAssembler.h
* Created: 6. Juli 2012, 09
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libutil - base classes used by other libraries
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#ifndef ABSTRACTLISTASSEMBLER_H
diff --git a/libs/util/include/JSonWriter.h b/libs/util/include/JSonWriter.h
index 00fdfb3..8031565 100644
--- a/libs/util/include/JSonWriter.h
+++ b/libs/util/include/JSonWriter.h
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: JSonWriter.h
* Created: 6. Juli 2012, 12
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libutil - base classes used by other libraries
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#ifndef JSONWRITER_H
diff --git a/libs/util/include/ManagedMap.h b/libs/util/include/ManagedMap.h
index e1e6e2e..e8f04f7 100644
--- a/libs/util/include/ManagedMap.h
+++ b/libs/util/include/ManagedMap.h
@@ -1,25 +1,25 @@
/**
* ======================== legal notice ======================
- *
+ *
* File: ManagedMap.h
* Created: 7. Juli 2012, 08
* Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
* Project: libutil - base classes used by other libraries
- *
+ *
* CMP - compound media player
- *
+ *
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
- *
+ *
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
+ *
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
+ *
* --------------------------------------------------------------
*/
#ifndef MANAGEDMAP_H
diff --git a/libs/util/include/Persistable.h b/libs/util/include/Persistable.h
new file mode 100644
index 0000000..aba962d
--- /dev/null
+++ b/libs/util/include/Persistable.h
@@ -0,0 +1,35 @@
+/**
+ * ======================== legal notice ======================
+ *
+ * File: Persistable.h
+ * Created: 29. Juli 2012, 13:08
+ * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
+ * Project: libutil - base classes used by other libraries
+ *
+ * CMP - compound media player
+ *
+ * is a client/server mediaplayer intended to play any media from any workstation
+ * without the need to export or mount shares. cmps is an easy to use backend
+ * with a (ready to use) HTML-interface. Additionally the backend supports
+ * authentication via HTTP-digest authorization.
+ * cmpc is a client with vdr-like osd-menues.
+ *
+ * Copyright (c) 2012 Reinhard Mantey, some rights reserved!
+ * published under Creative Commons by-sa
+ * For details see http://creativecommons.org/licenses/by-sa/3.0/
+ *
+ * The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
+ *
+ * --------------------------------------------------------------
+ */
+#ifndef PERSISTABLE_H
+#define PERSISTABLE_H
+
+class cPersistable {
+public:
+ virtual int Store(const char *FileName) = 0;
+ virtual int Load(const char *FileName) = 0;
+ };
+
+#endif /* PERSISTABLE_H */
+
diff --git a/libs/util/include/Url.h b/libs/util/include/Url.h
new file mode 100644
index 0000000..e2cd1c3
--- /dev/null
+++ b/libs/util/include/Url.h
@@ -0,0 +1,67 @@
+/**
+ * ======================== legal notice ======================
+ *
+ * File: Url.h
+ * Created: 4. Juli 2012, 05
+ * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
+ * Project: libutil - base classes used by other libraries
+ *
+ * CMP - compound media player
+ *
+ * is a client/server mediaplayer intended to play any media from any workstation
+ * without the need to export or mount shares. cmps is an easy to use backend
+ * with a (ready to use) HTML-interface. Additionally the backend supports
+ * authentication via HTTP-digest authorization.
+ * cmpc is a client with vdr-like osd-menues.
+ *
+ * Copyright (c) 2012 Reinhard Mantey, some rights reserved!
+ * published under Creative Commons by-sa
+ * For details see http://creativecommons.org/licenses/by-sa/3.0/
+ *
+ * The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
+ *
+ * --------------------------------------------------------------
+ */
+#ifndef URL_H
+#define URL_H
+
+#include <stddef.h>
+#include <string>
+#include <tr1/unordered_map>
+class cURLEncoder;
+class cURLDecoder;
+
+class cUrl {
+///< splits an url into machine readable parts:
+///< from top-level sight, an url consists of url and querystring. Looking bit closer,
+///< the url consists of toplevel and path, where as the querystring is a list of
+///< name/value tuples with value being an optional part.
+public:
+ cUrl(const char *RawURL);
+ virtual ~cUrl();
+ const char *Parameter(const char *Name);
+ void SetParameter(const char* Name, const char* Value = NULL);
+ size_t EstimatedSize(void) const; ///< is a rough guess about the size of the final encoded url
+ void ParseURL(const char *URL);
+ char *ToString(void) const; ///< writes the url to a newly allocated buffer
+ int WriteBuf(char *buf, size_t bufSize) const; ///< writes the url to preexisting buffer
+ ///< returns the characters written. -1 as return value indicates a buffer overrun.
+ const char * Path() const { return path; }
+#ifdef DEBUG
+ void Dump(void);
+#endif
+ static void Cleanup(void);
+ static cURLEncoder *Encoder(void);
+ static cURLDecoder *Decoder(void);
+
+protected:
+ void ParseQueryString(const char *QueryString);
+
+private:
+ typedef std::tr1::unordered_map<std::string, std::string> ParameterMap;
+ char *path;
+ ParameterMap parameters;
+ };
+
+#endif /* URL_H */
+
diff --git a/libs/util/nbproject/Makefile-Debug.mk b/libs/util/nbproject/Makefile-Debug.mk
index dfbf4e8..2149f0d 100644
--- a/libs/util/nbproject/Makefile-Debug.mk
+++ b/libs/util/nbproject/Makefile-Debug.mk
@@ -41,6 +41,7 @@ OBJECTFILES= \
${OBJECTDIR}/src/AbstractListAssembler.o \
${OBJECTDIR}/src/ManagedMap.o \
${OBJECTDIR}/src/Codec.o \
+ ${OBJECTDIR}/src/Url.o \
${OBJECTDIR}/src/ManagedVector.o \
${OBJECTDIR}/src/NamedValue.o \
${OBJECTDIR}/src/util.o
@@ -50,8 +51,8 @@ OBJECTFILES= \
CFLAGS=
# CC Compiler Flags
-CCFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi
-CXXFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi
+CCFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration
+CXXFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration
# Fortran Compiler Flags
FFLAGS=
@@ -102,6 +103,11 @@ ${OBJECTDIR}/src/Codec.o: src/Codec.cc
${RM} $@.d
$(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Codec.o src/Codec.cc
+${OBJECTDIR}/src/Url.o: src/Url.cc
+ ${MKDIR} -p ${OBJECTDIR}/src
+ ${RM} $@.d
+ $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Url.o src/Url.cc
+
${OBJECTDIR}/src/ManagedVector.o: src/ManagedVector.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
@@ -119,6 +125,7 @@ ${OBJECTDIR}/src/util.o: src/util.cc
# Subprojects
.build-subprojects:
+ cd ../vdr && ${MAKE} -f Makefile CONF=Debug
# Clean Targets
.clean-conf: ${CLEAN_SUBPROJECTS}
@@ -127,6 +134,7 @@ ${OBJECTDIR}/src/util.o: src/util.cc
# Subprojects
.clean-subprojects:
+ cd ../vdr && ${MAKE} -f Makefile CONF=Debug clean
# Enable dependency checking
.dep.inc: .depcheck-impl
diff --git a/libs/util/nbproject/Makefile-Release.mk b/libs/util/nbproject/Makefile-Release.mk
index 2fcd899..42ca655 100644
--- a/libs/util/nbproject/Makefile-Release.mk
+++ b/libs/util/nbproject/Makefile-Release.mk
@@ -41,6 +41,7 @@ OBJECTFILES= \
${OBJECTDIR}/src/AbstractListAssembler.o \
${OBJECTDIR}/src/ManagedMap.o \
${OBJECTDIR}/src/Codec.o \
+ ${OBJECTDIR}/src/Url.o \
${OBJECTDIR}/src/ManagedVector.o \
${OBJECTDIR}/src/NamedValue.o \
${OBJECTDIR}/src/util.o
@@ -102,6 +103,11 @@ ${OBJECTDIR}/src/Codec.o: src/Codec.cc
${RM} $@.d
$(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Codec.o src/Codec.cc
+${OBJECTDIR}/src/Url.o: src/Url.cc
+ ${MKDIR} -p ${OBJECTDIR}/src
+ ${RM} $@.d
+ $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Url.o src/Url.cc
+
${OBJECTDIR}/src/ManagedVector.o: src/ManagedVector.cc
${MKDIR} -p ${OBJECTDIR}/src
${RM} $@.d
diff --git a/libs/util/nbproject/configurations.xml b/libs/util/nbproject/configurations.xml
index ac160eb..481eb85 100644
--- a/libs/util/nbproject/configurations.xml
+++ b/libs/util/nbproject/configurations.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<configurationDescriptor version="80">
+<configurationDescriptor version="84">
<logicalFolder name="root" displayName="root" projectFiles="true" kind="ROOT">
<logicalFolder name="HeaderFiles"
displayName="Header Files"
@@ -11,7 +11,9 @@
<itemPath>include/ManagedMap.h</itemPath>
<itemPath>include/ManagedVector.h</itemPath>
<itemPath>include/NamedValue.h</itemPath>
+ <itemPath>include/Persistable.h</itemPath>
<itemPath>include/StringBuilder.h</itemPath>
+ <itemPath>include/Url.h</itemPath>
<itemPath>include/util.h</itemPath>
</logicalFolder>
<logicalFolder name="ResourceFiles"
@@ -29,6 +31,7 @@
<itemPath>src/ManagedVector.cc</itemPath>
<itemPath>src/NamedValue.cc</itemPath>
<itemPath>src/StringBuilder.cc</itemPath>
+ <itemPath>src/Url.cc</itemPath>
<itemPath>src/util.cc</itemPath>
</logicalFolder>
<logicalFolder name="TestFiles"
@@ -57,7 +60,7 @@
<pElem>include</pElem>
<pElem>../vdr/include</pElem>
</incDir>
- <commandLine>-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi</commandLine>
+ <commandLine>-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration</commandLine>
<preprocessorList>
<Elem>_GNU_SOURCE=1</Elem>
<Elem>_REENTRANT</Elem>
@@ -66,6 +69,18 @@
</ccTool>
<archiverTool>
</archiverTool>
+ <requiredProjects>
+ <makeArtifact PL="../vdr"
+ CT="3"
+ CN="Debug"
+ AC="true"
+ BL="true"
+ WD="../vdr"
+ BC="${MAKE} -f Makefile CONF=Debug"
+ CC="${MAKE} -f Makefile CONF=Debug clean"
+ OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libvdr.a">
+ </makeArtifact>
+ </requiredProjects>
</compileType>
</conf>
<conf name="Release" type="3">
diff --git a/libs/util/nbproject/private/configurations.xml b/libs/util/nbproject/private/configurations.xml
index fa15dc7..616cc91 100644
--- a/libs/util/nbproject/private/configurations.xml
+++ b/libs/util/nbproject/private/configurations.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<configurationDescriptor version="80">
+<configurationDescriptor version="84">
<projectmakefile>Makefile</projectmakefile>
<confs>
<conf name="Debug" type="3">
diff --git a/libs/util/nbproject/project.xml b/libs/util/nbproject/project.xml
index a4df583..afebc06 100644
--- a/libs/util/nbproject/project.xml
+++ b/libs/util/nbproject/project.xml
@@ -8,7 +8,9 @@
<cpp-extensions>cc</cpp-extensions>
<header-extensions>h</header-extensions>
<sourceEncoding>UTF-8</sourceEncoding>
- <make-dep-projects/>
+ <make-dep-projects>
+ <make-dep-project>../vdr</make-dep-project>
+ </make-dep-projects>
<sourceRootList/>
<confList>
<confElem>
diff --git a/libs/util/src/Url.cc b/libs/util/src/Url.cc
new file mode 100644
index 0000000..e31637d
--- /dev/null
+++ b/libs/util/src/Url.cc
@@ -0,0 +1,229 @@
+/**
+ * ======================== legal notice ======================
+ *
+ * File: Url.cc
+ * Created: 4. Juli 2012, 05
+ * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
+ * Project: libutil - base classes used by other libraries
+ *
+ * CMP - compound media player
+ *
+ * is a client/server mediaplayer intended to play any media from any workstation
+ * without the need to export or mount shares. cmps is an easy to use backend
+ * with a (ready to use) HTML-interface. Additionally the backend supports
+ * authentication via HTTP-digest authorization.
+ * cmpc is a client with vdr-like osd-menues.
+ *
+ * Copyright (c) 2012 Reinhard Mantey, some rights reserved!
+ * published under Creative Commons by-sa
+ * For details see http://creativecommons.org/licenses/by-sa/3.0/
+ *
+ * The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
+ *
+ * --------------------------------------------------------------
+ */
+#include <Url.h>
+#include <Codec.h>
+#include <util.h>
+#ifdef DEBUG
+#include <iostream>
+#endif
+#include <stdio.h>
+#include <string.h>
+#include <vector>
+
+static cURLEncoder * encoder = NULL;
+static cURLDecoder * decoder = NULL;
+
+cUrl::cUrl(const char* RawURL)
+ : path(NULL)
+{
+ ParseURL(RawURL);
+}
+
+cUrl::~cUrl()
+{
+ FREE(path);
+}
+
+cURLDecoder* cUrl::Decoder(void)
+{
+ if (!decoder) decoder = new cURLDecoder();
+ return decoder;
+}
+
+cURLEncoder* cUrl::Encoder(void)
+{
+ if (!encoder) encoder = new cURLEncoder();
+ return encoder;
+}
+
+const char *cUrl::Parameter(const char* Name)
+{
+ std::tr1::unordered_map<std::string, std::string>::iterator found = parameters.find(Name);
+ if (found != parameters.end()) return found->second.c_str();
+ return NULL;
+}
+
+void cUrl::SetParameter(const char* Name, const char* Value)
+{
+ std::string name = Name;
+ std::string value = Value ? Value : " ";
+ parameters[name] = value;
+}
+
+size_t cUrl::EstimatedSize(void ) const
+{
+ size_t rv = parameters.size() * 3;
+
+ if (path) rv += strlen(path) + 4;
+ ParameterMap::const_iterator pm = parameters.begin();
+
+ while (pm != parameters.end()) {
+ rv += pm->first.length() * 3;
+ rv += pm->second.length() * 3;
+ ++pm;
+ }
+ return rv;
+}
+
+void cUrl::ParseURL(const char *URL)
+{
+ FREE(path);
+ parameters.clear();
+ if (!URL) return;
+ const char *q = strchr(URL, '?'); // divider between url and querystring
+// char *realURL;
+// size_t l;
+
+ if (!q) q = URL + strlen(URL);
+// l = q - URL;
+// realURL = (char *)malloc(l + 2);
+// if (!realURL) return;
+// strncpy(realURL, URL, l);
+// realURL[l] = 0;
+ path = Decoder()->Decode(URL, q - URL);
+ if (*q) ParseQueryString(++q);
+}
+
+void cUrl::ParseQueryString(const char* QueryString)
+{
+ if (!(QueryString && *QueryString)) return;
+ const char *start, *last;
+ char *scratch = strdup(QueryString);
+ char *p, *end;
+ size_t srcLen = strlen(QueryString);
+
+ for (start = (const char *)scratch, end = (char *) start, last = scratch + srcLen; end && start < last; start = (const char *)++end) {
+ end = (char *) strchr(start, '&');
+ if (!end) end = (char *)start + strlen(start);
+ *end = 0;
+ p = (char *) strchr(start, '=');
+ if (p) {
+ *p++ = 0;
+ char *pn = p ? Decoder()->Decode(start) : NULL;
+ char *pv = p ? Decoder()->Decode(p) : NULL;
+
+ std::string name = pn;
+ std::string value = pv ? pv : " ";
+
+ parameters[name] = value;
+
+ free(pn);
+ free(pv);
+ }
+ else {
+ char *pn = Decoder()->Decode(start);
+
+ std::string name = pn;
+ parameters[name] = " ";
+ free(pn);
+ }
+ }
+ free(scratch);
+}
+
+char* cUrl::ToString(void) const
+///< returns the address of the newly allocated buffer
+{
+ size_t bufSize = EstimatedSize();
+ char *rv = (char *)malloc(bufSize);
+
+ if (!rv) return NULL;
+ int n = WriteBuf(rv, bufSize);
+
+ if (n < 0) {
+ bufSize += 128;
+ rv = (char *) realloc(rv, bufSize);
+ WriteBuf(rv, bufSize);
+ }
+ return rv;
+}
+
+int cUrl::WriteBuf(char* buf, size_t bufSize) const
+///< returns the characters written. -1 as return value indicates a buffer overrun.
+{
+ char *p, *tmp;
+ bool first = true;
+ int n = 0;
+
+ if (path) n += snprintf(buf + n, bufSize - n, "%s", path);
+ p = buf + n;
+ ParameterMap::const_iterator pm = parameters.begin();
+
+ while (pm != parameters.end()) {
+ tmp = Encoder()->Encode(pm->first.c_str());
+ if (p - buf + strlen(tmp) + 2 > bufSize)
+ return -1;
+ if (first) {
+ first = false;
+ *p++ = '?';
+ }
+ else *p++ = '&';
+ strcpy(p, tmp);
+ p += strlen(p);
+ FREE(tmp);
+
+ if (strcmp(pm->second.c_str(), " ")) {
+ tmp = Encoder()->Encode(pm->second.c_str());
+ if (p - buf + strlen(tmp) + 2 > bufSize)
+ return -1;
+ *p++ = '=';
+ strcpy(p, tmp);
+ p += strlen(p);
+ FREE(tmp);
+ }
+ ++pm;
+ }
+ p += strlen(p);
+
+ return p - buf;
+}
+
+#ifdef DEBUG
+void cUrl::Dump(void )
+{
+ ParameterMap::const_iterator pm = parameters.begin();
+
+ while (pm != parameters.end()) {
+ std::cout << "parameter [" << pm->first << "]";
+ if (strcmp(pm->second.c_str(), " "))
+ std::cout << " has value <|" << pm->second << "|>" << std::endl;
+ else
+ std::cout << " has NO value!" << std::endl;
+ ++pm;
+ }
+}
+#endif
+
+void cUrl::Cleanup(void )
+{
+ if (encoder) {
+ delete encoder;
+ encoder = NULL;
+ }
+ if (decoder) {
+ delete decoder;
+ decoder = NULL;
+ }
+} \ No newline at end of file
diff --git a/libs/util/util.cbp b/libs/util/util.cbp
index d582dc0..ae72cf4 100644
--- a/libs/util/util.cbp
+++ b/libs/util/util.cbp
@@ -7,7 +7,7 @@
<Option compiler="gcc" />
<Build>
<Target title="Debug">
- <Option output="libutil" prefix_auto="1" extension_auto="1" />
+ <Option output="util" prefix_auto="1" extension_auto="1" />
<Option working_dir="" />
<Option object_output="obj/Debug/" />
<Option type="2" />
@@ -19,7 +19,7 @@
</Compiler>
</Target>
<Target title="Release">
- <Option output="libutil" prefix_auto="1" extension_auto="1" />
+ <Option output="util" prefix_auto="1" extension_auto="1" />
<Option working_dir="" />
<Option object_output="obj/Release/" />
<Option type="2" />
@@ -35,7 +35,7 @@
</Target>
</Build>
<Compiler>
- <Add option="-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi" />
+ <Add option="-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration" />
<Add option="-D_REENTRANT" />
<Add option="-D_GNU_SOURCE=1" />
<Add directory="../vdr/include" />
@@ -49,6 +49,7 @@
<Unit filename="include/ManagedVector.h" />
<Unit filename="include/NamedValue.h" />
<Unit filename="include/StringBuilder.h" />
+ <Unit filename="include/Url.h" />
<Unit filename="include/util.h" />
<Unit filename="src/AbstractListAssembler.cc" />
<Unit filename="src/Codec.cc" />
@@ -58,6 +59,7 @@
<Unit filename="src/ManagedVector.cc" />
<Unit filename="src/NamedValue.cc" />
<Unit filename="src/StringBuilder.cc" />
+ <Unit filename="src/Url.cc" />
<Unit filename="src/util.cc" />
<Extensions>
<code_completion />
diff --git a/libs/util/util.layout b/libs/util/util.layout
index 1ecf705..ef999ec 100644
--- a/libs/util/util.layout
+++ b/libs/util/util.layout
@@ -1,41 +1,51 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_layout_file>
<ActiveTarget name="Debug" />
- <File name="src/JSonWriter.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/AbstractListAssembler.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="1655" topLine="3" />
+ <Cursor1 position="0" topLine="0" />
</Cursor>
</File>
- <File name="include/ManagedMap.h" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="include/Codec.h" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="0" topLine="0" />
+ <Cursor1 position="1385" topLine="0" />
</Cursor>
</File>
- <File name="include/ManagedVector.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="include/ManagedMap.h" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
- <File name="src/StringBuilder.cc" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/StringBuilder.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1953" topLine="59" />
</Cursor>
</File>
- <File name="src/ManagedMap.cc" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/Codec.cc" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="1327" topLine="0" />
+ </Cursor>
+ </File>
+ <File name="include/ManagedVector.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
- <File name="include/StringBuilder.h" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="include/StringBuilder.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1959" topLine="0" />
</Cursor>
</File>
- <File name="src/AbstractListAssembler.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/ManagedMap.cc" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
+ <File name="src/JSonWriter.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="1655" topLine="3" />
+ </Cursor>
+ </File>
<File name="include/JSonWriter.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1532" topLine="0" />
diff --git a/libs/util/util.layout.save b/libs/util/util.layout.save
index 0805ad4..ef999ec 100644
--- a/libs/util/util.layout.save
+++ b/libs/util/util.layout.save
@@ -1,34 +1,39 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_layout_file>
<ActiveTarget name="Debug" />
- <File name="include/ManagedVector.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/AbstractListAssembler.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
+ <File name="include/Codec.h" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="1385" topLine="0" />
+ </Cursor>
+ </File>
<File name="include/ManagedMap.h" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
- <File name="src/StringBuilder.cc" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/StringBuilder.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1953" topLine="59" />
</Cursor>
</File>
- <File name="src/JSonWriter.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/Codec.cc" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="1655" topLine="3" />
+ <Cursor1 position="1327" topLine="0" />
</Cursor>
</File>
- <File name="include/JSonWriter.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="include/ManagedVector.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="1532" topLine="0" />
+ <Cursor1 position="0" topLine="0" />
</Cursor>
</File>
- <File name="src/AbstractListAssembler.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="include/StringBuilder.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="0" topLine="0" />
+ <Cursor1 position="1959" topLine="0" />
</Cursor>
</File>
<File name="src/ManagedMap.cc" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
@@ -36,9 +41,14 @@
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
- <File name="include/StringBuilder.h" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/JSonWriter.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="1959" topLine="0" />
+ <Cursor1 position="1655" topLine="3" />
+ </Cursor>
+ </File>
+ <File name="include/JSonWriter.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="1532" topLine="0" />
</Cursor>
</File>
</CodeBlocks_layout_file>
diff --git a/libs/vdr/nbproject/Makefile-Debug.mk b/libs/vdr/nbproject/Makefile-Debug.mk
index 18c336e..e32e3d1 100644
--- a/libs/vdr/nbproject/Makefile-Debug.mk
+++ b/libs/vdr/nbproject/Makefile-Debug.mk
@@ -52,8 +52,8 @@ OBJECTFILES= \
CFLAGS=
# CC Compiler Flags
-CCFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi
-CXXFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi
+CCFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration
+CXXFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration
# Fortran Compiler Flags
FFLAGS=
diff --git a/libs/vdr/nbproject/configurations.xml b/libs/vdr/nbproject/configurations.xml
index 10a1566..8ab8f02 100644
--- a/libs/vdr/nbproject/configurations.xml
+++ b/libs/vdr/nbproject/configurations.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<configurationDescriptor version="80">
+<configurationDescriptor version="84">
<logicalFolder name="root" displayName="root" projectFiles="true" kind="ROOT">
<logicalFolder name="HeaderFiles"
displayName="Header Files"
@@ -64,7 +64,7 @@
<pElem>/usr/include/freetype2</pElem>
<pElem>/usr/include/fribidi</pElem>
</incDir>
- <commandLine>-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi</commandLine>
+ <commandLine>-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration</commandLine>
<preprocessorList>
<Elem>LOCDIR=/usr/share/locale</Elem>
<Elem>_GNU_SOURCE=1</Elem>
diff --git a/libs/vdr/nbproject/private/configurations.xml b/libs/vdr/nbproject/private/configurations.xml
index fa15dc7..616cc91 100644
--- a/libs/vdr/nbproject/private/configurations.xml
+++ b/libs/vdr/nbproject/private/configurations.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<configurationDescriptor version="80">
+<configurationDescriptor version="84">
<projectmakefile>Makefile</projectmakefile>
<confs>
<conf name="Debug" type="3">
diff --git a/libs/vdr/src/i18n.cc b/libs/vdr/src/i18n.cc
index a6d8d65..a493714 100644
--- a/libs/vdr/src/i18n.cc
+++ b/libs/vdr/src/i18n.cc
@@ -1,30 +1,30 @@
/**
* File: i18n.cc
* Project: libvdr - classes taken from vdr-project
- *
+ *
* from "Video Disk Recorder":
- *
+ *
* Copyright (C) 2000, 2003, 2006, 2008 Klaus Schmidinger
- *
+ *
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
* Or, point your browser to http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
+ *
* The original author can be reached at kls@tvdr.de
- *
+ *
* The vdr project's page is at http://www.tvdr.de
- *
+ *
* In case an English phrase is used in more than one context (and might need
* different translations in other languages) it can be preceded with an
* arbitrary string to describe its context, separated from the actual phrase
diff --git a/libs/vdr/vdr.cbp b/libs/vdr/vdr.cbp
index 82be645..7c05ab5 100644
--- a/libs/vdr/vdr.cbp
+++ b/libs/vdr/vdr.cbp
@@ -7,7 +7,7 @@
<Option compiler="gcc" />
<Build>
<Target title="Debug">
- <Option output="libvdr" prefix_auto="1" extension_auto="1" />
+ <Option output="vdr" prefix_auto="1" extension_auto="1" />
<Option working_dir="" />
<Option object_output="obj/Debug/" />
<Option type="2" />
@@ -23,7 +23,7 @@
</Compiler>
</Target>
<Target title="Release">
- <Option output="libvdr" prefix_auto="1" extension_auto="1" />
+ <Option output="vdr" prefix_auto="1" extension_auto="1" />
<Option working_dir="" />
<Option object_output="obj/Release/" />
<Option type="2" />
@@ -41,7 +41,7 @@
</Target>
</Build>
<Compiler>
- <Add option="-fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi" />
+ <Add option="-fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration" />
<Add option="-D_REENTRANT" />
<Add option="-D_GNU_SOURCE=1" />
<Add option="-DLOCDIR=/usr/share/locale" />
diff --git a/libs/vdr/vdr.layout b/libs/vdr/vdr.layout
index c83c105..a8d4974 100644
--- a/libs/vdr/vdr.layout
+++ b/libs/vdr/vdr.layout
@@ -1,19 +1,14 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_layout_file>
<ActiveTarget name="Debug" />
- <File name="include/CharsetConv.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
- <Cursor>
- <Cursor1 position="5244" topLine="0" />
- </Cursor>
- </File>
- <File name="src/i18n.cc" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/TimeMs.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="0" topLine="0" />
+ <Cursor1 position="2160" topLine="0" />
</Cursor>
</File>
- <File name="src/TimeMs.cc" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="include/Logging.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="2160" topLine="0" />
+ <Cursor1 position="1690" topLine="0" />
</Cursor>
</File>
<File name="src/CharsetConv.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
@@ -21,7 +16,7 @@
<Cursor1 position="3680" topLine="57" />
</Cursor>
</File>
- <File name="src/Thread.cc" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/i18n.cc" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
@@ -31,4 +26,19 @@
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
+ <File name="src/Thread.cc" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="0" topLine="0" />
+ </Cursor>
+ </File>
+ <File name="include/CharsetConv.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="5244" topLine="0" />
+ </Cursor>
+ </File>
+ <File name="src/Logging.cc" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="1283" topLine="0" />
+ </Cursor>
+ </File>
</CodeBlocks_layout_file>
diff --git a/libs/vdr/vdr.layout.save b/libs/vdr/vdr.layout.save
index f60e878..a8d4974 100644
--- a/libs/vdr/vdr.layout.save
+++ b/libs/vdr/vdr.layout.save
@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_layout_file>
<ActiveTarget name="Debug" />
- <File name="src/i18n.cc" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/TimeMs.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="0" topLine="0" />
+ <Cursor1 position="2160" topLine="0" />
</Cursor>
</File>
- <File name="include/Thread.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="include/Logging.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="0" topLine="0" />
+ <Cursor1 position="1690" topLine="0" />
</Cursor>
</File>
<File name="src/CharsetConv.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
@@ -16,9 +16,14 @@
<Cursor1 position="3680" topLine="57" />
</Cursor>
</File>
- <File name="include/CharsetConv.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="src/i18n.cc" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="5244" topLine="0" />
+ <Cursor1 position="0" topLine="0" />
+ </Cursor>
+ </File>
+ <File name="include/Thread.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="0" topLine="0" />
</Cursor>
</File>
<File name="src/Thread.cc" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
@@ -26,9 +31,14 @@
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
- <File name="src/TimeMs.cc" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <File name="include/CharsetConv.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="5244" topLine="0" />
+ </Cursor>
+ </File>
+ <File name="src/Logging.cc" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="2160" topLine="0" />
+ <Cursor1 position="1283" topLine="0" />
</Cursor>
</File>
</CodeBlocks_layout_file>
diff --git a/tests/ConnectionHandlerTest/ConnectionHandlerTest.cbp b/tests/ConnectionHandlerTest/ConnectionHandlerTest.cbp
index b2d783b..31d9050 100644
--- a/tests/ConnectionHandlerTest/ConnectionHandlerTest.cbp
+++ b/tests/ConnectionHandlerTest/ConnectionHandlerTest.cbp
@@ -38,12 +38,13 @@
</Build>
<Compiler>
<Add option="-Wall" />
- <Add option="-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi" />
+ <Add option="-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration" />
<Add option="-D_REENTRANT" />
<Add option="-D_GNU_SOURCE=1" />
<Add directory="../../cmps/serverlib/include" />
<Add directory="../../libs/fsScan/include" />
<Add directory="../../libs/networking/include" />
+ <Add directory="../../libs/IO/include" />
<Add directory="../../libs/util/include" />
<Add directory="../../libs/vdr/include" />
</Compiler>
@@ -51,12 +52,14 @@
<Add library="../../cmps/serverlib/libserverlib.a" />
<Add library="../../libs/fsScan/libfsScan.a" />
<Add library="../../libs/networking/libnetworking.a" />
+ <Add library="../../libs/IO/libIO.a" />
<Add library="../../libs/util/libutil.a" />
<Add library="../../libs/vdr/libvdr.a" />
<Add library="ssl" />
<Add library="crypt" />
<Add library="pthread" />
<Add library="rt" />
+ <Add library="pcrecpp" />
</Linker>
<Unit filename="ConnectionHandlerTest.cc" />
<Extensions>
diff --git a/tests/ConnectionHandlerTest/ConnectionHandlerTest.cc b/tests/ConnectionHandlerTest/ConnectionHandlerTest.cc
index 1dc3659..89dc56d 100644
--- a/tests/ConnectionHandlerTest/ConnectionHandlerTest.cc
+++ b/tests/ConnectionHandlerTest/ConnectionHandlerTest.cc
@@ -6,7 +6,7 @@
*/
#include <ConnectionHandler.h>
#include <ServerConfig.h>
-#include <FilesystemScanner.h>
+#include <FSMediaScanner.h>
#include <MediaFactory.h>
#include <MediaListHandler.h>
#include <MediaFileHandler.h>
@@ -36,11 +36,11 @@ private:
cServerConfig config;
cConnectionHandler ch;
const char *name;
- cFilesystemScanner *scanner;
+ cFSMediaScanner *scanner;
};
cTestUnit::cTestUnit(const char* Name, cConnectionPoint &cp)
- : config(12345)
+ : config("/var/lib/cmp")
, ch(cp, config)
, name(Name)
, scanner(NULL)
@@ -49,14 +49,14 @@ cTestUnit::cTestUnit(const char* Name, cConnectionPoint &cp)
config.SetDocumentRoot("/media/video");
config.SetAppIcon("/media/favicon.ico");
- scanner = new cFilesystemScanner();
+ scanner = new cFSMediaScanner();
if (!scanner) {
fprintf(stderr, "could not initialize application! (1)");
exit(-1);
}
- scanner->SetMediaFactory(new cMediaFactory(config.DocumentRoot()));
+ scanner->SetMediaFactory(new cMediaFactory(config));
- cAbstractMediaRequestHandler::SetFilesystemScanner(scanner);
+ cAbstractMediaRequestHandler::SetFSMediaScanner(scanner);
cConnectionHandler::RegisterRequestHandler("/cmd", new cCommandHandler());
cMediaListHandler *listHandler = new cMediaListHandler();
@@ -130,6 +130,9 @@ int main(int argc, char** argv)
std::cout << "%SUITE_FINISHED% time=" << (double)(cTimeMs::Now() - t0) / 1000 << std::endl;
+ cFile::Cleanup();
+ cUrl::Cleanup();
+
return (EXIT_SUCCESS);
}
diff --git a/tests/ConnectionHandlerTest/ConnectionHandlerTest.layout b/tests/ConnectionHandlerTest/ConnectionHandlerTest.layout
index b29fcb8..130e1dc 100644
--- a/tests/ConnectionHandlerTest/ConnectionHandlerTest.layout
+++ b/tests/ConnectionHandlerTest/ConnectionHandlerTest.layout
@@ -3,7 +3,7 @@
<ActiveTarget name="Debug" />
<File name="ConnectionHandlerTest.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="1092" topLine="3" />
+ <Cursor1 position="916" topLine="0" />
</Cursor>
</File>
</CodeBlocks_layout_file>
diff --git a/tests/ConnectionHandlerTest/ConnectionHandlerTest.layout.save b/tests/ConnectionHandlerTest/ConnectionHandlerTest.layout.save
index b29fcb8..130e1dc 100644
--- a/tests/ConnectionHandlerTest/ConnectionHandlerTest.layout.save
+++ b/tests/ConnectionHandlerTest/ConnectionHandlerTest.layout.save
@@ -3,7 +3,7 @@
<ActiveTarget name="Debug" />
<File name="ConnectionHandlerTest.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="1092" topLine="3" />
+ <Cursor1 position="916" topLine="0" />
</Cursor>
</File>
</CodeBlocks_layout_file>
diff --git a/tests/CredentialPersistence/CredentialPersistence.cbp b/tests/CredentialPersistence/CredentialPersistence.cbp
index 0a5cfce..6bb20e4 100644
--- a/tests/CredentialPersistence/CredentialPersistence.cbp
+++ b/tests/CredentialPersistence/CredentialPersistence.cbp
@@ -30,7 +30,7 @@
</Build>
<Compiler>
<Add option="-Wall" />
- <Add option="-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi" />
+ <Add option="-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration" />
<Add option="-D_REENTRANT" />
<Add option="-D_GNU_SOURCE=1" />
<Add directory="../../cmps/serverlib/include" />
diff --git a/tests/CredentialPersistence/CredentialPersistence.layout b/tests/CredentialPersistence/CredentialPersistence.layout
index abb8444..f0df7b3 100644
--- a/tests/CredentialPersistence/CredentialPersistence.layout
+++ b/tests/CredentialPersistence/CredentialPersistence.layout
@@ -3,7 +3,7 @@
<ActiveTarget name="Debug" />
<File name="CredentialPersistence.cc" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="99" topLine="0" />
+ <Cursor1 position="98" topLine="0" />
</Cursor>
</File>
</CodeBlocks_layout_file>
diff --git a/tests/CredentialPersistence/CredentialPersistence.layout.save b/tests/CredentialPersistence/CredentialPersistence.layout.save
index abb8444..f0df7b3 100644
--- a/tests/CredentialPersistence/CredentialPersistence.layout.save
+++ b/tests/CredentialPersistence/CredentialPersistence.layout.save
@@ -3,7 +3,7 @@
<ActiveTarget name="Debug" />
<File name="CredentialPersistence.cc" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
- <Cursor1 position="99" topLine="0" />
+ <Cursor1 position="98" topLine="0" />
</Cursor>
</File>
</CodeBlocks_layout_file>
diff --git a/tests/FilesystemTest/main.cpp b/tests/FilesystemTest/main.cpp
new file mode 100644
index 0000000..2196a45
--- /dev/null
+++ b/tests/FilesystemTest/main.cpp
@@ -0,0 +1,234 @@
+/*
+ * File: FileSystemTest.cc
+ * Author: django
+ *
+ * Created on 21.07.2012, 12:40:48
+ */
+
+#include <stdlib.h>
+#include <iostream>
+#include <FileSystem.h>
+#include <File.h>
+#include <StringBuilder.h>
+#include <LegacyVdrRecording.h>
+#include <VdrRecording.h>
+#include <DVDImage.h>
+#include <Audio.h>
+#include <Picture.h>
+#include <Logging.h>
+#include <TimeMs.h>
+#include <Url.h>
+#include <string.h>
+
+int visitor(void *opaque, cFile *Parent, const char *Name)
+{
+ cFile *child = new cFile(*Parent, Name);
+
+ std::cout << Parent->Name() << " - has child-entry: " << Name << std::endl;
+ if (child->IsDirectory()) {
+ child->VisitFiles(visitor, opaque);
+ }
+ char *uri = child->toURI();
+ const char *path = child->AbsolutePath();
+
+ std::cout << "child does ";
+ if (!child->Exists()) std::cout << "NOT ";
+ std::cout << "exists ..." << std::endl;
+ std::cout << path << " - has URI: " << uri << std::endl << std::endl;
+ free(uri);
+ delete child;
+
+ return 0;
+}
+
+void test1()
+{
+ std::cout << "FileSystemTest test 1" << std::endl;
+// cFile *lf = new cFile("/var/lib/video.00");
+ cFile *lf = new cFile("/var/local/blah/fasel");
+ const char *path = lf->AbsolutePath();
+
+ std::cout << "got file: " << path << std::endl;
+
+ lf->VisitFiles(visitor, NULL);
+
+// cFile *epgData = new cFile(*lf, "epg.data");
+//
+// path = epgData->AbsolutePath();
+// std::cout << "got file: " << path << std::endl;
+
+#ifndef REDNOSE
+ cFile *f = new cFile("/media/xchange/");
+ path = f->AbsolutePath();
+
+ std::cout << "got file: " << path << std::endl;
+ cFile *other = f->Parent();
+
+ other->SetVirtualRoot(true);
+ path = other->AbsolutePath();
+ std::cout << "parent is file: " << path << std::endl;
+
+ cFile *newOne = new cFile(*other, "/video/test/blah");
+
+ path = newOne->AbsolutePath();
+ std::cout << "assembled file: " << path << std::endl;
+
+ cFile *again = new cFile("/media/audio/Collection/Rock/Idol, Billy");
+
+ path = again->AbsolutePath();
+ std::cout << "re-assembled file: " << path << std::endl;
+
+ std::cout << path << " does ";
+ if (!again->Exists()) std::cout << "NOT ";
+ std::cout << "exists" << std::endl;
+
+ again->VisitFiles(visitor, NULL);
+
+ delete again;
+ delete newOne;
+ delete other;
+ delete f;
+// delete epgData;
+#endif
+ delete lf;
+ cUrl::Cleanup();
+ cFile::Cleanup();
+}
+
+int check4Media(void *opaque, cFile *Parent, const char *Name)
+{
+ if (!opaque) return -1;
+ std::vector<cAbstractMedia *> *pool = (std::vector<cAbstractMedia *> *) opaque;
+ cFile *curFile = new cFile(*Parent, Name);
+ const char *mimeType = NULL;
+ cAbstractMedia *rv = NULL;
+
+ if (!curFile) {
+ esyslog("ERROR: out of memory!");
+ return -1;
+ }
+ if (!curFile->Exists()) {
+ delete curFile;
+ return -1;
+ }
+ if (curFile->IsDirectory()) {
+ static const char *keyFiles[] = { "001.vdr", "00001.ts", "VIDEO_TS/VIDEO_TS.IFO", NULL };
+ cFile *tmp;
+ const char *check;
+ int n=0;
+
+ for (const char **kf = keyFiles; kf && *kf; ++kf, ++n) {
+ tmp = new cFile(*curFile, *kf);
+ check = tmp ? tmp->AbsolutePath() : NULL;
+
+ if (tmp->Exists() && tmp->IsFile() && !tmp->IsDirectory()) {
+ switch (n) {
+ case 0: rv = new cLegacyVdrRecording(*curFile); break;
+ case 1: rv = new cVdrRecording(*curFile); break;
+ default: rv = new cDVDImage(*curFile); break;
+ }
+ }
+ delete tmp;
+ }
+ if (!rv) curFile->VisitFiles(check4Media, opaque);
+ }
+ else {
+ const char *extension = strrchr(Name, '.');
+
+ if (!extension) {
+ delete curFile;
+
+ return -1;
+ }
+ ++extension;
+ mimeType = cMovie::ContentType(extension);
+ if (mimeType) rv = new cMovie(*curFile, mimeType);
+ else {
+ mimeType = cAudio::ContentType(extension);
+ if (mimeType) rv = new cAudio(*curFile, mimeType);
+ else {
+ mimeType = cPicture::ContentType(extension);
+ if (mimeType) rv = new cPicture(*curFile, mimeType);
+ }
+ }
+ }
+ delete curFile;
+ if (rv) {
+ pool->push_back(rv);
+ return 0;
+ }
+ else return -1;
+}
+
+void test2()
+{
+ std::cout << "FileSystemTest test 2" << std::endl;
+ cFile relative("srclient.conf");
+ const char *path = relative.AbsolutePath();
+
+ std::cout << "relative path is now: " << path << std::endl;
+ cUrl::Cleanup();
+ cFile::Cleanup();
+}
+
+void test3()
+{
+ std::cout << "FileSystemTest test 3" << std::endl;
+ cFile mediaRoot("/media");
+ cFile &startScan = mediaRoot; //("/media/images");
+
+ if (!mediaRoot.Exists() || !mediaRoot.IsDirectory())
+ std::cout << "%TEST_FAILED% time=0 testname=test3 (FileSystemTest) message=error message sample" << std::endl;
+ if (!startScan.Exists() || !startScan.IsDirectory())
+ std::cout << "%TEST_FAILED% time=0 testname=test3 (FileSystemTest) message=error message sample" << std::endl;
+
+ mediaRoot.SetVirtualRoot();
+ std::vector<cAbstractMedia *> mediaPool;
+
+ uint64_t start = cTimeMs::Now();
+ startScan.VisitFiles(check4Media, &mediaPool);
+ uint64_t end = cTimeMs::Now();
+
+ for (size_t i=0; i < mediaPool.size(); ++i) {
+ std::cout << "pool entry: " << mediaPool[i]->Name() << std::endl;
+ }
+ //19: got 9998 media in 8081ms.
+ // ==9779== total heap usage: 637,920 allocs, 637,918 frees, 172,023,271 bytes allocated
+ //01: got 5739 media in 88165ms.
+ // ==2605== total heap usage: 924,253 allocs, 924,247 frees, 259,567,759 bytes allocated
+ std::cout << "got " << mediaPool.size() << " media in " << (end - start) << "ms." << std::endl;
+ for (size_t i=0; i < mediaPool.size(); ++i) {
+ delete mediaPool[i];
+ }
+ cUrl::Cleanup();
+ cFile::Cleanup();
+}
+
+int main(int argc, char** argv)
+{
+ uint64_t t0 = cTimeMs::Now();
+ std::cout << "%SUITE_STARTING% FileSystemTest" << std::endl;
+ std::cout << "%SUITE_STARTED%" << std::endl;
+
+ std::cout << "%TEST_STARTED% test1 (FileSystemTest)" << std::endl;
+ uint64_t start = cTimeMs::Now();
+ test1();
+ uint64_t end = cTimeMs::Now();
+ std::cout << "%TEST_FINISHED% time=" << (double)(end - start) / 1000 << " test1 (FileSystemTest)" << std::endl;
+
+ std::cout << "%TEST_STARTED% test2 (FileSystemTest)\n" << std::endl;
+ start = cTimeMs::Now();
+ test2();
+ end = cTimeMs::Now();
+ std::cout << "%TEST_FINISHED% time=" << (double)(end - start) / 1000 << " test2 (FileSystemTest)" << std::endl;
+
+ std::cout << "%TEST_STARTED% test3 (FileSystemTest)\n" << std::endl;
+ start = cTimeMs::Now();
+ test3();
+ end = cTimeMs::Now();
+ std::cout << "%TEST_FINISHED% time=" << (double)(end - start) / 1000 << " test3 (FileSystemTest)" << std::endl;
+
+ std::cout << "%SUITE_FINISHED% time=" << (double)(cTimeMs::Now() - t0) / 1000 << std::endl;
+
+ return (EXIT_SUCCESS);
+}
diff --git a/tests/JSonTest/JSonTest.cbp b/tests/JSonTest/JSonTest.cbp
index 9328615..3ce250a 100644
--- a/tests/JSonTest/JSonTest.cbp
+++ b/tests/JSonTest/JSonTest.cbp
@@ -30,7 +30,7 @@
</Build>
<Compiler>
<Add option="-Wall" />
- <Add option="-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi" />
+ <Add option="-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration" />
<Add option="-D_REENTRANT" />
<Add option="-D_GNU_SOURCE=1" />
<Add directory="../../libs/fsScan/include" />