/lib/libUPnP/Makefile
-# /lib/libXBMS
-/lib/libXBMS/Makefile
-/lib/libXBMS/libXBMS/Debug
-/lib/libXBMS/libXBMS/Release
-
# /lib/libXDAAP
/lib/libXDAAP/Makefile
/lib/libXDAAP/libXDAAP_win32/Debug
lib/libRTV \
xbmc/network/libscrobbler \
lib/libUPnP \
- lib/libXBMS \
lib/libXDAAP \
xbmc/dbwrappers \
lib/UnrarXLib \
$(MAKE) -C lib/libRTV
lib/libUPnP/libupnp.a: force
$(MAKE) -C lib/libUPnP
-lib/libXBMS/libxbms.a: force
- $(MAKE) -C lib/libXBMS
lib/libXDAAP/libxdaap.a: force
$(MAKE) -C lib/libXDAAP
lib/jsoncpp/src/lib_json/libjsoncpp.a: force
codecs libs $(PYTHON_TARGET) visualizations screensavers eventclients skins \
lib/libsquish/libsquish.a \
lib/libapetag/.libs/libapetag.a \
- lib/libXBMS/libxbms.a \
lib/libRTV/librtv.a \
lib/libXDAAP/libxdaap.a \
lib/jsoncpp/src/lib_json/libjsoncpp.a
ifeq (@HAVE_XBMC_NONFREE@,1)
OBJSXBMC+= \
- lib/libXBMS/libxbms.a \
lib/UnrarXLib/UnrarXLib.a
endif
F56C7993131EC154000AD0F6 /* FileSpecialProtocol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C73E0131EC151000AD0F6 /* FileSpecialProtocol.cpp */; };
F56C7994131EC154000AD0F6 /* FileTuxBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C73E2131EC151000AD0F6 /* FileTuxBox.cpp */; };
F56C7995131EC154000AD0F6 /* FileUDF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C73E4131EC151000AD0F6 /* FileUDF.cpp */; };
- F56C7996131EC154000AD0F6 /* FileXBMSP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C73E6131EC151000AD0F6 /* FileXBMSP.cpp */; };
F56C7997131EC154000AD0F6 /* FileZip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C73E8131EC151000AD0F6 /* FileZip.cpp */; };
F56C7998131EC154000AD0F6 /* FTPDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C73EA131EC151000AD0F6 /* FTPDirectory.cpp */; };
F56C7999131EC154000AD0F6 /* FTPParse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C73EC131EC151000AD0F6 /* FTPParse.cpp */; };
F56C79E9131EC154000AD0F6 /* VideoDatabaseDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C7490131EC152000AD0F6 /* VideoDatabaseDirectory.cpp */; };
F56C79EA131EC154000AD0F6 /* VirtualDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C7492131EC152000AD0F6 /* VirtualDirectory.cpp */; };
F56C79EB131EC154000AD0F6 /* VirtualPathDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C7494131EC152000AD0F6 /* VirtualPathDirectory.cpp */; };
- F56C79EC131EC154000AD0F6 /* XBMSDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C7496131EC152000AD0F6 /* XBMSDirectory.cpp */; };
F56C79ED131EC154000AD0F6 /* ZeroconfDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C7499131EC152000AD0F6 /* ZeroconfDirectory.cpp */; };
F56C79EE131EC154000AD0F6 /* ZipDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C749B131EC152000AD0F6 /* ZipDirectory.cpp */; };
F56C79EF131EC154000AD0F6 /* ZipManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C749D131EC152000AD0F6 /* ZipManager.cpp */; };
F56C73E3131EC151000AD0F6 /* FileTuxBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileTuxBox.h; sourceTree = "<group>"; };
F56C73E4131EC151000AD0F6 /* FileUDF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileUDF.cpp; sourceTree = "<group>"; };
F56C73E5131EC151000AD0F6 /* FileUDF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileUDF.h; sourceTree = "<group>"; };
- F56C73E6131EC151000AD0F6 /* FileXBMSP.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileXBMSP.cpp; sourceTree = "<group>"; };
- F56C73E7131EC151000AD0F6 /* FileXBMSP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileXBMSP.h; sourceTree = "<group>"; };
F56C73E8131EC151000AD0F6 /* FileZip.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileZip.cpp; sourceTree = "<group>"; };
F56C73E9131EC151000AD0F6 /* FileZip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileZip.h; sourceTree = "<group>"; };
F56C73EA131EC151000AD0F6 /* FTPDirectory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FTPDirectory.cpp; sourceTree = "<group>"; };
F56C7493131EC152000AD0F6 /* VirtualDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VirtualDirectory.h; sourceTree = "<group>"; };
F56C7494131EC152000AD0F6 /* VirtualPathDirectory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VirtualPathDirectory.cpp; sourceTree = "<group>"; };
F56C7495131EC152000AD0F6 /* VirtualPathDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VirtualPathDirectory.h; sourceTree = "<group>"; };
- F56C7496131EC152000AD0F6 /* XBMSDirectory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XBMSDirectory.cpp; sourceTree = "<group>"; };
- F56C7497131EC152000AD0F6 /* XBMSDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XBMSDirectory.h; sourceTree = "<group>"; };
F56C7498131EC152000AD0F6 /* ZeroconfDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZeroconfDirectory.h; sourceTree = "<group>"; };
F56C7499131EC152000AD0F6 /* ZeroconfDirectory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ZeroconfDirectory.cpp; sourceTree = "<group>"; };
F56C749A131EC152000AD0F6 /* zconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = "<group>"; };
F56C73E3131EC151000AD0F6 /* FileTuxBox.h */,
F56C73E4131EC151000AD0F6 /* FileUDF.cpp */,
F56C73E5131EC151000AD0F6 /* FileUDF.h */,
- F56C73E6131EC151000AD0F6 /* FileXBMSP.cpp */,
- F56C73E7131EC151000AD0F6 /* FileXBMSP.h */,
F56C73E8131EC151000AD0F6 /* FileZip.cpp */,
F56C73E9131EC151000AD0F6 /* FileZip.h */,
F56C73EA131EC151000AD0F6 /* FTPDirectory.cpp */,
F56C7493131EC152000AD0F6 /* VirtualDirectory.h */,
F56C7494131EC152000AD0F6 /* VirtualPathDirectory.cpp */,
F56C7495131EC152000AD0F6 /* VirtualPathDirectory.h */,
- F56C7496131EC152000AD0F6 /* XBMSDirectory.cpp */,
- F56C7497131EC152000AD0F6 /* XBMSDirectory.h */,
F56C7498131EC152000AD0F6 /* ZeroconfDirectory.h */,
F56C7499131EC152000AD0F6 /* ZeroconfDirectory.cpp */,
F56C749A131EC152000AD0F6 /* zconf.h */,
F56C7993131EC154000AD0F6 /* FileSpecialProtocol.cpp in Sources */,
F56C7994131EC154000AD0F6 /* FileTuxBox.cpp in Sources */,
F56C7995131EC154000AD0F6 /* FileUDF.cpp in Sources */,
- F56C7996131EC154000AD0F6 /* FileXBMSP.cpp in Sources */,
F56C7997131EC154000AD0F6 /* FileZip.cpp in Sources */,
F56C7998131EC154000AD0F6 /* FTPDirectory.cpp in Sources */,
F56C7999131EC154000AD0F6 /* FTPParse.cpp in Sources */,
F56C79E9131EC154000AD0F6 /* VideoDatabaseDirectory.cpp in Sources */,
F56C79EA131EC154000AD0F6 /* VirtualDirectory.cpp in Sources */,
F56C79EB131EC154000AD0F6 /* VirtualPathDirectory.cpp in Sources */,
- F56C79EC131EC154000AD0F6 /* XBMSDirectory.cpp in Sources */,
F56C79ED131EC154000AD0F6 /* ZeroconfDirectory.cpp in Sources */,
F56C79EE131EC154000AD0F6 /* ZipDirectory.cpp in Sources */,
F56C79EF131EC154000AD0F6 /* ZipManager.cpp in Sources */,
F56C897D131F42ED000AD0F6 /* FileSpecialProtocol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C83C3131F42E8000AD0F6 /* FileSpecialProtocol.cpp */; };
F56C897E131F42ED000AD0F6 /* FileTuxBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C83C5131F42E8000AD0F6 /* FileTuxBox.cpp */; };
F56C897F131F42ED000AD0F6 /* FileUDF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C83C7131F42E8000AD0F6 /* FileUDF.cpp */; };
- F56C8980131F42ED000AD0F6 /* FileXBMSP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C83C9131F42E8000AD0F6 /* FileXBMSP.cpp */; };
F56C8981131F42ED000AD0F6 /* FileZip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C83CB131F42E8000AD0F6 /* FileZip.cpp */; };
F56C8982131F42ED000AD0F6 /* FTPDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C83CD131F42E8000AD0F6 /* FTPDirectory.cpp */; };
F56C8983131F42ED000AD0F6 /* FTPParse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C83CF131F42E8000AD0F6 /* FTPParse.cpp */; };
F56C89D3131F42ED000AD0F6 /* VideoDatabaseDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C8473131F42E8000AD0F6 /* VideoDatabaseDirectory.cpp */; };
F56C89D4131F42ED000AD0F6 /* VirtualDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C8475131F42E8000AD0F6 /* VirtualDirectory.cpp */; };
F56C89D5131F42ED000AD0F6 /* VirtualPathDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C8477131F42E8000AD0F6 /* VirtualPathDirectory.cpp */; };
- F56C89D6131F42ED000AD0F6 /* XBMSDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C8479131F42E9000AD0F6 /* XBMSDirectory.cpp */; };
F56C89D7131F42ED000AD0F6 /* ZeroconfDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C847C131F42E9000AD0F6 /* ZeroconfDirectory.cpp */; };
F56C89D8131F42ED000AD0F6 /* ZipDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C847E131F42E9000AD0F6 /* ZipDirectory.cpp */; };
F56C89D9131F42ED000AD0F6 /* ZipManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56C8480131F42E9000AD0F6 /* ZipManager.cpp */; };
F56C83C6131F42E8000AD0F6 /* FileTuxBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileTuxBox.h; sourceTree = "<group>"; };
F56C83C7131F42E8000AD0F6 /* FileUDF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileUDF.cpp; sourceTree = "<group>"; };
F56C83C8131F42E8000AD0F6 /* FileUDF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileUDF.h; sourceTree = "<group>"; };
- F56C83C9131F42E8000AD0F6 /* FileXBMSP.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileXBMSP.cpp; sourceTree = "<group>"; };
- F56C83CA131F42E8000AD0F6 /* FileXBMSP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileXBMSP.h; sourceTree = "<group>"; };
F56C83CB131F42E8000AD0F6 /* FileZip.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileZip.cpp; sourceTree = "<group>"; };
F56C83CC131F42E8000AD0F6 /* FileZip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileZip.h; sourceTree = "<group>"; };
F56C83CD131F42E8000AD0F6 /* FTPDirectory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FTPDirectory.cpp; sourceTree = "<group>"; };
F56C8476131F42E8000AD0F6 /* VirtualDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VirtualDirectory.h; sourceTree = "<group>"; };
F56C8477131F42E8000AD0F6 /* VirtualPathDirectory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VirtualPathDirectory.cpp; sourceTree = "<group>"; };
F56C8478131F42E8000AD0F6 /* VirtualPathDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VirtualPathDirectory.h; sourceTree = "<group>"; };
- F56C8479131F42E9000AD0F6 /* XBMSDirectory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XBMSDirectory.cpp; sourceTree = "<group>"; };
- F56C847A131F42E9000AD0F6 /* XBMSDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XBMSDirectory.h; sourceTree = "<group>"; };
F56C847B131F42E9000AD0F6 /* ZeroconfDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZeroconfDirectory.h; sourceTree = "<group>"; };
F56C847C131F42E9000AD0F6 /* ZeroconfDirectory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ZeroconfDirectory.cpp; sourceTree = "<group>"; };
F56C847D131F42E9000AD0F6 /* zconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = "<group>"; };
F56C83C6131F42E8000AD0F6 /* FileTuxBox.h */,
F56C83C7131F42E8000AD0F6 /* FileUDF.cpp */,
F56C83C8131F42E8000AD0F6 /* FileUDF.h */,
- F56C83C9131F42E8000AD0F6 /* FileXBMSP.cpp */,
- F56C83CA131F42E8000AD0F6 /* FileXBMSP.h */,
F56C83CB131F42E8000AD0F6 /* FileZip.cpp */,
F56C83CC131F42E8000AD0F6 /* FileZip.h */,
F56C83CD131F42E8000AD0F6 /* FTPDirectory.cpp */,
F56C8476131F42E8000AD0F6 /* VirtualDirectory.h */,
F56C8477131F42E8000AD0F6 /* VirtualPathDirectory.cpp */,
F56C8478131F42E8000AD0F6 /* VirtualPathDirectory.h */,
- F56C8479131F42E9000AD0F6 /* XBMSDirectory.cpp */,
- F56C847A131F42E9000AD0F6 /* XBMSDirectory.h */,
F56C847B131F42E9000AD0F6 /* ZeroconfDirectory.h */,
F56C847C131F42E9000AD0F6 /* ZeroconfDirectory.cpp */,
F56C847D131F42E9000AD0F6 /* zconf.h */,
F56C897D131F42ED000AD0F6 /* FileSpecialProtocol.cpp in Sources */,
F56C897E131F42ED000AD0F6 /* FileTuxBox.cpp in Sources */,
F56C897F131F42ED000AD0F6 /* FileUDF.cpp in Sources */,
- F56C8980131F42ED000AD0F6 /* FileXBMSP.cpp in Sources */,
F56C8981131F42ED000AD0F6 /* FileZip.cpp in Sources */,
F56C8982131F42ED000AD0F6 /* FTPDirectory.cpp in Sources */,
F56C8983131F42ED000AD0F6 /* FTPParse.cpp in Sources */,
F56C89D3131F42ED000AD0F6 /* VideoDatabaseDirectory.cpp in Sources */,
F56C89D4131F42ED000AD0F6 /* VirtualDirectory.cpp in Sources */,
F56C89D5131F42ED000AD0F6 /* VirtualPathDirectory.cpp in Sources */,
- F56C89D6131F42ED000AD0F6 /* XBMSDirectory.cpp in Sources */,
F56C89D7131F42ED000AD0F6 /* ZeroconfDirectory.cpp in Sources */,
F56C89D8131F42ED000AD0F6 /* ZipDirectory.cpp in Sources */,
F56C89D9131F42ED000AD0F6 /* ZipManager.cpp in Sources */,
F5DC87E3110A287400EE1B15 /* RingBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5DC87E1110A287400EE1B15 /* RingBuffer.cpp */; };
F5DC8801110A46C700EE1B15 /* ModplugCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5DC8800110A46C700EE1B15 /* ModplugCodec.cpp */; };
F5DC8802110A46C700EE1B15 /* ModplugCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5DC8800110A46C700EE1B15 /* ModplugCodec.cpp */; };
- F5DC880F110A4A0B00EE1B15 /* FileXBMSP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5DC880E110A4A0B00EE1B15 /* FileXBMSP.cpp */; };
- F5DC8810110A4A0B00EE1B15 /* FileXBMSP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5DC880E110A4A0B00EE1B15 /* FileXBMSP.cpp */; };
- F5DC8813110A4A2400EE1B15 /* XBMSDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5DC8812110A4A2400EE1B15 /* XBMSDirectory.cpp */; };
- F5DC8814110A4A2400EE1B15 /* XBMSDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5DC8812110A4A2400EE1B15 /* XBMSDirectory.cpp */; };
F5DC8817110A4B8900EE1B15 /* libxbms.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F5DC8816110A4B8900EE1B15 /* libxbms.a */; };
F5DC888B110A654000EE1B15 /* libapetag.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F5DC888A110A654000EE1B15 /* libapetag.a */; };
F5DC888C110A654000EE1B15 /* libapetag.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F5DC888A110A654000EE1B15 /* libapetag.a */; };
F5DC87E1110A287400EE1B15 /* RingBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RingBuffer.cpp; sourceTree = "<group>"; };
F5DC87FF110A46C700EE1B15 /* ModplugCodec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ModplugCodec.h; sourceTree = "<group>"; };
F5DC8800110A46C700EE1B15 /* ModplugCodec.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ModplugCodec.cpp; sourceTree = "<group>"; };
- F5DC880D110A4A0B00EE1B15 /* FileXBMSP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileXBMSP.h; sourceTree = "<group>"; };
- F5DC880E110A4A0B00EE1B15 /* FileXBMSP.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileXBMSP.cpp; sourceTree = "<group>"; };
- F5DC8811110A4A2400EE1B15 /* XBMSDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XBMSDirectory.h; sourceTree = "<group>"; };
- F5DC8812110A4A2400EE1B15 /* XBMSDirectory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XBMSDirectory.cpp; sourceTree = "<group>"; };
F5DC8816110A4B8900EE1B15 /* libxbms.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libxbms.a; path = lib/libXBMS/libxbms.a; sourceTree = "<group>"; };
F5DC888A110A654000EE1B15 /* libapetag.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libapetag.a; path = lib/libapetag/.libs/libapetag.a; sourceTree = "<group>"; };
F5E55B5B10741272006E788A /* DVDPlayerTeletext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DVDPlayerTeletext.cpp; sourceTree = "<group>"; };
E38E16DF0D25F9FA00618676 /* FileTuxBox.h */,
433219D112E4C6A500CD7486 /* FileUDF.cpp */,
433219D212E4C6A500CD7486 /* FileUDF.h */,
- F5DC880E110A4A0B00EE1B15 /* FileXBMSP.cpp */,
- F5DC880D110A4A0B00EE1B15 /* FileXBMSP.h */,
E38E16E20D25F9FA00618676 /* FileZip.cpp */,
E38E16E30D25F9FA00618676 /* FileZip.h */,
E38E16E40D25F9FA00618676 /* FTPDirectory.cpp */,
E38E178D0D25F9FA00618676 /* VirtualDirectory.h */,
E38E178E0D25F9FA00618676 /* VirtualPathDirectory.cpp */,
E38E178F0D25F9FA00618676 /* VirtualPathDirectory.h */,
- F5DC8812110A4A2400EE1B15 /* XBMSDirectory.cpp */,
- F5DC8811110A4A2400EE1B15 /* XBMSDirectory.h */,
E49ACD8A100745C400A86ECD /* ZeroconfDirectory.h */,
E49ACD8B100745C400A86ECD /* ZeroconfDirectory.cpp */,
E38E17920D25F9FA00618676 /* zconf.h */,
E435380411076A2900792AB8 /* eprintf.cpp in Sources */,
F5DC87E2110A287400EE1B15 /* RingBuffer.cpp in Sources */,
F5DC8801110A46C700EE1B15 /* ModplugCodec.cpp in Sources */,
- F5DC880F110A4A0B00EE1B15 /* FileXBMSP.cpp in Sources */,
- F5DC8813110A4A2400EE1B15 /* XBMSDirectory.cpp in Sources */,
F5F240EF110A4F76009126C6 /* CrystalHD.cpp in Sources */,
F5F244651110DC6B009126C6 /* FileOperationJob.cpp in Sources */,
F5F245DA1112C6AC009126C6 /* DVDAudioCodecPassthroughFFmpeg.cpp in Sources */,
E435380311076A2900792AB8 /* eprintf.cpp in Sources */,
F5DC87E3110A287400EE1B15 /* RingBuffer.cpp in Sources */,
F5DC8802110A46C700EE1B15 /* ModplugCodec.cpp in Sources */,
- F5DC8810110A4A0B00EE1B15 /* FileXBMSP.cpp in Sources */,
- F5DC8814110A4A2400EE1B15 /* XBMSDirectory.cpp in Sources */,
F5F244661110DC6B009126C6 /* FileOperationJob.cpp in Sources */,
F5F245DB1112C6AC009126C6 /* DVDAudioCodecPassthroughFFmpeg.cpp in Sources */,
F5F245EF1112C9AB009126C6 /* FileUtils.cpp in Sources */,
<string id="30000">Fanitaide käytössä</string>
<string id="30001">Käytä trailereita HD-Trailers.net -sivustolta</string>
<string id="30002">Kieli</string>
- <string id="30003">Hae luokitus IMDb:stä</string>
+ <string id="30003">Hae arvosana IMDb:stä</string>
</strings>
</control>
<control type="image">
<posx>185</posx>
- <posy>240</posy>
+ <posy>200</posy>
<width>40</width>
<height>40</height>
<texture>MediaSubSet.png</texture>
</control>
<control type="radiobutton" id="98">
<description>Extra Options</description>
- <hitrect x="0" y="160" w="265" h="40" />
+ <hitrect x="0" y="120" w="265" h="40" />
<posx>0</posx>
<posy>120</posy>
<include>ButtonCommonValues</include>
<string id="31128">Sanoitukset</string>
<string id="31129"></string>
<string id="31130"></string>
+
<string id="31131"></string>
<string id="31132">Sanoitukset-lisäosa</string>
<string id="31133">Tekstitykset-lisäosa</string>
<string id="31308">Elokuvan tiedot</string>
<string id="31309">Käytetty muisti:</string>
<string id="31310">Kappalenumero</string>
- <string id="31011">Fanitaide kuvaa[CR][CR]ei ole saatavilla[CR][CR]Klikkaa asettaaksesi</string>
+ <string id="31311">Fanitaide kuvaa[CR][CR]ei ole saatavilla[CR][CR]Klikkaa asettaaksesi</string>
<string id="31312">Nykyinen hakupaikka</string>
<string id="31313">Valitse hakupaikka</string>
<string id="31314">Sisällön hakuasetukset</string>
<string id="31356">Lataa tekstitykset</string>
<string id="31357"></string>
+ <!-- Skin Fontsets -->
+ <string id="31390">Ulkoasun oletus</string>
+ <string id="31391">Ulkoasun oletus ilman isoja kirjaimia</string>
+ <string id="31392">Arial pohjainen</string>
+
<!-- Description Labels -->
<string id="31400">[B]Muokkaa käyttöliittymän asetuksia[/B][CR][CR]Vaihda ulkoasua · Vaihda kieliasetuksia · Aseta tiedostolistauksen asetukset[CR]Aseta ruudunsäästäjä</string>
<string id="31401">[B]Muokkaa video-asetuksia[/B][CR][CR]Hallitse videokirjastoa · Aseta videotoiston asetukset · Vaihda videolistauksen asetuksia[CR]Aseta tekstitysasetukset</string>
xbmc/guilib/Makefile \
xbmc/interfaces/Makefile \
xbmc/network/Makefile \
- lib/libXBMS/Makefile \
lib/libRTV/Makefile \
lib/libexif/Makefile \
lib/libXDAAP/Makefile \
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!--Language file translated with Team XBMC Translator-->
<!--Translator: BucLabs-->
<!--Email: buclabs@gmail.com-->
<!--Date of translation: 08/28/2006-->
<!--$Revision$-->
-<!--Based on english strings version 1.332-->
+<!--Translator: Albert Samaniego-->
+<!--Email: sam@ressaca.org-->
+<!--Date of translation: 04/05/2011-->
+<!--$Revision$-->
<strings>
<string id="0">Programes</string>
<string id="1">Imatges</string>
<string id="2">Música</string>
- <string id="3">Pel.lícules</string>
+ <string id="3">Pel·lícules</string>
<string id="4">Guia TV</string>
<string id="5">Ajustaments</string>
- <string id="7">Arxius</string>
+ <string id="7">Gestor de fitxers</string>
<string id="8">El Temps</string>
- <string id="11">Dilluns</string>
- <string id="12">Dimarts</string>
- <string id="13">Dimecres</string>
- <string id="14">Dijous</string>
- <string id="15">Divendres</string>
- <string id="16">Dissabte</string>
- <string id="17">Diumenge</string>
- <string id="21">Gener</string>
- <string id="22">Febrer</string>
- <string id="23">Març</string>
- <string id="24">Abril</string>
- <string id="25">Maig</string>
- <string id="26">Juny</string>
- <string id="27">Juliol</string>
- <string id="28">Agost</string>
- <string id="29">Setembre</string>
- <string id="30">Octubre</string>
- <string id="31">Novembre</string>
- <string id="32">Desembre</string>
+ <string id="11">dilluns</string>
+ <string id="12">dimarts</string>
+ <string id="13">dimecres</string>
+ <string id="14">dijous</string>
+ <string id="15">divendres</string>
+ <string id="16">dissabte</string>
+ <string id="17">diumenge</string>
+ <string id="21">gener</string>
+ <string id="22">febrer</string>
+ <string id="23">març</string>
+ <string id="24">abril</string>
+ <string id="25">maig</string>
+ <string id="26">juny</string>
+ <string id="27">juliol</string>
+ <string id="28">agost</string>
+ <string id="29">setembre</string>
+ <string id="30">octubre</string>
+ <string id="31">novembre</string>
+ <string id="32">desembre</string>
+ <string id="41">Dl</string>
+ <string id="42">Dt</string>
+ <string id="43">Dc</string>
+ <string id="44">Dj</string>
+ <string id="45">Dv</string>
+ <string id="46">Ds</string>
+ <string id="47">Dg</string>
+ <string id="51">gen</string>
+ <string id="52">febr</string>
+ <string id="53">març</string>
+ <string id="54">abr</string>
+ <string id="55">maig</string>
+ <string id="56">juny</string>
+ <string id="57">jul</string>
+ <string id="58">ago</string>
+ <string id="59">set</string>
+ <string id="60">oct</string>
+ <string id="61">nov</string>
+ <string id="62">des</string>
+ <string id="71">N</string>
+ <string id="80">SSO</string>
+ <string id="81">SO</string>
+ <string id="82">OSO</string>
+ <string id="83">O</string>
+ <string id="84">ONO</string>
+ <string id="85">NO</string>
+ <string id="86">NNO</string>
<string id="98">Veure: Auto</string>
<string id="99">Veure: Gran</string>
<string id="100">Veure: Icones</string>
<string id="101">Veure: Llista</string>
<string id="102">Explorar</string>
- <string id="103">Ordenar: Nom</string>
- <string id="104">Ordenar: Data</string>
- <string id="105">Ordenar: Tamany</string>
+ <string id="103">Ordena per: Nom</string>
+ <string id="104">Ordena per: Data</string>
+ <string id="105">Ordena per: Tamany</string>
<string id="106">No</string>
- <string id="107">Si</string>
+ <string id="107">Sí</string>
<string id="108">Diapositives</string>
- <string id="109">Crear Miniatures</string>
- <string id="110">Crear Miniatures</string>
+ <string id="109">Crear miniatures</string>
+ <string id="110">Crear miniatures</string>
<string id="111">Dreceres</string>
- <string id="112">PAUSA</string>
- <string id="113">Arxius: Origen</string>
- <string id="114">Arxius: Destí</string>
+ <string id="112">Pausat</string>
+ <string id="113">L'actualització ha fallat</string>
+ <string id="114">La instal·lació ha fallat</string>
<string id="115">Copiar</string>
<string id="116">Moure</string>
- <string id="117">Borrar</string>
+ <string id="117">Esborrar</string>
<string id="118">Renombrar</string>
- <string id="119">Nova Carpeta</string>
- <string id="120">Confirmar Copiar</string>
+ <string id="119">Nova carpeta</string>
+ <string id="120">Confirmar la copia</string>
<string id="121">Confirmar Moure</string>
<string id="122">Confirmar Borrar</string>
<string id="123">Estas segur de copiar els arxius?</string>
<string id="124">Estas segur de moure els arxius?</string>
- <string id="125">Estas segur de borrar els arxius?</string>
+ <string id="125">Estas segur de borrar els arxius? No es pot desfer!</string>
<string id="126">Estat</string>
<string id="127">Objectes</string>
<string id="128">General</string>
<string id="129">Diapositives</string>
- <string id="130">Info del Sistema</string>
+ <string id="130">Info del sistema</string>
<string id="131">Pantalla</string>
<string id="132">Àlbums</string>
<string id="133">Artistes</string>
<string id="134">Cançons</string>
<string id="135">Gèneres</string>
<string id="136">Llistes Reprod.</string>
- <string id="137">Buscar</string>
- <string id="138">INFORMACIÓ DEL SISTEMA</string>
+ <string id="137">Cerca</string>
+ <string id="138">Informació del sistema</string>
<string id="139">Temperatures:</string>
<string id="140">CPU:</string>
<string id="141">GPU:</string>
- <string id="142">Data i Hora:</string>
- <string id="143">Actualment</string>
+ <string id="142">Data i hora:</string>
+ <string id="143">Actualment:</string>
<string id="144">Compilació:</string>
<string id="145">Xarxa:</string>
<string id="146">Tipus:</string>
<string id="147">Estàtica</string>
<string id="148">DHCP</string>
- <string id="149">MAC</string>
- <string id="150">IP</string>
+ <string id="149">Adreça MAC</string>
+ <string id="150">Adreça IP</string>
<string id="151">Enllaç:</string>
<string id="152">Half duplex</string>
<string id="153">Full duplex</string>
<string id="154">Disc Dur</string>
<string id="155">Unitat</string>
- <string id="156">Lliures</string>
+ <string id="156">Lliure</string>
<string id="157">Video</string>
<string id="158">Memòria Lliure</string>
<string id="159">Sense enllaç</string>
<string id="161">No disponible</string>
<string id="162">Safata oberta</string>
<string id="163">Llegint</string>
- <string id="164">Sense Disc</string>
+ <string id="164">No hi ha disc</string>
<string id="165">Disc Present</string>
- <string id="166">Pell:</string>
- <string id="167">Activar Servidor FTP</string>
- <string id="168">Activar sincr. Horaria de Internet</string>
- <string id="169">Resolució:</string>
- <string id="170">Àlbum:</string>
- <string id="171">Artista:</string>
- <string id="172">Data de Llançament:</string>
- <string id="173">Vot:</string>
- <string id="174">Gènere:</string>
- <string id="175">Tons:</string>
- <string id="176">Estíl:</string>
- <string id="177">Crítica:</string>
- <string id="178">Pistes:</string>
+ <string id="166">Pell</string>
+ <string id="169">Resolució</string>
+ <string id="170">Ajusta el rati de refresc del video</string>
+ <string id="172">Data de llançament</string>
+ <string id="173">Mostre videos en 4:3 com</string>
+ <string id="175">Tons</string>
+ <string id="176">Estils</string>
<string id="179">Cançó</string>
<string id="180">Duració</string>
- <string id="181">Selecionar Àlbum</string>
+ <string id="181">Seleciona un àlbum</string>
<string id="182">Pistes</string>
<string id="183">Crítica</string>
<string id="184">Refrescar</string>
<string id="185">Buscant Àlbum</string>
- <string id="186">OK</string>
+ <string id="186">D'acord</string>
<string id="187">Àlbum no trobat!</string>
- <string id="188">Selec. Tot</string>
+ <string id="188">Selec. tot</string>
<string id="189">Buscant Informació Medi</string>
<string id="190">Guardar</string>
<string id="191">Aleatori</string>
<string id="192">Netejar</string>
<string id="193">Cercar</string>
- <string id="194">Buscant...</string>
- <string id="195">Sense info a IMDB!</string>
+ <string id="194">Cercant...</string>
+ <string id="195">No s'ha trobat informació!</string>
<string id="196">Selec. Pel·lícula:</string>
- <string id="197">Cercant info a IMDB</string>
+ <string id="197">Cercant informació a %</string>
<string id="198">Carregant detalls de la Pel·lícula</string>
- <string id="199">Director:</string>
- <string id="200">Guió:</string>
- <string id="201">Any:</string>
- <string id="202">Destacable:</string>
- <string id="203">Resum:</string>
- <string id="204">Valoració:</string>
+ <string id="199">Interfície web</string>
+ <string id="202">Destacable</string>
+ <string id="203">Resum</string>
<string id="205">Vots:</string>
- <string id="206">Repartiment:</string>
+ <string id="206">Repartiment</string>
<string id="207">Sinopsi</string>
<string id="208">Play</string>
<string id="209">Següent</string>
<string id="210">Anterior</string>
<string id="213">Centrar Interfície d'Usuari</string>
- <string id="214">Calibració de Video</string>
+ <string id="214">Calibració de video...</string>
<string id="215">Suavitzar</string>
<string id="216">Zoom</string>
<string id="217">Relació del Pixel</string>
<string id="218">Lector DVD</string>
<string id="219">Inserir Disc</string>
- <string id="220">Unitat Remota</string>
+ <string id="220">Unitat remota</string>
<string id="221">La xarxa no està connectada</string>
<string id="222">Cancel.lar</string>
<string id="224">Velocitat</string>
<string id="225">Temps de transició</string>
+ <string id="226">Prova patrons...</string>
<string id="227">Mirar A-CD info a freedb</string>
<string id="228">Llista Reprod. Aleatoria al iniciar</string>
<string id="229">Temps d'aturada del HDD</string>
<string id="230">Filtres de Video</string>
- <string id="231">Res</string>
+ <string id="231">Cap</string>
<string id="232">Punt</string>
<string id="233">Linear</string>
<string id="234">Anisotròpic</string>
<string id="236">Gaussian Cubic</string>
<string id="237">Minification</string>
<string id="238">Magnification</string>
- <string id="239">Borrar llista de reproducció al sortir</string>
- <string id="240">Autoexecutar DVD-Video</string>
- <string id="241">Autoexecutar VCD/SVCD</string>
- <string id="242">Autoexecutar Audio-CD</string>
- <string id="243">Autoexecutar XBOX Games</string>
- <string id="244">Autoexecutar Videos</string>
- <string id="245">Autoexecutar Música</string>
- <string id="246">Autoexecutar Imatges</string>
+ <string id="239">Neteja la llista de reproducció al sortir</string>
+ <string id="240">Mode de visualització</string>
+ <string id="241">Pantalla complerta #%d</string>
+ <string id="242">En finestra</string>
+ <string id="243">Freqüència de refresc</string>
+ <string id="244">Pantalla complerta</string>
<string id="247">Scripts</string>
<string id="248">Idioma</string>
<string id="249">Música</string>
- <string id="250">Visualitzacions</string>
+ <string id="250">Visualització</string>
<string id="251">Seleccioni directori de destí</string>
- <string id="252">- Sortida Estèreo a tots els altaveus</string>
+ <string id="252">Sortida estèreo a tots els altaveus</string>
<string id="253">Número de canals</string>
- <string id="254">- Activar Sortida DTS</string>
+ <string id="254">- Receptor amb DTS</string>
<string id="255">CDDB</string>
- <string id="256">Preguntant freedb per info CDDB</string>
+ <string id="256">Obtenint informació del CD</string>
<string id="257">Error</string>
<string id="258">Activar lectura d'etiquetes (ID3)</string>
- <string id="259">Apertura</string>
+ <string id="259">Obertura</string>
<string id="260">Shoutcast</string>
<string id="261">Esperant per començar....</string>
- <string id="262">Scripts de Sortida</string>
- <string id="263">Activar Servidor HTTP</string>
+ <string id="262">Scripts de sortida</string>
+ <string id="263">Permetre control de XBMC via HTTP</string>
<string id="264">Gravar</string>
- <string id="265">Parar Gravació</string>
- <string id="266">Ordre: Pista</string>
- <string id="267">Ordre: Temps</string>
- <string id="268">Ordre: Títol</string>
- <string id="269">Ordre: Artista</string>
- <string id="270">Ordre: Àlbum</string>
+ <string id="265">Atura gravació</string>
+ <string id="266">Ordrena per: Pista</string>
+ <string id="267">Ordrena per: Temps</string>
+ <string id="268">Ordrena per: Títol</string>
+ <string id="269">Ordrena per: Artista</string>
+ <string id="270">Ordrena per: Àlbum</string>
<string id="271">Top 100</string>
<string id="272">Ajust cantonada sup. esquerra</string>
<string id="273">Ajust cantonada inf. dreta</string>
<string id="274">Posició dels subtítols</string>
- <string id="275">Ajust Proporció del Pixel</string>
+ <string id="275">Ajust proporció del Pixel</string>
<string id="276">Mogui la fletxa per canviar la posició de la imatge</string>
<string id="277">Mogui la barra per canviar la posició del subtítols</string>
<string id="278">Canviï el rectangle fins veure un quadrat perfecte</string>
<string id="279">Impossible carregar les opcions</string>
- <string id="280">Utilitzar per defecte excepcions</string>
+ <string id="280">S'utilitzen les opcions per defecte</string>
<string id="281">Si us plau, verifiqui els fitxers XML</string>
<string id="282">Trobats %i elements</string>
- <string id="283">Resultats</string>
- <string id="284">No hi han resultats</string>
- <string id="286">Filtre Postprocés</string>
+ <string id="283">Resultats de la cerca</string>
+ <string id="284">No hi ha resultats</string>
<string id="287">Subtítols</string>
<string id="288">Font</string>
<string id="289">Tamany</string>
- <string id="290">Sò amplificat (dB)</string>
<string id="291">Video</string>
- <string id="292">Audio</string>
- <string id="293">subtítols</string>
- <string id="294">Crear marca</string>
- <string id="296">Netejar marques</string>
+ <string id="292">Àudio</string>
+ <string id="293">Navega per als subtítols</string>
+ <string id="294">Crear preferit</string>
+ <string id="296">Netejar preferits</string>
<string id="297">Retràs AV</string>
+ <string id="298">Preferits</string>
<string id="303">Retràs</string>
<string id="304">Idioma</string>
<string id="305">Activat</string>
<string id="306">No-Entrellaçat</string>
- <string id="307">- Postprocés Automàtic</string>
- <string id="308">- Filtre Desbloqueig Vertical</string>
- <string id="309">- Filtre Desbloqueig Horitzontal</string>
- <string id="310">- Auto contrast/brillantor</string>
- <string id="311">- Dering</string>
<string id="312">(0=auto)</string>
- <string id="313">Reorganitzar base de dades</string>
+ <string id="313">Netejant base de dades</string>
<string id="314">Preparant...</string>
- <string id="315">Error a la Base de Dades</string>
- <string id="316">Buscant cançons...</string>
+ <string id="315">Error a la base de dades</string>
+ <string id="316">Cercant cançons...</string>
<string id="317">Neteja de la base de dades exitosa</string>
<string id="318">Netejant cançons...</string>
<string id="319">Error al netejar cançons</string>
- <string id="320">Buscant artista...</string>
- <string id="321">Error netejant artistes</string>
- <string id="322">Buscant gèneres...</string>
- <string id="323">Error netejant gèneres</string>
- <string id="324">Buscant rutes...</string>
- <string id="325">Error netejant rutes</string>
- <string id="326">Buscant Àlbums...</string>
+ <string id="320">Netejant artistes...</string>
+ <string id="321">Error al netejar artistes</string>
+ <string id="322">Netejant gèneres...</string>
+ <string id="323">Error al netejar gèneres</string>
+ <string id="324">Netejant rutes...</string>
+ <string id="325">Error al netejar rutes</string>
+ <string id="326">Netejant àlbums...</string>
<string id="327">Error al netejar àlbums</string>
- <string id="328">Escrivint canvis...</string>
+ <string id="328">Escrivint els canvis...</string>
<string id="329">Error al escriure canvis</string>
<string id="330">Això pot trigar varis minuts...</string>
<string id="331">Comprimint base de dades...</string>
- <string id="332">Error al comprimir</string>
+ <string id="332">Error al comprimir la base de dades</string>
<string id="333">Vols netejar la llibreria musical?</string>
- <string id="334">Netejant Llibreria musical</string>
+ <string id="334">Neteja la llibreria...</string>
<string id="335">Inicia</string>
<string id="336">Ajus. Framerate</string>
- <string id="337">Sortida d'Ã\80udio</string>
+ <string id="337">Sortida d'Ã udio</string>
<string id="338">Analògic</string>
- <string id="339">Digital</string>
+ <string id="339">Digital/Coaxial</string>
<string id="340">Varis artistes</string>
- <string id="341">Reprod. DVD</string>
- <string id="342">Pel.lícules</string>
+ <string id="341">Reprod. disc</string>
+ <string id="342">Pel·lícules</string>
<string id="343">Ajustar Framerate</string>
<string id="344">Actors</string>
<string id="345">Any</string>
- <string id="346">Agrupar</string>
- <string id="347">Desagrupar</string>
<string id="350">Programes</string>
<string id="351">Off</string>
<string id="352">Enfosquir</string>
<string id="354">Matrix</string>
<string id="355">Temps per al salvapantalles</string>
<string id="356">Mode salvapantalles</string>
- <string id="357">Tiemps per al apagat</string>
- <string id="358">Tots els Ã\80lbums</string>
- <string id="359">Àlbums Recents</string>
+ <string id="357">Temps per al apagat</string>
+ <string id="358">Tots els à lbums</string>
+ <string id="359">Àlbums afegits recentment</string>
<string id="360">Salvapantalles</string>
<string id="361">Presentació</string>
<string id="362">Nivell de foscor (%)</string>
- <string id="363">Ordre: Arxiu</string>
+ <string id="363">Ordrena per: Arxiu</string>
<string id="364">- Activar Sortida AC3 5.1</string>
- <string id="365">Ordre: Nom</string>
- <string id="366">Ordre: Any</string>
- <string id="367">Ordre: Puntuació</string>
- <string id="368">IMDB</string>
+ <string id="365">Ordrena per: Nom</string>
+ <string id="366">Ordrena per: Any</string>
+ <string id="367">Ordrena per: Puntuació</string>
+ <string id="368">IMDb</string>
<string id="369">Títol</string>
<string id="370">Tormenta</string>
<string id="371">Parcialment</string>
- <string id="372">Majorment</string>
- <string id="373">Assolejat</string>
+ <string id="372">Majoritariament</string>
+ <string id="373">Assolellat</string>
<string id="374">Núvol</string>
<string id="375">Neu</string>
<string id="376">Pluja</string>
<string id="384">Fort</string>
<string id="385">Serè</string>
<string id="386">Clar</string>
- <string id="387">Núvol</string>
+ <string id="387">Núvols</string>
<string id="388">d'hora</string>
- <string id="389">ruixat</string>
- <string id="390">nevades</string>
+ <string id="389">Ruixat</string>
+ <string id="390">Nevades</string>
<string id="391">Baix</string>
<string id="392">Mitja</string>
<string id="393">Alt</string>
<string id="395">Boirina</string>
<string id="396">Seleccioni Lloc</string>
<string id="397">Temps Actualització</string>
- <string id="398">Unitat Temperatura</string>
- <string id="399">Unitat velocitat</string>
+ <string id="398">Unitats de temperatura</string>
+ <string id="399">Unitats de velocitat</string>
<string id="400">Temps</string>
<string id="401">Temp</string>
<string id="402">S. Tèrmica</string>
<string id="404">Vent</string>
<string id="405">Rosada</string>
<string id="406">Humitat</string>
- <string id="407">Des de</string>
- <string id="408">fins</string>
- <string id="410">Accedint a weather.com</string>
- <string id="411">Recuperant El Temps per:</string>
- <string id="412">Imposible connectar</string>
- <string id="413">Manual</string>
+ <string id="409">Per defecte</string>
+ <string id="410">Accedint al servei meteorològic</string>
+ <string id="411">Consultant el temps per:</string>
+ <string id="412">No s'ha pogut obtenir dades</string>
+ <string id="413">Manualment</string>
<string id="414">No hi ha anàlisi d'aquest Àlbum</string>
<string id="415">Descarregant caràtula...</string>
<string id="416">No disponible</string>
<string id="417">Veure: Gran</string>
- <string id="418">Els meus Videos/Gèneres</string>
- <string id="419">Els meus Videos/Actors</string>
- <string id="420">Els meus Videos/Any</string>
- <string id="421">Els meus Videos/Títol</string>
+ <string id="418">Baix</string>
+ <string id="419">Alt</string>
+ <string id="420">HDMI</string>
<string id="422">Borrar info de l'Àlbum</string>
- <string id="423">Borrar CDDB</string>
+ <string id="423">Borrar informació del CD</string>
<string id="424">Selecciona</string>
- <string id="425">No hi ha info de l'Àlbum.</string>
- <string id="426">No hi ha info CDDB.</string>
- <string id="427">Disc:</string>
+ <string id="425">No hi ha info de l'Àlbum</string>
+ <string id="426">No hi ha info del CD</string>
+ <string id="427">Disc</string>
<string id="428">Insereixi un CD/DVD vàlid</string>
<string id="429">Insereixi el següent CD/DVD</string>
- <string id="430">Ordre: DVD#</string>
+ <string id="430">Ordrena per: DVD#</string>
<string id="431">No Cache</string>
<string id="432">Borrar pel.lícula de la base de dades</string>
- <string id="433">Estas segur de borrar</string>
- <string id="434">la pel·lícula?</string>
- <string id="435">Pista</string>
- <string id="436">Any:</string>
- <string id="437">Duració:</string>
- <string id="438">Obrir arxiu</string>
+ <string id="433">Voleu esborrar '%s'?</string>
+ <string id="434">Des de %s a %i %s</string>
+ <string id="437">Disc</string>
+ <string id="438">Obrint arxiu</string>
<string id="439">Cache</string>
<string id="440">Disc Dur</string>
<string id="441">UDF</string>
- <string id="442">LAN</string>
+ <string id="442">Xarxa local</string>
<string id="443">Internet</string>
<string id="444">Video</string>
- <string id="445">Audio</string>
+ <string id="445">Àudio</string>
<string id="446">DVD</string>
<string id="447">Autoexecutar</string>
<string id="448">LCD</string>
<string id="449">Activat</string>
<string id="450">Columnes</string>
- <string id="451">Columna 1:</string>
- <string id="452">Columna 2:</string>
- <string id="453">Columna 3:</string>
- <string id="454">Columna 4:</string>
- <string id="455">Columnes:</string>
- <string id="456">Mode:</string>
+ <string id="451">Columna 1</string>
+ <string id="452">Columna 2</string>
+ <string id="453">Columna 3</string>
+ <string id="454">Columna 4</string>
+ <string id="455">Columnes</string>
+ <string id="456">Mode</string>
<string id="457">Canviar vista</string>
<string id="459">Subs</string>
- <string id="460">Cadena d'Àudio</string>
- <string id="461">[Activar]</string>
+ <string id="460">Stream d'àudio</string>
+ <string id="461">[actiu]</string>
<string id="462">Subtítol</string>
<string id="463">Retroil·luminació</string>
<string id="464">Brillantor</string>
<string id="477">Imposible carregar la llista de reproducció</string>
<string id="478">OSD</string>
<string id="479">Llengua i Pell (Skin)</string>
- <string id="480">Interfície d'Usuari</string>
- <string id="481">Opcions Àudio</string>
- <string id="482">En quant a XBMC</string>
- <string id="483">Àlbum</string>
- <string id="484">Artista</string>
- <string id="485">Borrar Àlbum</string>
+ <string id="480">Aparença</string>
+ <string id="481">Opcions d'àudio</string>
+ <string id="482">Sobre XBMC</string>
+ <string id="485">Borrar àlbum</string>
<string id="486">Repetir</string>
- <string id="487">Repetir Una</string>
- <string id="488">Repetir Carpetes</string>
- <string id="489">Autoreproduir Següent ítem</string>
+ <string id="487">Repetir una</string>
+ <string id="488">Repetir carpeta</string>
+ <string id="489">Autoreproduir la següent cançó</string>
<string id="491">- Usar icones grans</string>
<string id="492">Allargar subtítols</string>
<string id="493">Opcions Avançades (Experts Only!)</string>
<string id="495">Reescalar Videos a la resolució del entorn (GUI)</string>
<string id="496">Calibració</string>
<string id="497">Amagar extensions</string>
- <string id="498">Per Tipus:</string>
- <string id="499">Imposible connectar a www.allmusic.com</string>
+ <string id="498">Ordena per: Tipus</string>
+ <string id="499">Imposible connectar al servei en linia</string>
<string id="500">Descarrega d'informació d'àlbum fallida</string>
- <string id="501">Buscant nom de l'Àlbum...</string>
+ <string id="501">Cercant nom de l'Àlbum...</string>
<string id="502">Obrir</string>
<string id="503">Ocupat</string>
<string id="504">Buit</string>
<string id="505">Carregant informació des d'arxiu...</string>
- <string id="507">Ordenar: Ús</string>
+ <string id="507">Ordena per: Ús</string>
<string id="510">Activar Visualitzacions</string>
<string id="511">Activar canvi de mode de vídeo</string>
<string id="512">Finestra Inici</string>
<string id="513">Finestra Home</string>
- <string id="514">Opcions Manuals</string>
+ <string id="514">Opcions manuals</string>
<string id="515">Gènere</string>
- <string id="516">Fés arxius amb un de transparent</string>
<string id="517">Àlbums recents reproduïts</string>
<string id="518">Executa</string>
- <string id="519">Executa en..</string>
- <string id="520">Edita Fitxer XBE</string>
+ <string id="519">Executa en...</string>
<string id="521">Compilacions</string>
<string id="522">Borra Origen</string>
+ <string id="524">Selecciona llista de reproducció</string>
+ <string id="525">Nova llista de reproducció...</string>
+ <string id="526">Afegeix a la llista de reproducció</string>
+ <string id="528">Entra títol</string>
+ <string id="529">Error: El títol està duplicat</string>
+ <string id="530">Seleccionar gènere</string>
+ <string id="531">Nou gènere</string>
+ <string id="533">Entra gènere</string>
+ <string id="534">Veure: %s</string>
+ <string id="535">Llista</string>
+ <string id="536">Icones</string>
+ <string id="537">Llista gran</string>
+ <string id="538">Icones grans</string>
+ <string id="541">Icones d'àlbums</string>
+ <string id="542">Icones de DVD</string>
+ <string id="543">DVD</string>
+ <string id="544">Informació</string>
+ <string id="547">No hi ha biografia d'aquest artista</string>
+ <string id="550">Ordena per: %s</string>
+ <string id="551">Nom</string>
+ <string id="552">Data</string>
+ <string id="553">Mida</string>
+ <string id="554">Pista</string>
+ <string id="555">Temps</string>
+ <string id="556">Títol</string>
+ <string id="557">Artista</string>
+ <string id="558">Àlbum</string>
+ <string id="559">Llista de reproducció</string>
+ <string id="560">ID</string>
+ <string id="561">Fitxer</string>
+ <string id="562">Any</string>
+ <string id="563">Puntuació</string>
+ <string id="564">Tipus</string>
+ <string id="565">Ús</string>
+ <string id="566">Artista de l'àlbum</string>
+ <string id="567">Núm. reproduccions</string>
+ <string id="568">Última reproducció</string>
+ <string id="569">Comentari</string>
+ <string id="570">Afegit el</string>
+ <string id="572">Estudi</string>
+ <string id="574">País</string>
+ <string id="575">En progrés</string>
+ <string id="576">Reproduït</string>
+ <string id="584">Ascendent</string>
+ <string id="585">Descendent</string>
+ <string id="586">Edita llista de reproducció</string>
+ <string id="587">Filtre</string>
<string id="588">Cancel·la el Mode Party</string>
<string id="589">Mode Party</string>
<string id="590">Aleatori</string>
<string id="595">Repetir: Off</string>
<string id="596">Repetir: Una</string>
<string id="597">Repetir: Totes</string>
- <string id="600">Ripejar CD Audio</string>
+ <string id="600">Ripejar CD d'àudio</string>
<string id="601">Mitjà</string>
<string id="602">Estandard</string>
<string id="603">Extrem</string>
<string id="604">Bit Rate Constant</string>
<string id="605">Ripejant...</string>
- <string id="606">Número de pista:</string>
<string id="607">A:</string>
<string id="608">Imposible ripejar el CD o pista</string>
<string id="609">CDDARipPath no es troba</string>
<string id="643">Evitar retallades (clipping) en fitxers Replay Gained</string>
<string id="644">Retalla barres negres</string>
<string id="645">Requereixo enmagatzemar en catxe, continuo?</string>
- <string id="646">Treu Títol</string>
+ <string id="649">Important</string>
+ <string id="650">Exportant</string>
+ <string id="652">anys</string>
+ <string id="653">Actualitza la llibreria</string>
+ <string id="658">Informació de la cançó</string>
+ <string id="660">Amplificació del volum</string>
+ <string id="665">Nivell de compressió</string>
<string id="700">Borrar la llibreria</string>
<string id="701">Eliminant cançons antigues de la llibreria</string>
<string id="702">Aquesta ruta ja ha estat explorada.</string>
<string id="705">Xarxa</string>
- <string id="706">- Adreça del Proxy HTTP</string>
- <string id="707">- Port del Proxy HTTP</string>
+ <string id="706">- Servidor</string>
<string id="708">Activar Proxy HTTP</string>
- <string id="709">XLink Kai XTag</string>
- <string id="710">XLink Kai Password</string>
- <string id="711">Internet Protocol (IP)</string>
+ <string id="711">Protocol d'Internet (IP)</string>
<string id="712">Port especificat invàlid. Valors entre 1 i 65535.</string>
<string id="713">Proxy HTTP</string>
- <string id="714">XLink Kai</string>
- <string id="715">Asignació</string>
+ <string id="715">- Asignació</string>
<string id="716">Automàtica (DHCP)</string>
<string id="717">Manual (Estàtica)</string>
- <string id="718">Per defecte (Dashboard)</string>
<string id="719">- Adreça IP</string>
<string id="720">- Màscara de subxarxa</string>
<string id="721">- Porta d'enllaç</string>
<string id="722">- Servidor DNS</string>
- <string id="723">Guardar i resetejar la Xbox</string>
+ <string id="723">Desa i reinicia</string>
<string id="724">Adreça especificada invàlida. Valors deuen ser AAA.BBB.CCC.DDD</string>
<string id="725">amb nombres compresos entre 0 i 255.</string>
<string id="726">Canvis no guardats. Continuar sense guardar?</string>
<string id="727">Servidor Web</string>
<string id="728">Servidor FTP</string>
- <string id="729">Servidors Horaris de Internet</string>
- <string id="730">- Port Servidor Web</string>
- <string id="731">- Adreça Servidor Horari</string>
- <string id="732">Guardar i Aplicar</string>
- <string id="733">- Password del Servidor Web</string>
- <string id="734">Sense PW</string>
- <string id="735">Caràcters</string>
+ <string id="730">- Port</string>
+ <string id="732">Desa i aplica</string>
+ <string id="733">- Contrasenya</string>
+ <string id="734">Sense contrasenya</string>
+ <string id="735">- Joc de caràcters</string>
<string id="736">- Estil</string>
<string id="737">- Color</string>
<string id="738">Normal</string>
<string id="749">Afegir Recurs Compartit</string>
<string id="750">Estas segur?</string>
<string id="751">Eliminant Recurs Compartit</string>
- <string id="752">Editar Ruta del Recurs Compartit</string>
- <string id="753">Editar Nom Recurs Compartit</string>
<string id="754">Afegir link del programa</string>
<string id="755">Editar ruta del programa</string>
<string id="756">Editar nom del programa</string>
<string id="757">Editar profunditat de la ruta</string>
- <string id="758">Borrant ruta del programa</string>
<string id="759">Veure: Llista Gran</string>
<string id="760">Groc</string>
<string id="761">Blanc</string>
<string id="762">Blau</string>
<string id="763">Verd Brillant</string>
<string id="764">Groc Verd</string>
- <string id="765">cian</string>
- <string id="766">Reservat</string>
- <string id="767">Reservat</string>
- <string id="768">Reservat</string>
- <string id="769">Reservat</string>
+ <string id="765">Cian</string>
+ <string id="766">Gris clar</string>
+ <string id="767">Gris</string>
<string id="770">Error %i: ruta no disponible</string>
- <string id="771">- Limitador Auto Fatx</string>
- <string id="772">Hardware d'Àudio</string>
+ <string id="772">Sortida d'àudio</string>
<string id="773">Buscant</string>
<string id="774">Carpeta Diapositives</string>
- <string id="998">XLink KAI</string>
- <string id="999">Joc Online</string>
- <string id="1000">Previsualitza Salvapantalles</string>
- <string id="1001">Impossible connectar</string>
+ <string id="775">Interfície de xarxa</string>
+ <string id="776">- Nom de la xarxa inalàmbrica (ESSID)</string>
+ <string id="777">- Contrasenya</string>
+ <string id="778">- Tipus de seguretat</string>
+ <string id="780">Sense encriptar</string>
+ <string id="781">WEP</string>
+ <string id="782">WPA</string>
+ <string id="783">WPA2</string>
+ <string id="784">Aplicant la configuració de la interfície de xarxa. Espereu.</string>
+ <string id="785">Interfície de xarxa reiniciada correctament.</string>
+ <string id="786">La interfície de xarxa no s'ha iniciat correctament.</string>
+ <string id="787">Interfície desactivada</string>
+ <string id="789">Nom de la xarxa inalàmbrica (ESSID)</string>
+ <string id="792">Port</string>
+ <string id="793">Rang de ports</string>
+ <string id="798">Accés a internet</string>
+ <string id="850">El número de port no és vàlid</string>
+ <string id="851">El rang de ports vàlid és 1-65535</string>
+ <string id="852">El rang de ports vàlid és 1024-65535</string>
+ <string id="998">Afegeix música...</string>
+ <string id="999">Afegeix vídeos...</string>
+ <string id="1000">- Previsualitza</string>
+ <string id="1001">No s'ha pogut connectar</string>
<string id="1002">XBMC no pot connectarse a la localització de la xarxa</string>
<string id="1003">Això pot ser degut a que la xarxa no está connectada</string>
<string id="1004">Vols afegir-ho igualment?</string>
- <string id="1005">Entra un nom per aquest recurs</string>
<string id="1006">Adreça IP</string>
<string id="1007">Afegeix localització de xarxa</string>
<string id="1008">Protocol</string>
- <string id="1009">Adreça del Servidor</string>
+ <string id="1009">Adreça del servidor</string>
<string id="1010">Nom del Servidor</string>
<string id="1011">Ruta remota</string>
<string id="1012">Directori compartit</string>
<string id="1017">Entra la ruta del servidor</string>
<string id="1018">Entra el número de port</string>
<string id="1019">Entra el nom d'usuari</string>
- <string id="1020">Afegeix %s Font</string>
+ <string id="1020">Afegeix %s font</string>
<string id="1021">Entra la ruta o navega per les localitzacions</string>
<string id="1022">Entra un nom per aquest recurs multimedia</string>
<string id="1023">Navega per a un nou recurs</string>
<string id="1030">una imatge</string>
<string id="1031">un directori d'imatge</string>
<string id="1032">Afegeix una localització de xarxa...</string>
+ <string id="1034">Submenú</string>
+ <string id="1047">Altres...</string>
+ <string id="1048">- Nom d'usuari</string>
<string id="1200">Client SMB</string>
<string id="1202">Grup de treball</string>
<string id="1203">Usuari per defecte</string>
<string id="1204">Contrasenya per defecte</string>
<string id="1207">Servidor WINS</string>
+ <string id="1208">Munta recurs compartit SMB</string>
<string id="1210">Elimina</string>
- <string id="1211">Musica</string>
+ <string id="1211">Música</string>
<string id="1212">Vídeo</string>
<string id="1213">Fotos</string>
<string id="1214">Arxius</string>
- <string id="1215">Música i Vídeo</string>
- <string id="1216">Música i Fotos</string>
- <string id="1217">Música i Arxius</string>
- <string id="1218">Vídeo i Fotos</string>
- <string id="1219">Vídeo i Arxius</string>
- <string id="1220">Fotos i Arxius</string>
+ <string id="1215">Música i vídeo</string>
+ <string id="1216">Música i fotos</string>
+ <string id="1217">Música i arxius</string>
+ <string id="1218">Vídeo i fotos</string>
+ <string id="1219">Vídeo i arxius</string>
+ <string id="1220">Fotos i arxius</string>
<string id="1221">Música, Vídeo i Fotos</string>
<string id="1222">Música, Vídeo, Fotos i Arxius</string>
<string id="1223">Desactivat</string>
<string id="1233">Programes, Vídeo i Música</string>
<string id="1234">Programes, Fotos i Música</string>
<string id="1235">Programes, Fotos i Vídeo</string>
- <string id="1245">Nom d'usuari FTP</string>
- <string id="1246">Contrasenya usuari FTP</string>
- <string id="1247">Contrasenya FTP enmagatzemada correctament</string>
<string id="1250">Autodetecció</string>
<string id="1251">Autodetecció d'XBOX</string>
- <string id="1252">Nom de pila (nick)</string>
- <string id="1253">Crea un link FTP als meus arxius</string>
+ <string id="1252">Sobrenom (nick)</string>
<string id="1254">Pregunta al connectar</string>
<string id="1255">Envia usuari i contrasenya FTP</string>
<string id="1256">Interval de Ping</string>
<string id="2050">Durada:</string>
<string id="4501">Tipus de LCD</string>
<string id="10000">Inici</string>
- <string id="10001">Els Meus Programes</string>
- <string id="10002">Les Meves Imatges</string>
- <string id="10003">Els Meus Arxius</string>
+ <string id="10001">Programes</string>
+ <string id="10002">Imatges</string>
+ <string id="10003">Gestor de fitxers</string>
<string id="10004">Ajustaments</string>
- <string id="10005">La Meva Música</string>
- <string id="10006">Els Meus Videos</string>
+ <string id="10005">Música</string>
+ <string id="10006">Videos</string>
<string id="10007">Informació del sistema</string>
- <string id="10008">Opcions->General</string>
- <string id="10009">Opcions->Pantalla</string>
- <string id="10010">Opcions->Aparença->Calibració UI</string>
- <string id="10011">Opcions->Vídeos->Calibració de Pantalla</string>
- <string id="10012">Opcions->Fotos</string>
- <string id="10013">Opcions->Programes</string>
- <string id="10014">Opcions->El Temps</string>
- <string id="10015">Opcions->Música</string>
- <string id="10016">Opcions->Sistema</string>
- <string id="10017">Opcions->Vídeos</string>
- <string id="10018">Opcions->Xarxa</string>
- <string id="10019">Opcions->Aparença</string>
+ <string id="10008">Opcions - General</string>
+ <string id="10009">Opcions - Pantalla</string>
+ <string id="10010">Opcions - Aparença - Calibració UI</string>
+ <string id="10011">Opcions - Vídeos - Calibració de Pantalla</string>
+ <string id="10012">Opcions - Imatges</string>
+ <string id="10013">Opcions - Programes</string>
+ <string id="10014">Opcions - El Temps</string>
+ <string id="10015">Opcions - Música</string>
+ <string id="10016">Opcions - Sistema</string>
+ <string id="10017">Opcions - Vídeos</string>
+ <string id="10018">Opcions - Xarxa</string>
+ <string id="10019">Opcions - Aparença</string>
<string id="10020">Scripts</string>
- <string id="10021">Els Meus Videos/gènere</string>
- <string id="10022">Els Meus Videos/actors</string>
- <string id="10023">Els Meus Videos/any</string>
- <string id="10025">Els Meus Videos/títol</string>
- <string id="10028">Els Meus Videos/playlist</string>
- <string id="10034">Opcions->Perfils</string>
- <string id="10100">Si/no diàleg</string>
+ <string id="10021">Navegador web</string>
+ <string id="10028">Videos/Llista de reproducció</string>
+ <string id="10034">Opcions - Perfils</string>
+ <string id="10100">Sí/No diàleg</string>
<string id="10101">Progrés del diàleg</string>
- <string id="10500">La Meva Música/Playlist</string>
- <string id="10501">La Meva Música/Arxius</string>
- <string id="10502">La Meva Música/Llibreria</string>
- <string id="10503">La Meva Música/Top 100</string>
- <string id="10504">Top 100 Cançons</string>
- <string id="10505">Top 100 Ã\80lbums</string>
- <string id="10506">Els meus Programes</string>
+ <string id="10500">Música/Llista de reproducció</string>
+ <string id="10501">Música/Arxius</string>
+ <string id="10502">Música/Biblioteca</string>
+ <string id="10503">Editor de llista de reproducció</string>
+ <string id="10504">Top 100 cançons</string>
+ <string id="10505">Top 100 Ã lbums</string>
+ <string id="10506">Programes</string>
<string id="10507">Configuració</string>
<string id="10508">Pronòstic del temps</string>
<string id="10509">Joc en xarxa</string>
<string id="10510">Extensions</string>
<string id="10511">Informació del Sistema</string>
- <string id="10512">Música - Àlbums</string>
- <string id="10513">Música - Artistes</string>
- <string id="10514">Música - Gènere</string>
- <string id="10515">Música - Top 100</string>
<string id="10516">Música - Llibreria</string>
<string id="10517">Música - Reproduïnt</string>
- <string id="10518">Vídeo - Actors</string>
- <string id="10519">Vídeo - Gèneres</string>
- <string id="10520">Vídeo - Títol</string>
- <string id="10521">Vídeo - Any</string>
<string id="10522">Vídeo - Reproduïnt</string>
<string id="10523">Info d'àlbum</string>
<string id="10524">Info de la pel·lícula</string>
<string id="12000">Seleccionar diàleg</string>
- <string id="12001">La Meva Música/info</string>
+ <string id="12001">Música/Info</string>
<string id="12002">Diàleg OK</string>
- <string id="12003">Els Meus Videos/Info</string>
- <string id="12004">Les Meves Scripts/Info</string>
+ <string id="12003">Videos/Info</string>
+ <string id="12004">Scripts/Info</string>
<string id="12005">Pantalla completa</string>
<string id="12006">Visualitzacions d'àudio</string>
- <string id="12007">Les Meves Imatges/Diapositives</string>
<string id="12008">Diàleg Apilar Fitxers</string>
<string id="12009">Reconstruïr índex...</string>
<string id="12010">Tornar a la meva Música</string>
<string id="12011">Tornar als meus Vídeos</string>
- <string id="12012">Actualitça llista de Trainers</string>
- <string id="12013">Trainer</string>
- <string id="12014">No s'han trobat Trainers</string>
- <string id="12015">Opcions del Trainer</string>
- <string id="12016">Trainer registrats perduts. Actualitza primer.</string>
- <string id="12017">Autocontinua desde la darrera posició</string>
- <string id="12018">No</string>
- <string id="12019">Sí</string>
- <string id="12020">Pregunta</string>
<string id="12021">Comença des del principi</string>
- <string id="12022">Continua desde la darrera posició</string>
+ <string id="12022">Continua desde %s</string>
<string id="12310">0</string>
<string id="12311">1</string>
<string id="12312">2</string>
<string id="12344">Les contrasenyes no son iguals.</string>
<string id="12345">Accès Denegat</string>
<string id="12346">S'ha excedit el limit d'intents.</string>
- <string id="12347">La XBOX s'apagarà ara.</string>
+ <string id="12347">El sistema s'apagarà ara.</string>
<string id="12348">Ítem Bloquejat</string>
<string id="12353">Reactiva Bloqueig</string>
<string id="12356">Canvia Bloqueig</string>
<string id="12377">Això borrarà qualsevol valor enmagatzemat anterior</string>
<string id="12378">Mostra cada imatge per</string>
<string id="12379">Utilitza efectes Pan i Zoom</string>
- <string id="12380">Reprodueix vídeos NTSC en modes PAL</string>
- <string id="12381">Reprodueix vídeos PAL en modes NTSC</string>
- <string id="12382">Reprodueix vídeos NTSC en PAL60</string>
<string id="12383">format 12 hores</string>
<string id="12384">format 24 hores</string>
<string id="12385">Dia/Mes</string>
<string id="12386">Mes/Dia</string>
- <string id="12387">Rellegeix Base de Dades</string>
<string id="12390">Actiu des de</string>
- <string id="12391">Minuts</string>
- <string id="12392">Hores</string>
- <string id="12393">Dies</string>
+ <string id="12391">minuts</string>
+ <string id="12392">hores</string>
+ <string id="12393">dies</string>
<string id="12394">Temps encès total</string>
<string id="12600">El Temps</string>
<string id="12900">Salvapantalles</string>
<string id="13003">- Retràs</string>
<string id="13004">- Duració mínima del arxiu</string>
<string id="13005">Apagar</string>
- <string id="13006">Dashboard</string>
+ <string id="13009">Surt</string>
+ <string id="13010">Hiberna</string>
+ <string id="13011">Suspen</string>
+ <string id="13012">Surt</string>
+ <string id="13013">Reinicia</string>
+ <string id="13014">Minimitza</string>
<string id="13100">Filtre anti-vibració</string>
- <string id="13150">Clau HDD:</string>
- <string id="13151">Temp. HDD:</string>
- <string id="13152">Model DVD:</string>
- <string id="13153">Firmware DVD:</string>
- <string id="13154">Model HDD:</string>
- <string id="13155">Serial HDD:</string>
- <string id="13156">Firmware HDD:</string>
- <string id="13157">Contrasenya HDD:</string>
- <string id="13158">Estat bloqueig HDD:</string>
- <string id="13159">Màscara de subxarxa:</string>
- <string id="13160">Porta d'enllaç:</string>
- <string id="13161">DNS</string>
+ <string id="13159">Màscara de subxarxa</string>
+ <string id="13160">Porta d'enllaç</string>
+ <string id="13161">DNS primari</string>
<string id="13162">Inici fallat</string>
- <string id="13163">GamePads al port:</string>
- <string id="13164">Teclat al port:</string>
- <string id="13165">Ratolí al port: </string>
- <string id="13166">Cascos/Micro al port:</string>
- <string id="13167">MemoryStick al port:</string>
- <string id="13168">IR-Remote al port:</string>
<string id="13170">Mai</string>
<string id="13171">Inmediatament</string>
- <string id="13172">Després %i segons</string>
+ <string id="13172">Després de %i segons</string>
<string id="13200">Perfils</string>
<string id="13201">Borrar perfil '%s'?</string>
<string id="13204">Darrer Perfil carregat:</string>
<string id="13209">Interval d'alarma (en minuts)</string>
<string id="13210">Iniciada, alarma en %im</string>
<string id="13211">Alarma!</string>
- <string id="13212">Cancel·lat amb %im%està fora</string>
+ <string id="13212">Cancel·lat quan quedava %im%is</string>
<string id="13249">Buscar subtítols als RARs</string>
<string id="13250">Navegar per als subtítols...</string>
<string id="13251">Moure ítem</string>
<string id="13252">Moure ítem aquí</string>
<string id="13253">Cancel·lar moviment</string>
<string id="13270">Hardware:</string>
- <string id="13271">Velocitat CPU:</string>
+ <string id="13271">Ús CPU:</string>
<string id="13274">Xbox connectada, pero no disponible DNS</string>
<string id="13275">Disc Dur</string>
<string id="13276">DVD-ROM</string>
<string id="13279">Xarxa</string>
<string id="13280">Vídeo</string>
<string id="13281">Hardware</string>
- <string id="13282">_</string>
<string id="13283">Versió del Kernel:</string>
<string id="13284">Velocitat CPU:</string>
- <string id="13285">BIOS detectada:</string>
<string id="13286">Codificador de vídeo:</string>
<string id="13287">Resolució de pantalla:</string>
- <string id="13288">Xbox Version:</string>
- <string id="13289">Xbox Serial Number:</string>
- <string id="13290">Fabricant XBOX:</string>
- <string id="13291">ModChip:</string>
<string id="13292">Cable A/V:</string>
- <string id="13293">Regió Video & XBE</string>
<string id="13294">Regió DVD:</string>
<string id="13295">Internet:</string>
- <string id="13296">Xbox no està connectada.</string>
- <string id="13297">Xbox no està connectada. Comprova opcions de xarxa.</string>
- <string id="13298">Clau XBLIVE:</string>
+ <string id="13296">Connectat</string>
+ <string id="13297">No connectat. Comprova opcions de xarxa.</string>
<string id="13299">Temperatura màxima</string>
<string id="13300">Vel. del Ventilador:</string>
<string id="13301">Autocontrol de temperatura</string>
<string id="13302">Control Vel. Ventilador</string>
- <string id="13303">Font de la Pell (Skin)</string>
+ <string id="13303">- Fonts</string>
<string id="13304">Permetre moure a la vegada sequències bidireccionals</string>
<string id="13305">Activar informació RSS</string>
<string id="13306">Ocultar la icona de pujar la carpeta</string>
<string id="13320">Estèreo</string>
<string id="13321">Només esquerre</string>
<string id="13322">Només dret</string>
- <string id="13323">Activar CD+G</string>
+ <string id="13323">Activar suport per karaoke</string>
<string id="13324">Translucidesa del Fons</string>
<string id="13325">Translucidesa del Primer Pla</string>
<string id="13326">Retras A/V</string>
<string id="13334">Editar etiqueta</string>
<string id="13335">Crear per defecte</string>
<string id="13336">Borrar botó</string>
- <string id="13338">LED frontal</string>
- <string id="13339">Color del LED frontal</string>
<string id="13340">Deixar-ho com està</string>
<string id="13341">Verd</string>
<string id="13342">Taronja</string>
<string id="13347">Possar objecte a la cua</string>
<string id="13348">Cercar a IMDB...</string>
<string id="13349">Cercar info de tot</string>
- <string id="13350">Reproduir ara...</string>
+ <string id="13350">Reproduint ara...</string>
<string id="13351">Info del àlbum</string>
<string id="13352">Explorar en Base Dades</string>
- <string id="13353">Detenir l'exploració</string>
+ <string id="13353">Atura l'exploració</string>
<string id="13354">Mètode Rende</string>
<string id="13355">Pixel Shader</string>
<string id="13356">YUY2 Overlays</string>
<string id="13395">Opcions de vídeo</string>
<string id="13396">Opcions d'àudio i vídeo</string>
<string id="13397">Activar subtítols</string>
- <string id="13398">Marques</string>
+ <string id="13398">Drecera</string>
<string id="13399">Ignorar "The" al ordenar</string>
<string id="13400">Barrejar pistes d'àlbums</string>
<string id="13401">Navegar per %s</string>
<string id="13403">Borra per defecte</string>
<string id="13404">Continuar</string>
<string id="13405">Obté miniatura</string>
+ <string id="13413">Descarregant</string>
+ <string id="13506">Baix(ràpid)</string>
+ <string id="13507">Mig</string>
+ <string id="13508">Alt</string>
+ <string id="13509">Molt alt(lent!)</string>
+ <string id="13552">%.1f Segon</string>
+ <string id="13553">%.1f Segons</string>
<string id="14000">Agrupar</string>
- <string id="14001">No agrupar</string>
+ <string id="14001">Desagrupar</string>
<string id="14003">Descarregant fitxer de listes...</string>
<string id="14004">Descarregant llista de streams...</string>
<string id="14005">Analitzant llista de streams...</string>
<string id="14006">La descarrega de la llista de streams ha fallat</string>
<string id="14007">La descarrega del fitxer de llistes ha fallat</string>
- <string id="14008">Activar notificacions Kai</string>
<string id="14009">Directori de Jocs</string>
<string id="14010">Autoconmutar les caràtules basant-se en</string>
<string id="14011">Activar Autoconmutació en les vistes de caràtules</string>
<string id="14023">Sense TV</string>
<string id="14024">Escrigui la ciutat més propera o el codi ZIP de USA</string>
<string id="14025">Video/Audio/DVD Cache - Disc Dur</string>
- <string id="14026"> - Video Cache - DVDRom</string>
- <string id="14027"> - Xarxa Local</string>
- <string id="14028"> - Internet</string>
- <string id="14030"> - Audio Cache - DVDRom</string>
- <string id="14031"> - Xarxa Local</string>
- <string id="14032"> - Internet</string>
- <string id="14034"> - DVD Cache - DVDRom</string>
- <string id="14035"> - Xarxa Local</string>
- <string id="14036">Servidors</string>
- <string id="14037">Aparença</string>
+ <string id="14026">Video Cache - DVD-ROM</string>
+ <string id="14027">- Xarxa Local</string>
+ <string id="14028">- Internet</string>
+ <string id="14030">Audio Cache - DVD-ROM</string>
+ <string id="14031">- Xarxa Local</string>
+ <string id="14032">- Internet</string>
+ <string id="14034">- DVD cache - DVD-ROM</string>
+ <string id="14035">- Xarxa Local</string>
+ <string id="14036">Serveis</string>
<string id="14038">Configuració de Xarxa canviada</string>
<string id="14039">XBMC requereix reiniciar-se per a poder canviar la seva</string>
<string id="14040">configuració de xarxa. Desitja reiniciar ara?</string>
<string id="14041">Postprocesat</string>
- <string id="14042">Adreça IP del motor</string>
<string id="14043">- Apagar encara que estigui reproduint</string>
<string id="14044">%i mins</string>
<string id="14045">%i segs</string>
<string id="14051">Veure el rellotge en format 12 hores</string>
<string id="14052">Invertir mes i dia en el menú principal</string>
<string id="14053">Filtres GUI</string>
- <string id="14054">Activar cerca a Internet</string>
<string id="14055">Emprar exploració oculta</string>
<string id="14056">Aturar l'exploració</string>
<string id="14057">No es possible mentre s'explorar la informació dels medis</string>
<string id="14069">Aplicar canvis?</string>
<string id="14070">Aplicar canvis</string>
<string id="14071">Permetre renombrar i borrar arxius</string>
- <string id="14072">Activar XLink Kai</string>
- <string id="14073">XLink Kai desactivat</string>
- <string id="15000">XLink Kai</string>
- <string id="15001">Servei no connectat</string>
- <string id="15002">Intentar reconnectar?</string>
- <string id="15003">Entra el teu missatge</string>
- <string id="15004">Invitat a jugar %s.</string>
- <string id="15005">Data: %s</string>
- <string id="15006">De: %s</string>
- <string id="15007">Invitació</string>
- <string id="15008">Invitat a unir-se a %s.</string>
- <string id="15009">Desconnectat</string>
- <string id="15010">Amics</string>
- <string id="15011">Veure: Amics</string>
- <string id="15012">Unir-se</string>
- <string id="15013">Veu</string>
- <string id="15014">Invitar</string>
+ <string id="14074">Establir zona horaria</string>
+ <string id="14076">Afegeix a preferits</string>
+ <string id="14077">Elimina de preferits</string>
+ <string id="14078">- Colors</string>
+ <string id="14080">Zona horaria</string>
+ <string id="14087">DVDs</string>
+ <string id="14090">Internacional</string>
+ <string id="14093">Seguretat</string>
<string id="15015">Treure</string>
<string id="15016">Jocs</string>
- <string id="15017">Veure: Jocs</string>
- <string id="15018">Entrar</string>
<string id="15019">Afegir</string>
- <string id="15020">Host</string>
- <string id="15021">Arenas</string>
- <string id="15022">Veure: Arenas</string>
- <string id="15023">Jugar</string>
- <string id="15024">Afegir</string>
- <string id="15025">Host</string>
- <string id="15026">Xat</string>
- <string id="15027">Veure: Xat</string>
- <string id="15028">Teclat</string>
- <string id="15029">Es requereix contrasenya per unir-se</string>
- <string id="15030">Servei desconnectat</string>
- <string id="15031">Autenticació XLink Kai</string>
- <string id="15032">Usuario i contrasenya rebutjades per el</string>
- <string id="15033">servidor orbital. Verifica la configuració</string>
- <string id="15034">ha entrat</string>
- <string id="15035">ha iniciat un xat de veu</string>
- <string id="15036">t'ha enviat una invitació</string>
- <string id="15037">XBMC no es capaç de confirmar si la xarxa està disponible</string>
- <string id="15038">Pots experimentar dificultats unin-te o fent de servidor de jocs.</string>
- <string id="15039">XBMC es incapaç de localitzar el joc automaticament.</string>
- <string id="15040">Inserta el DVD del joc a l'XBOX o prem 'A' per cancel·lar</string>
- <string id="15041">i llença el joc manualment.</string>
- <string id="15042">Accès denegat</string>
- <string id="15043">%s s'uneix al xat.</string>
- <string id="15044">%s surt del xat.</string>
- <string id="15045">Entra el teu missatge personal</string>
- <string id="15046">Arena Actual</string>
- <string id="15047">Entra una contrasenya per a la teva arena</string>
- <string id="15048">Entra una descripció per a la teva arena</string>
- <string id="15049">Servir un joc (Host Game)</string>
- <string id="15050">Servi un joc en arena privada</string>
- <string id="15051">Limit de jugadors</string>
<string id="15052">Contrasenya</string>
- <string id="15053">Descripció</string>
- <string id="15054">Diàleg Invitació</string>
- <string id="15055">Escull joc:</string>
- <string id="15056">Entra msg:</string>
- <string id="15057">Envia</string>
- <string id="15058">Host</string>
- <string id="15059">Invitació acceptada!</string>
- <string id="15060">Missatge aquí:</string>
- <string id="15061">Has invitat a jugar %s.</string>
<string id="15100">Llibreria</string>
<string id="15101">Base de dades</string>
<string id="15102">* Tots els Àlbums</string>
<string id="15103">* Tots els Artistes</string>
<string id="15104">* Totes les Cançons</string>
<string id="15105">* Tots els Gèneres</string>
- <string id="15106">Recorda fitxers seleccionats en navegació futura</string>
<string id="15107">Buffering...</string>
<string id="15108">Sons de navegació</string>
<string id="15109">Pell per defecte</string>
<string id="15213">Reproduïnt usant...</string>
<string id="15214">Utilitza Sincronització A/V suau</string>
<string id="15215">Oculta noms de fitxers en vista miniatures</string>
- <string id="15250">Envia Last.FM Radio to Last.FM</string>
- <string id="15251">Connectant a Last.FM...</string>
- <string id="15252">Buscant emissores...</string>
+ <string id="15218">Usuari Libre.fm</string>
+ <string id="15219">Contrasenya Libre.fm</string>
+ <string id="15220">Libre.fm</string>
+ <string id="15250">Envia radio Last.fm a Last.fm</string>
+ <string id="15251">Connectant a Last.fm...</string>
+ <string id="15252">Seleccionant emissora...</string>
<string id="15253">Buscant artistes similars...</string>
- <string id="15254">Buscant etiquetes similars.</string>
+ <string id="15254">Buscant etiquetes similars...</string>
<string id="15255">Perfil (%name%)</string>
<string id="15256">Etiquetes globals</string>
<string id="15257">Artistes Top per etiqueta %name%</string>
<string id="15282">Entra una etiqueta per trobar-ne de similars</string>
<string id="15283">Pistes recentment escoltades per %name%</string>
<string id="15300">Ruta no trobada o invàl·lida</string>
- <string id="15301">No puc connectar al servidor</string>
- <string id="15302">No es troben servidors</string>
- <string id="15303">Grup de treball no es troba</string>
+ <string id="15301">No puc connectar al servidor de xarxa</string>
+ <string id="15302">No hi ha servidors</string>
+ <string id="15303">Grup de treball no trobat</string>
<string id="15310">Obrint marcador multi-ruta</string>
<string id="15311">Ruta:</string>
<string id="16000">General</string>
- <string id="16001">Configurar hardware audio</string>
- <string id="16002">Búsqueda CDDB</string>
+ <string id="16002">Cerca a Internet</string>
<string id="16003">Reproductor</string>
<string id="16004">Reproduïr des del disc</string>
- <string id="16009">Entra el nom de la Pel·lícula</string>
- <string id="16010">Entra el Nom del Perfil</string>
- <string id="16011">Entra el Nom del Àlbum</string>
+ <string id="16008">Entra el nou títol</string>
+ <string id="16009">Entra el nom de la pel·lícula</string>
+ <string id="16010">Entra el nom del perfil</string>
+ <string id="16011">Entra el nom de l'àlbum</string>
<string id="16012">Entra el nom de la Llista</string>
<string id="16013">Entra el nom del nou fitxer</string>
<string id="16014">Entra el nom de la carpeta</string>
<string id="16019">Auto Selecció</string>
<string id="16020">Desentrellaçat</string>
<string id="16021">Bob</string>
- <string id="16022">Bob (Invertit)</string>
+ <string id="16022">Bob (invertit)</string>
<string id="16023">Manejador Entrellaçat</string>
- <string id="16024">Cancel·lant</string>
+ <string id="16024">Cancel·lant...</string>
<string id="16025">Entra el Nom de l'Artista</string>
<string id="16026">Llista de reproducció abortada</string>
- <string id="16027">Masses items fallats consecutius</string>
+ <string id="16027">Un o més ítems no s'han pogut reproduir.</string>
<string id="16030">Mode Party abortat</string>
<string id="16031">Sense cançons coincidents en BD</string>
<string id="16032">No puc inicialitzar BD</string>
<string id="16103">Marca'l Vist</string>
<string id="16104">Marca'l Per Veure</string>
<string id="16105">Edita el Títol</string>
- <string id="16106">Utilitza NTSC-M & NTSC-J</string>
- <string id="16107">Utilitza només NTSC-M</string>
- <string id="16108">Utilitza només NTSC-J</string>
- <string id="16109">Utilitza només PAL-60</string>
- <string id="16110">Per Jocs a 60hz </string>
- <string id="20000">Directori CDDA Rip</string>
+ <string id="16200">Operació cancel·lada</string>
+ <string id="16310">Temporal</string>
+ <string id="16311">Temporal/Espacial</string>
+ <string id="20000">Directori de música desada</string>
<string id="20001">Utilitza reproductor de DVD extern</string>
<string id="20002">Reproductor de DVD extern</string>
<string id="20003">Directori de Trainers</string>
- <string id="20004">Directori de Captures</string>
- <string id="20005">Directori de Grabacions</string>
+ <string id="20004">Directori de captures</string>
<string id="20006">Directori de Llistes</string>
<string id="20007">Grabacions</string>
<string id="20008">Captures</string>
<string id="20009">Utilitza XBMC</string>
- <string id="20010">Imatges d'artistes</string>
<string id="20011">Llistes de Música</string>
<string id="20012">Llistes de Vídeo</string>
<string id="20013">Vols executar el joc?</string>
<string id="20017">Miniatura Local</string>
<string id="20018">Sense miniatura</string>
<string id="20019">Escull miniatura</string>
- <string id="20020">No puc usar KAI i trainers alhora</string>
- <string id="20021">Escull que vols usar</string>
<string id="20023">Conflicte</string>
<string id="20024">Busca nou</string>
<string id="20025">Busca tot</string>
<string id="20053">Mode mestre esquerra</string>
<string id="20054">Entra el mode mestre</string>
<string id="20055">Miniatura Allmusic.com</string>
- <string id="20056">Font de la +miniatura</string>
<string id="20057">Esborra miniatura</string>
<string id="20058">Afegeix perfil...</string>
<string id="20059">Pregunta info per tots els àlbums</string>
<string id="20071">Comença amb recursos multimedia a cero </string>
<string id="20072">Assegurar-se que el directori seleccionat es pot escriure</string>
<string id="20073">i el nou nom de directori és vàlid</string>
- <string id="20074">Qualifiació MPAA:</string>
+ <string id="20074">Qualifiació MPAA</string>
<string id="20075">Entra el codi mestre de bloqueig</string>
<string id="20076">Preguntar pel codi mestre al iniciar</string>
<string id="20077">Opcions de la Pell (Skin)</string>
<string id="20080">Desactiva RSS durant la Música</string>
<string id="20081">Activa Butons de marcadors</string>
<string id="20082">Mostra info de XLink Kai</string>
- <string id="20083">Mostra info de Música</string>
- <string id="20084">Mostra info del Temps</string>
+ <string id="20083">Mostra info de música</string>
+ <string id="20084">Mostra info del temps</string>
<string id="20085">Mostra info del sistema</string>
<string id="20086">Mostra espai disponible C: E: F:</string>
<string id="20087">Mostra espai disponible E: F: G:</string>
- <string id="20088">Informació del Temps</string>
+ <string id="20088">Informació del temps</string>
<string id="20089">Mostra espai lliure</string>
<string id="20090">Entra el nom de un recurs compartit existent</string>
<string id="20091">Bloqueja el codi</string>
<string id="20151">Cancel·la temps d'apagada</string>
<string id="20152">Bloqueja preferencies per %s</string>
<string id="20153">Navega...</string>
- <string id="29999">Filtre anti-parpalleig (AutoFlicker patch)</string>
-</strings>
\ No newline at end of file
+ <string id="20161">Total</string>
+ <string id="20162">Usat</string>
+ <string id="20163">de</string>
+ <string id="20171">Xarxa Windows (SMB)</string>
+ <string id="20172">Servidor XBMSP</string>
+ <string id="20173">Servidor FTP</string>
+ <string id="20175">Servidor UPnP</string>
+ <string id="20177">Fet</string>
+ <string id="20180">Símbols</string>
+ <string id="20181">Esborra</string>
+ <string id="20182">Espai</string>
+ <string id="20183">Recarrega pell</string>
+ <string id="20186">Espereu</string>
+ <string id="20253">Servidor WebDAV (HTTP)</string>
+ <string id="20254">Servidor WebDAV (HTTPS)</string>
+ <string id="20258">Client MythTV</string>
+ <string id="20300">Directori d'un servidor Web (HTTP)</string>
+ <string id="20301">Directori d'un servidor Web (HTTPS)</string>
+ <string id="20302">No s'ha pogut escriure al directori:</string>
+ <string id="20307">DNS secundari</string>
+ <string id="20308">Servidor DHCP:</string>
+ <string id="20309">Crear nou directori</string>
+ <string id="20314">Vídeos - Llibreria</string>
+ <string id="20316">Ordena per: ID</string>
+ <string id="20331">Fitxer</string>
+ <string id="20334">Carpeta</string>
+ <string id="20337">Actor</string>
+ <string id="20338">Pel·lícula</string>
+ <string id="20339">Director</string>
+ <string id="20342">Pel·lícules</string>
+ <string id="20343">Sèries de TV</string>
+ <string id="20348">Directors</string>
+ <string id="20350">vots</string>
+ <string id="20358">Temporada %i</string>
+ <string id="20359">Episodi</string>
+ <string id="20360">Episodis</string>
+ <string id="20364">Serie de TV</string>
+ <string id="20366">* Totes les temporades</string>
+ <string id="20367">Amaga els ja vistos</string>
+ <string id="20370">* Amagat per evitar spoilers *</string>
+ <string id="20372">Imatge de la temporada</string>
+ <string id="20373">Temporada</string>
+ <string id="20374">Descarregant informació de la pel·lícula</string>
+ <string id="20376">Títol original</string>
+ <string id="20381">Especials</string>
+ <string id="20420">Mai</string>
+ <string id="20421">Si només hi ha una temporada</string>
+ <string id="20422">Sempre</string>
+ <string id="20423">Té trailer</string>
+ <string id="20424">Fals</string>
+ <string id="20428">Un sol fitxer</string>
+ <string id="20429">Separat</string>
+ <string id="21378">Activa 480p</string>
+ <string id="21379">Activa 720p</string>
+ <string id="21380">Activa 1080i</string>
+ <string id="21385">Obre</string>
+ <string id="21387">Ràpid</string>
+ <string id="21388">Silenciós</string>
+ <string id="21396">Capítol</string>
+ <string id="21400">conté</string>
+ <string id="21401">no conté</string>
+ <string id="21402">és</string>
+ <string id="21403">no és</string>
+ <string id="21404">comença amb</string>
+ <string id="21405">acaba amb</string>
+ <string id="21406">més gran que</string>
+ <string id="21407">inferior a</string>
+ <string id="21408">després</string>
+ <string id="21409">abans</string>
+ <string id="21410">al final</string>
+ <string id="21411">no al final</string>
+ <string id="21418">Multi-llenguatge</string>
+ <string id="21423">Nova regla...</string>
+ <string id="21425">totes les regles</string>
+ <string id="21427">Limita a</string>
+ <string id="21428">Sense límit</string>
+ <string id="21429">Ordena per</string>
+ <string id="21430">ascendent</string>
+ <string id="21431">descendent</string>
+ <string id="21435">Edita</string>
+ <string id="21445">Còdec de video</string>
+ <string id="21446">Còdec d'àudio</string>
+ <string id="21447">Idioma de l'àudio</string>
+ <string id="21448">Idioma dels subtítols</string>
+ <string id="21450">- Edita</string>
+ <string id="21805">Resolució</string>
+ <string id="21806">Comentari</string>
+ <string id="21807">Color/Blanc i Negre</string>
+ <string id="21820">Data/Hora</string>
+ <string id="21821">Descripció</string>
+ <string id="21822">Fabricant de la càmara</string>
+ <string id="21823">Model de la càmara</string>
+ <string id="21824">Comentari EXIF</string>
+ <string id="21826">Obertura</string>
+ <string id="21827">Longitud focal</string>
+ <string id="21828">Distància focal</string>
+ <string id="21829">Exposició</string>
+ <string id="21830">Temps d'exposició</string>
+ <string id="21832">Mètode d'exposició</string>
+ <string id="21833">Es va utilitzar flash</string>
+ <string id="21834">Balanç de blancs</string>
+ <string id="21837">ISO</string>
+ <string id="21838">Zoom digital</string>
+ <string id="21840">Latitud GPS</string>
+ <string id="21841">Longitud GPS</string>
+ <string id="21842">Altitud GPS</string>
+ <string id="21843">Orientació</string>
+ <string id="21861">Paraules clau</string>
+ <string id="21863">Autor</string>
+ <string id="21865">Instruccions especials</string>
+ <string id="21866">Categoria</string>
+ <string id="21873">Ciutat</string>
+ <string id="21874">Estat</string>
+ <string id="21875">País</string>
+ <string id="21877">Data de creació</string>
+ <string id="21879">Codi de país</string>
+ <string id="22031">- Mida</string>
+ <string id="22032">- Colors</string>
+ <string id="22040">blanc/verd</string>
+ <string id="22041">blanc/vermell</string>
+ <string id="22042">blanc/blau</string>
+ <string id="22043">negre/blanc</string>
+ <string id="22080">Escull</string>
+ <string id="22082">Més...</string>
+ <string id="24012">Subtítols</string>
+ <string id="24013">Lletres</string>
+ <string id="24018">Serveis</string>
+ <string id="24020">Configura</string>
+ <string id="24021">Desactiva</string>
+ <string id="24022">Activa</string>
+ <string id="24037">Desinstal·la</string>
+ <string id="24038">Instal·la</string>
+ <string id="24051">Versió:</string>
+ <string id="24053">Llicència:</string>
+ <string id="24054">Canvis</string>
+ <string id="24068">Actualització disponible</string>
+ <string id="24069">Actualitza</string>
+ <string id="33006">Avui</string>
+ <string id="33007">Dem</string>
+ <string id="33012">Curt</string>
+ <string id="33013">Llarg</string>
+ <string id="33018">Aquesta nit</string>
+ <string id="33019">La pròxima nit</string>
+ <string id="33021">Precipitació</string>
+ <string id="33029">Detalls</string>
+ <string id="33049">Alerta</string>
+ <string id="33050">Alertes</string>
+ <string id="33053">Configura el</string>
+ <string id="33056">Mira</string>
+ <string id="33057">Escolta</string>
+ <string id="33059">Configura el</string>
+ <string id="33061">Menú</string>
+ <string id="33063">Opcions</string>
+ <string id="33072">Veure Llegeixme</string>
+ <string id="33073">Veure els canvis d'aquesta versió</string>
+ <string id="33078">Pàgina següent</string>
+ <string id="33079">M'agrada</string>
+ <string id="33080">L'odio</string>
+ <string id="34100">Configuració dels altaveus</string>
+ <string id="34101">2.0</string>
+ <string id="34102">2.1</string>
+ <string id="34103">3.0</string>
+ <string id="34104">3.1</string>
+ <string id="34105">4.0</string>
+ <string id="34106">4.1</string>
+ <string id="34107">5.0</string>
+ <string id="34108">5.1</string>
+ <string id="34109">7.0</string>
+ <string id="34110">7.1</string>
+</strings>
<string id="62">joulu</string>
<string id="71">Pohjoisesta</string>
- <string id="72">Pohjoiskoillisesta</string>
+ <string id="72">Pohjoisen ja koillisen välistä</string>
<string id="73">Koillisesta</string>
- <string id="74">Itäkoillisesta</string>
+ <string id="74">Idän ja koillisen välistä</string>
<string id="75">Idästä</string>
- <string id="76">Itäkaakosta</string>
+ <string id="76">Idän ja kaakon välistä</string>
<string id="77">Kaakosta</string>
- <string id="78">Eteläkaakosta</string>
+ <string id="78">Etelän ja kaakon välistä</string>
<string id="79">Etelästä</string>
- <string id="80">Etelälounaasta</string>
- <string id="81">Lounaaasta</string>
- <string id="82">Länsilounaasta</string>
+ <string id="80">Etelän ja lounaan välistä</string>
+ <string id="81">Lounaasta</string>
+ <string id="82">Lännen ja lounaan välistä</string>
<string id="83">Lännestä</string>
- <string id="84">Länsiluoteesta</string>
+ <string id="84">Lännen ja luoteen välistä</string>
<string id="85">Luoteesta</string>
- <string id="86">Pohjoisluoteesta</string>
+ <string id="86">Pohjoisen ja luoteen välistä</string>
<string id="87">Vaihteleva</string>
<string id="98">Näytä: Autom.</string>
<string id="241">Kokoruutu #%d</string>
<string id="242">Ikkuna</string>
<string id="243">Päivitysnopeus</string>
- <string id="244">Kokonäyttö</string>
+ <string id="244">Kokoruutu</string>
<string id="245">Mitoitus: (%i,%i)->(%i,%i) (Zoomaus x%2.2f) Kuvasuhde:%2.2f:1 (Pikselit: %2.2f:1) (Pystysiirto: %2.2f)</string>
<string id="247">Skriptit</string>
<string id="372">enimmäkseen</string>
<string id="373">aurinkoista</string>
<string id="374">pilvistä</string>
- <string id="375">lunta</string>
- <string id="376">sataa</string>
- <string id="377">heikosti</string>
+ <string id="375">lumisadetta</string>
+ <string id="376">vesisadetta</string>
+ <string id="377">heikkoa</string>
<string id="378">aamupäivällä</string>
<string id="379">iltapäivällä</string>
<string id="380">sadekuuroja</string>
<string id="381">joitakin</string>
<string id="382">hajanaisia</string>
- <string id="383">tuulta</string>
+ <string id="383">tuulista</string>
<string id="384">voimakasta</string>
<string id="385">poutaa</string>
<string id="386">selkeää</string>
<string id="388">aamulla</string>
<string id="389">sadekuuro</string>
<string id="390">lumipyryä</string>
- <string id="391">matala</string>
- <string id="392">keskimääräinen</string>
- <string id="393">korkea</string>
+ <string id="391">Matala</string>
+ <string id="392">Keskimääräinen</string>
+ <string id="393">Korkea</string>
<string id="394">sumua</string>
<string id="395">usvaa</string>
<string id="396">Valitse sijainti</string>
<string id="431">Ei välimuistia</string>
<string id="432">Poista elokuva kirjastosta</string>
<string id="433">Haluatko varmasti poistaa kohteen[CR]'%s'?</string>
- <string id="434">%s nopeudella %i %s</string> <!--From <wind dir.> at <speed> <unit>-->
+ <string id="434">%s %i %s</string> <!--From <wind dir.> at <speed> <unit>-->
<string id="437">Siirrettävä levy</string>
<string id="438">Avataan tiedosto</string>
<string id="1417">rakeita</string>
<string id="1418">ukkosmyrskyjä</string>
<string id="1419">ukkoskuuroja</string>
- <string id="1420">keskimääräinen</string>
- <string id="1421">erittäin kovaa</string>
+ <string id="1420">Kohtalainen</string>
+ <string id="1421">Hyvin voimakas</string>
<string id="1422">tuulinen</string>
- <string id="1423">sumua</string>
+ <string id="1423">utua</string>
<!-- strings through to 1450 reserved for weather translation -->
+++ /dev/null
-CFLAGS += -D_LINUX
-
-LIB=libxbms.a
-
-SRCS=ccbuffer.c ccutil.c ccxclient.c ccxclientconnxbox.c ccxdiscover.c ccxencode.c ccxmltrans.c
-
-include ../../Makefile.include
-
+++ /dev/null
-// Place the code and data below here into the LIBXBMS section.
-#ifndef __GNUC__
-#pragma code_seg( "LIBXBMS" )
-#pragma data_seg( "LIBXBMS_RW" )
-#pragma bss_seg( "LIBXBMS_RW" )
-#pragma const_seg( "LIBXBMS_RD" )
-#pragma comment(linker, "/merge:LIBXBMS_RW=LIBXBMS")
-#pragma comment(linker, "/merge:LIBXBMS_RD=LIBXBMS")
-#endif
-/* -*- c -*-
- *
- * ----------------------------------------------------------------------
- * Buffer stuff.
- * ----------------------------------------------------------------------
- *
- * Copyright (c) 2002-2003 by PuhPuh
- *
- * This code is copyrighted property of the author. It can still
- * be used for any non-commercial purpose following conditions:
- *
- * 1) This copyright notice is not removed.
- * 2) Source code follows any distribution of the software
- * if possible.
- * 3) Copyright notice above is found in the documentation
- * of the distributed software.
- *
- * Any express or implied warranties are disclaimed. Author is
- * not liable for any direct or indirect damages caused by the use
- * of this software.
- *
- * ----------------------------------------------------------------------
- *
- * This code has been integrated into XBMC Media Center.
- * As such it can me copied, redistributed and modified under
- * the same conditions as the XBMC itself.
- *
- */
-
-
-#include "ccincludes.h"
-#include "ccbuffer.h"
-
-CcBuffer cc_buffer_allocate(void)
-{
- CcBuffer buffer;
-
- buffer = cc_xcalloc(1, sizeof (*buffer));
- return buffer;
-}
-
-void cc_buffer_free(CcBuffer buffer)
-{
- cc_buffer_uninit(buffer);
- cc_xfree(buffer);
-}
-
-void cc_buffer_init(CcBuffer buffer)
-{
- memset(buffer, 0, sizeof (*buffer));
-}
-
-void cc_buffer_uninit(CcBuffer buffer)
-{
- if (buffer != NULL)
- cc_xfree(buffer->data);
- memset(buffer, 0, sizeof (*buffer));
-}
-
-size_t cc_buffer_len(CcBuffer buffer)
-{
- return buffer->len;
-}
-
-unsigned char *cc_buffer_ptr(CcBuffer buffer)
-{
- return buffer->data;
-}
-
-void cc_buffer_append(CcBuffer buffer, const unsigned char *data, size_t len)
-{
- size_t ol;
-
- ol = cc_buffer_len(buffer);
- cc_buffer_append_space(buffer, len);
- memcpy(buffer->data + ol, data, len);
-}
-
-void cc_buffer_prepend(CcBuffer buffer, const unsigned char *data, size_t len)
-{
- size_t ol;
-
- ol = cc_buffer_len(buffer);
- cc_buffer_append_space(buffer, len);
- memmove(buffer->data + len, buffer->data, ol);
- memcpy(buffer->data, data, len);
-}
-
-void cc_buffer_append_space(CcBuffer buffer, size_t len)
-{
- if (len > 0)
- {
- if (buffer->data == NULL)
- {
- buffer->data = cc_xmalloc(len);
- buffer->len = 0;
- }
- else
- {
- buffer->data = cc_xrealloc(buffer->data, buffer->len + len);
- }
- buffer->len += len;
- }
-}
-
-void cc_buffer_append_string(CcBuffer buffer, const char *string)
-{
- if (*string != '\0')
- cc_buffer_append(buffer, (const unsigned char *)string, strlen(string));
-}
-
-void cc_buffer_prepend_string(CcBuffer buffer, const char *string)
-{
- if (*string != '\0')
- cc_buffer_prepend(buffer, (const unsigned char *)string, strlen(string));
-}
-
-void cc_buffer_consume(CcBuffer buffer, size_t len)
-{
- if (len > buffer->len)
- {
- cc_fatal("Buffer underflow.");
- }
- else if (len == 0)
- {
- /*NOTHING*/;
- }
- else if (len == buffer->len)
- {
- buffer->len = 0;
- }
- else
- {
- memmove(buffer->data, buffer->data + len, buffer->len - len);
- buffer->len -= len;
- }
-}
-
-void cc_buffer_consume_end(CcBuffer buffer, size_t len)
-{
- if (len > buffer->len)
- {
- cc_fatal("Buffer underflow.");
- }
- else if (len == 0)
- {
- /*NOTHING*/;
- }
- else if (len == buffer->len)
- {
- buffer->len = 0;
- }
- else
- {
- buffer->len -= len;
- }
-}
-
-void cc_buffer_clear(CcBuffer buffer)
-{
- buffer->len = 0;
-}
-
-void cc_buffer_steal(CcBuffer buffer, unsigned char **data, size_t *len)
-{
- buffer->data = cc_xrealloc(buffer->data, buffer->len + 1);
- buffer->data[buffer->len] = '\0';
- *data = buffer->data;
- if (len != NULL)
- *len = buffer->len;
- buffer->data = NULL;
- buffer->len = 0;
-}
-
-/* eof (ccbuffer.c) */
+++ /dev/null
-/* -*- c -*-
- *
- * ----------------------------------------------------------------------
- * Buffer stuff.
- * ----------------------------------------------------------------------
- *
- * Copyright (c) 2002-2003 by PuhPuh
- *
- * This code is copyrighted property of the author. It can still
- * be used for any non-commercial purpose following conditions:
- *
- * 1) This copyright notice is not removed.
- * 2) Source code follows any distribution of the software
- * if possible.
- * 3) Copyright notice above is found in the documentation
- * of the distributed software.
- *
- * Any express or implied warranties are disclaimed. Author is
- * not liable for any direct or indirect damages caused by the use
- * of this software.
- *
- * ----------------------------------------------------------------------
- *
- * This code has been integrated into XBMC Media Center.
- * As such it can me copied, redistributed and modified under
- * the same conditions as the XBMC itself.
- *
- */
-
-
-#ifndef CCBUFFER_H_INCLUDED
-#define CCBUFFER_H_INCLUDED 1
-
-struct CcBufferRec {
- unsigned char *data;
- size_t len;
-};
-
-typedef struct CcBufferRec *CcBuffer;
-typedef struct CcBufferRec CcBufferRec;
-
-CcBuffer cc_buffer_allocate(void);
-void cc_buffer_free(CcBuffer buffer);
-void cc_buffer_init(CcBuffer buffer);
-void cc_buffer_uninit(CcBuffer buffer);
-size_t cc_buffer_len(CcBuffer buffer);
-unsigned char *cc_buffer_ptr(CcBuffer buffer);
-void cc_buffer_append(CcBuffer buffer, const unsigned char *data, size_t len);
-void cc_buffer_append_space(CcBuffer buffer, size_t len);
-void cc_buffer_append_string(CcBuffer buffer, const char *string);
-void cc_buffer_consume(CcBuffer buffer, size_t len);
-void cc_buffer_consume_end(CcBuffer buffer, size_t len);
-void cc_buffer_clear(CcBuffer buffer);
-void cc_buffer_prepend(CcBuffer buffer, const unsigned char *data, size_t len);
-void cc_buffer_prepend_string(CcBuffer buffer, const char *string);
-void cc_buffer_steal(CcBuffer buffer, unsigned char **data, size_t *len);
-
-#endif /* CCBUFFER_H_INCLUDED */
-/* eof (ccbuffer.h) */
+++ /dev/null
-/* -*- c -*-
- *
- * ----------------------------------------------------------------------
- * Misc includes.
- * ----------------------------------------------------------------------
- *
- * Copyright (c) 2002-2003 by PuhPuh
- *
- * This code is copyrighted property of the author. It can still
- * be used for any non-commercial purpose following conditions:
- *
- * 1) This copyright notice is not removed.
- * 2) Source code follows any distribution of the software
- * if possible.
- * 3) Copyright notice above is found in the documentation
- * of the distributed software.
- *
- * Any express or implied warranties are disclaimed. Author is
- * not liable for any direct or indirect damages caused by the use
- * of this software.
- *
- * ----------------------------------------------------------------------
- *
- * This code has been integrated into XBMC Media Center.
- * As such it can me copied, redistributed and modified under
- * the same conditions as the XBMC itself.
- *
- */
-
-
-#ifndef CCINCLUDES_H_INCLUDED
-#define CCINCLUDES_H_INCLUDED 1
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <inttypes.h>
-
-#include "ccutil.h"
-
-#ifdef _XBOX
-#include <xtl.h>
-#elif defined(_LINUX)
-#include <unistd.h>
-#include <arpa/inet.h>
-#include <sys/socket.h>
-#include <sys/time.h>
-#include <inttypes.h>
-#include <netdb.h>
-#else
-#include <windows.h>
-#include <io.h>
-#include <time.h>
-#define snprintf _snprintf
-#endif /* _XBOX */
-
-#if defined(__FreeBSD__)
-#include <netinet/in.h>
-#endif
-
-//extern int errno;
-
-#ifndef PATH_MAX
-#define PATH_MAX 1024
-#endif /* ! PATH_MAX */
-
-#ifdef _LINUX
-#define CC_UINT_64_TYPE_NAME uint64_t
-#else
-#define CC_UINT_64_TYPE_NAME UINT64
-#endif
-#define CC_UINT_64_PRINTF_FORMAT "%lu"
-
-#endif /* CCINCLUDES_H_INCLUDED */
-/* eof (ccincludes.h) */
+++ /dev/null
-// Place the code and data below here into the LIBXBMS section.
-#ifndef __GNUC__
-#pragma code_seg( "LIBXBMS" )
-#pragma data_seg( "LIBXBMS_RW" )
-#pragma bss_seg( "LIBXBMS_RW" )
-#pragma const_seg( "LIBXBMS_RD" )
-#pragma comment(linker, "/merge:LIBXBMS_RW=LIBXBMS")
-#pragma comment(linker, "/merge:LIBXBMS_RD=LIBXBMS")
-#endif
-/* -*- c -*-
- *
- * ----------------------------------------------------------------------
- * Misc utilities.
- * ----------------------------------------------------------------------
- *
- * Copyright (c) 2002-2003 by PuhPuh
- *
- * This code is copyrighted property of the author. It can still
- * be used for any non-commercial purpose following conditions:
- *
- * 1) This copyright notice is not removed.
- * 2) Source code follows any distribution of the software
- * if possible.
- * 3) Copyright notice above is found in the documentation
- * of the distributed software.
- *
- * Any express or implied warranties are disclaimed. Author is
- * not liable for any direct or indirect damages caused by the use
- * of this software.
- *
- * ----------------------------------------------------------------------
- *
- * This code has been integrated into XBMC Media Center.
- * As such it can me copied, redistributed and modified under
- * the same conditions as the XBMC itself.
- *
- */
-
-
-#include "ccincludes.h"
-#include "ccutil.h"
-
-void cc_fatal(const char *m)
-{
-#if 0
- fprintf(stderr, "FATAL ERROR%s%s\n",
- (m != NULL) ? ": " : "",
- (m != NULL) ? m : "");
-#endif
- exit(-1);
-}
-
-void *cc_xmalloc(size_t n)
-{
- void *r;
-
- r = malloc(n);
- if (r == NULL)
- cc_fatal("Out of memory");
- return r;
-}
-
-void *cc_xcalloc(size_t n, size_t s)
-{
- void *r;
-
- r = calloc(n, s);
- if (r == NULL)
- cc_fatal("Out of memory");
- return r;
-}
-
-void *cc_xrealloc(void *o, size_t n)
-{
- void *r;
-
- r = realloc(o, n);
- if (r == NULL)
- cc_fatal("Out of memory");
- return r;
-}
-
-void *cc_xstrdup(const char *s)
-{
- char *r;
-
- r = strdup(s != NULL ? s : "");
- if (r == NULL)
- cc_fatal("Out of memory");
- return r;
-}
-
-void *cc_xmemdup(const void *s, size_t len)
-{
- unsigned char *r;
-
- r = cc_xmalloc(len + 1);
- r[len] = '\0';
- if (len > 0)
- memcpy(r, s, len);
- return (void *)r;
-}
-
-void cc_xfree(void *p)
-{
- if (p != NULL)
- free(p);
-}
-
-/* eof (ccutil.c) */
+++ /dev/null
-/* -*- c -*-
- *
- * ----------------------------------------------------------------------
- * Misc utilities.
- * ----------------------------------------------------------------------
- *
- * Copyright (c) 2002-2003 by PuhPuh
- *
- * This code is copyrighted property of the author. It can still
- * be used for any non-commercial purpose following conditions:
- *
- * 1) This copyright notice is not removed.
- * 2) Source code follows any distribution of the software
- * if possible.
- * 3) Copyright notice above is found in the documentation
- * of the distributed software.
- *
- * Any express or implied warranties are disclaimed. Author is
- * not liable for any direct or indirect damages caused by the use
- * of this software.
- *
- * ----------------------------------------------------------------------
- *
- * This code has been integrated into XBMC Media Center.
- * As such it can me copied, redistributed and modified under
- * the same conditions as the XBMC itself.
- *
- */
-
-
-#ifndef CCUTIL_H_INCLUDED
-#define CCUTIL_H_INCLUDED 1
-
-void cc_fatal(const char *m);
-void *cc_xmalloc(size_t n);
-void *cc_xcalloc(size_t n, size_t s);
-void *cc_xrealloc(void *o, size_t n);
-void *cc_xstrdup(const char *s);
-void *cc_xmemdup(const void *s, size_t len);
-void cc_xfree(void *p);
-
-struct CcStringListRec {
- char *s;
- struct CcStringListRec *next;
-};
-
-typedef struct CcStringListRec *CcStringList;
-
-#endif /* CCUTIL_H_INCLUDED */
-/* eof (ccutil.h) */
+++ /dev/null
-// Place the code and data below here into the LIBXBMS section.
-#ifndef __GNUC__
-#pragma code_seg( "LIBXBMS" )
-#pragma data_seg( "LIBXBMS_RW" )
-#pragma bss_seg( "LIBXBMS_RW" )
-#pragma const_seg( "LIBXBMS_RD" )
-#pragma comment(linker, "/merge:LIBXBMS_RW=LIBXBMS")
-#pragma comment(linker, "/merge:LIBXBMS_RD=LIBXBMS")
-#endif
-/* -*- c -*-
- *
- * ----------------------------------------------------------------------
- * CcXstream Client Library for XBMC Media Center
- * ----------------------------------------------------------------------
- *
- * Copyright (c) 2002-2003 by PuhPuh
- *
- * This code is copyrighted property of the author. It can still
- * be used for any non-commercial purpose following conditions:
- *
- * 1) This copyright notice is not removed.
- * 2) Source code follows any distribution of the software
- * if possible.
- * 3) Copyright notice above is found in the documentation
- * of the distributed software.
- *
- * Any express or implied warranties are disclaimed. Author is
- * not liable for any direct or indirect damages caused by the use
- * of this software.
- *
- * ----------------------------------------------------------------------
- *
- * This code has been integrated into XBMC Media Center.
- * As such it can me copied, redistributed and modified under
- * the same conditions as the XBMC itself.
- *
- */
-
-#include "ccincludes.h"
-#include "ccbuffer.h"
-#include "ccxclient.h"
-#include "ccxencode.h"
-
-#ifndef __GNUC__
-#pragma code_seg()
-#pragma data_seg()
-#pragma bss_seg()
-#pragma const_seg()
-#endif
-
-static unsigned long lNextId = 0;
-unsigned long next_id()
-{
-
- lNextId = lNextId + 1 % 0xfffff; /* 20 bits in maximum */
- if (lNextId == 0)
- lNextId++;
- return (lNextId << 12); /* Low 12 bits are zero */
-}
-
-#ifndef __GNUC__
-#pragma code_seg( "LIBXBMS" )
-#pragma data_seg( "LIBXBMS_RW" )
-#pragma bss_seg( "LIBXBMS_RW" )
-#pragma const_seg( "LIBXBMS_RD" )
-#pragma comment(linker, "/merge:LIBXBMS_RW=LIBXBMS")
-#pragma comment(linker, "/merge:LIBXBMS_RD=LIBXBMS")
-#endif
-
-CcXstreamClientError cc_xstream_client_version_handshake(CcXstreamServerConnection s)
-{
- unsigned char *c, x;
- CcBufferRec buf[1];
- char *hlp1, *hlp2, *hlp3;
- int i;
-
- cc_buffer_init(buf);
-
- for (i = 0; 1; i++)
- {
- if (i > 2048)
- {
- cc_buffer_uninit(buf);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- c = cc_xstream_client_read_data(s, 1, CCXSTREAM_CLIENT_TIMEOUT_SECONDS * 1000U);
- if (c == NULL)
- {
- cc_buffer_uninit(buf);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- x = c[0];
- cc_xfree(c);
- if (x == '\n')
- break;
- else if (x != '\r')
- cc_buffer_append(buf, &x, 1);
- }
- hlp1 = cc_xmemdup(cc_buffer_ptr(buf), cc_buffer_len(buf));
- cc_buffer_uninit(buf);
- /* OK, we parse the version string. Supported versions are between
- the first and the second space characters in the string.
- Versions are in the comma separated list. This code is somewhat
- spaghetti, but it does the trick and ensures that supported
- versions list contain string CC_XSTREAM_CLIENT_VERSION. The
- reason for complexity is that it can be the first or last item in
- the list. It can also be the only item in the list. And of
- course string we got from the server may be nonstandard and we
- can't crash because of it. */
- hlp2 = strchr(hlp1, ' ');
- if (hlp2 == NULL)
- {
- cc_xfree(hlp1);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- hlp2++;
- hlp3 = strchr(hlp2, ' ');
- if (hlp3 == NULL)
- {
- cc_xfree(hlp1);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- *hlp3 = '\0';
- while ((hlp3 = strrchr(hlp2, ',')) != NULL)
- {
- *hlp3 = '\0';
- hlp3++;
- if (strcmp(hlp3, CC_XSTREAM_CLIENT_VERSION) == 0)
- break;
- }
- if (hlp3 == NULL)
- {
- if (strcmp(hlp2, CC_XSTREAM_CLIENT_VERSION) != 0)
- {
- cc_xfree(hlp1);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- }
- cc_xfree(hlp1);
- if (cc_xstream_client_write_data(s, (unsigned char *)CC_XSTREAM_CLIENT_VERSION_STR "\n", strlen(CC_XSTREAM_CLIENT_VERSION_STR "\n"), 0) == 0)
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- return CC_XSTREAM_CLIENT_OK;
-}
-
-unsigned long cc_xstream_client_mkpacket_setcwd(const char *path,
- unsigned char **p, size_t *p_len)
-{
- CcBufferRec buf[1];
- unsigned int r;
-
- /* Initialize the buffer. */
- cc_buffer_init(buf);
- /* Encode packet */
- cc_xstream_buffer_encode_byte(buf, (unsigned char)CC_XSTREAM_XBMSP_PACKET_SETCWD);
- r = next_id();
- cc_xstream_buffer_encode_int(buf, r);
- cc_xstream_buffer_encode_string(buf, path);
- cc_xstream_buffer_encode_packet_length(buf);
- /* Return payload */
- *p = cc_xmemdup(cc_buffer_ptr(buf), cc_buffer_len(buf));
- *p_len = cc_buffer_len(buf);
- /* Free the buffer */
- cc_buffer_uninit(buf);
- /* Return the command id. */
- return r;
-}
-
-unsigned long cc_xstream_client_mkpacket_upcwd(unsigned long levels,
- unsigned char **p, size_t *p_len)
-{
- CcBufferRec buf[1];
- unsigned int r;
-
- /* Initialize the buffer. */
- cc_buffer_init(buf);
- /* Encode packet */
- cc_xstream_buffer_encode_byte(buf, (unsigned char)CC_XSTREAM_XBMSP_PACKET_UPCWD);
- r = next_id();
- cc_xstream_buffer_encode_int(buf, r);
- cc_xstream_buffer_encode_int(buf, levels);
- cc_xstream_buffer_encode_packet_length(buf);
- /* Return payload */
- *p = cc_xmemdup(cc_buffer_ptr(buf), cc_buffer_len(buf));
- *p_len = cc_buffer_len(buf);
- /* Free the buffer */
- cc_buffer_uninit(buf);
- /* Return the command id. */
- return r;
-}
-
-unsigned long cc_xstream_client_mkpacket_filelist_open(unsigned char **p, size_t *p_len)
-{
- CcBufferRec buf[1];
- unsigned int r;
-
- /* Initialize the buffer. */
- cc_buffer_init(buf);
- /* Encode packet */
- cc_xstream_buffer_encode_byte(buf, (unsigned char)CC_XSTREAM_XBMSP_PACKET_FILELIST_OPEN);
- r = next_id();
- cc_xstream_buffer_encode_int(buf, r);
- cc_xstream_buffer_encode_packet_length(buf);
- /* Return payload */
- *p = cc_xmemdup(cc_buffer_ptr(buf), cc_buffer_len(buf));
- *p_len = cc_buffer_len(buf);
- /* Free the buffer */
- cc_buffer_uninit(buf);
- /* Return the command id. */
- return r;
-}
-
-unsigned long cc_xstream_client_mkpacket_filelist_read(unsigned long handle,
- unsigned char **p, size_t *p_len)
-{
- CcBufferRec buf[1];
- unsigned int r;
-
- /* Initialize the buffer. */
- cc_buffer_init(buf);
- /* Encode packet */
- cc_xstream_buffer_encode_byte(buf, (unsigned char)CC_XSTREAM_XBMSP_PACKET_FILELIST_READ);
- r = next_id();
- cc_xstream_buffer_encode_int(buf, r);
- cc_xstream_buffer_encode_int(buf, handle);
- cc_xstream_buffer_encode_packet_length(buf);
- /* Return payload */
- *p = cc_xmemdup(cc_buffer_ptr(buf), cc_buffer_len(buf));
- *p_len = cc_buffer_len(buf);
- /* Free the buffer */
- cc_buffer_uninit(buf);
- /* Return the command id. */
- return r;
-}
-
-unsigned long cc_xstream_client_mkpacket_file_info(const char *path,
- unsigned char **p, size_t *p_len)
-{
- CcBufferRec buf[1];
- unsigned int r;
-
- /* Initialize the buffer. */
- cc_buffer_init(buf);
- /* Encode packet */
- cc_xstream_buffer_encode_byte(buf, (unsigned char)CC_XSTREAM_XBMSP_PACKET_FILE_INFO);
- r = next_id();
- cc_xstream_buffer_encode_int(buf, r);
- cc_xstream_buffer_encode_string(buf, path);
- cc_xstream_buffer_encode_packet_length(buf);
- /* Return payload */
- *p = cc_xmemdup(cc_buffer_ptr(buf), cc_buffer_len(buf));
- *p_len = cc_buffer_len(buf);
- /* Free the buffer */
- cc_buffer_uninit(buf);
- /* Return the command id. */
- return r;
-}
-
-unsigned long cc_xstream_client_mkpacket_file_open(const char *path,
- unsigned char **p, size_t *p_len)
-{
- CcBufferRec buf[1];
- unsigned int r;
-
- /* Initialize the buffer. */
- cc_buffer_init(buf);
- /* Encode packet */
- cc_xstream_buffer_encode_byte(buf, (unsigned char)CC_XSTREAM_XBMSP_PACKET_FILE_OPEN);
- r = next_id();
- cc_xstream_buffer_encode_int(buf, r);
- cc_xstream_buffer_encode_string(buf, path);
- cc_xstream_buffer_encode_packet_length(buf);
- /* Return payload */
- *p = cc_xmemdup(cc_buffer_ptr(buf), cc_buffer_len(buf));
- *p_len = cc_buffer_len(buf);
- /* Free the buffer */
- cc_buffer_uninit(buf);
- /* Return the command id. */
- return r;
-}
-
-unsigned long cc_xstream_client_mkpacket_file_read(unsigned long handle, size_t len,
- unsigned char **p, size_t *p_len)
-{
- CcBufferRec buf[1];
- unsigned int r;
-
- /* Initialize the buffer. */
- cc_buffer_init(buf);
- /* Encode packet */
- cc_xstream_buffer_encode_byte(buf, (unsigned char)CC_XSTREAM_XBMSP_PACKET_FILE_READ);
- r = next_id();
- cc_xstream_buffer_encode_int(buf, r);
- cc_xstream_buffer_encode_int(buf, handle);
- cc_xstream_buffer_encode_int(buf, len);
- cc_xstream_buffer_encode_packet_length(buf);
- /* Return payload */
- *p = cc_xmemdup(cc_buffer_ptr(buf), cc_buffer_len(buf));
- *p_len = cc_buffer_len(buf);
- /* Free the buffer */
- cc_buffer_uninit(buf);
- /* Return the command id. */
- return r;
-}
-
-unsigned long cc_xstream_client_mkpacket_seek(unsigned long handle,
- int seek_type, CC_UINT_64_TYPE_NAME bytes,
- unsigned char **p, size_t *p_len)
-{
- CcBufferRec buf[1];
- unsigned int r;
-
- /* Initialize the buffer. */
- cc_buffer_init(buf);
- /* Encode packet */
- cc_xstream_buffer_encode_byte(buf, (unsigned char)CC_XSTREAM_XBMSP_PACKET_FILE_SEEK);
- r = next_id();
- cc_xstream_buffer_encode_int(buf, r);
- cc_xstream_buffer_encode_int(buf, handle);
- cc_xstream_buffer_encode_byte(buf, (unsigned char)seek_type);
- cc_xstream_buffer_encode_int64(buf, bytes);
- cc_xstream_buffer_encode_packet_length(buf);
- /* Return payload */
- *p = cc_xmemdup(cc_buffer_ptr(buf), cc_buffer_len(buf));
- *p_len = cc_buffer_len(buf);
- /* Free the buffer */
- cc_buffer_uninit(buf);
- /* Return the command id. */
- return r;
-}
-
-unsigned long cc_xstream_client_mkpacket_close(unsigned long handle,
- unsigned char **p, size_t *p_len)
-{
- CcBufferRec buf[1];
- unsigned int r;
-
- /* Initialize the buffer. */
- cc_buffer_init(buf);
- /* Encode packet */
- cc_xstream_buffer_encode_byte(buf, (unsigned char)CC_XSTREAM_XBMSP_PACKET_CLOSE);
- r = next_id();
- cc_xstream_buffer_encode_int(buf, r);
- cc_xstream_buffer_encode_int(buf, handle);
- cc_xstream_buffer_encode_packet_length(buf);
- /* Return payload */
- *p = cc_xmemdup(cc_buffer_ptr(buf), cc_buffer_len(buf));
- *p_len = cc_buffer_len(buf);
- /* Free the buffer */
- cc_buffer_uninit(buf);
- /* Return the command id. */
- return r;
-}
-
-unsigned long cc_xstream_client_mkpacket_close_all(unsigned char **p, size_t *p_len)
-{
- CcBufferRec buf[1];
- unsigned int r;
-
- /* Initialize the buffer. */
- cc_buffer_init(buf);
- /* Encode packet */
- cc_xstream_buffer_encode_byte(buf, (unsigned char)CC_XSTREAM_XBMSP_PACKET_CLOSE_ALL);
- r = next_id();
- cc_xstream_buffer_encode_int(buf, r);
- cc_xstream_buffer_encode_packet_length(buf);
- /* Return payload */
- *p = cc_xmemdup(cc_buffer_ptr(buf), cc_buffer_len(buf));
- *p_len = cc_buffer_len(buf);
- /* Free the buffer */
- cc_buffer_uninit(buf);
- /* Return the command id. */
- return r;
-}
-
-unsigned long cc_xstream_client_mkpacket_setconfoption(const char *option,
- const char *value,
- unsigned char **p, size_t *p_len)
-{
- CcBufferRec buf[1];
- unsigned int r;
-
- /* Initialize the buffer. */
- cc_buffer_init(buf);
- /* Encode packet */
- cc_xstream_buffer_encode_byte(buf, (unsigned char)CC_XSTREAM_XBMSP_PACKET_SET_CONFIGURATION_OPTION);
- r = next_id();
- cc_xstream_buffer_encode_int(buf, r);
- cc_xstream_buffer_encode_string(buf, option);
- cc_xstream_buffer_encode_string(buf, value);
- cc_xstream_buffer_encode_packet_length(buf);
- /* Return payload */
- *p = cc_xmemdup(cc_buffer_ptr(buf), cc_buffer_len(buf));
- *p_len = cc_buffer_len(buf);
- /* Free the buffer */
- cc_buffer_uninit(buf);
- /* Return the command id. */
- return r;
-}
-
-unsigned long cc_xstream_client_mkpacket_authentication_init(const char *method,
- unsigned char **p, size_t *p_len)
-{
- CcBufferRec buf[1];
- unsigned int r;
-
- /* Initialize the buffer. */
- cc_buffer_init(buf);
- /* Encode packet */
- cc_xstream_buffer_encode_byte(buf, (unsigned char)CC_XSTREAM_XBMSP_PACKET_AUTHENTICATION_INIT);
- r = next_id();
- cc_xstream_buffer_encode_int(buf, r);
- cc_xstream_buffer_encode_string(buf, method);
- cc_xstream_buffer_encode_packet_length(buf);
- /* Return payload */
- *p = cc_xmemdup(cc_buffer_ptr(buf), cc_buffer_len(buf));
- *p_len = cc_buffer_len(buf);
- /* Free the buffer */
- cc_buffer_uninit(buf);
- /* Return the command id. */
- return r;
-}
-
-unsigned long cc_xstream_client_mkpacket_authenticate_password(unsigned long handle,
- const char *user_id,
- const char *password,
- unsigned char **p, size_t *p_len)
-{
- CcBufferRec buf[1];
- unsigned int r;
-
- /* Initialize the buffer. */
- cc_buffer_init(buf);
- /* Encode packet */
- cc_xstream_buffer_encode_byte(buf, (unsigned char)CC_XSTREAM_XBMSP_PACKET_AUTHENTICATE);
- r = next_id();
- cc_xstream_buffer_encode_int(buf, r);
- cc_xstream_buffer_encode_int(buf, handle);
- cc_xstream_buffer_encode_string(buf, user_id);
- cc_xstream_buffer_encode_string(buf, password);
- cc_xstream_buffer_encode_packet_length(buf);
- /* Return payload */
- *p = cc_xmemdup(cc_buffer_ptr(buf), cc_buffer_len(buf));
- *p_len = cc_buffer_len(buf);
- /* Free the buffer */
- cc_buffer_uninit(buf);
- /* Return the command id. */
- return r;
-}
-
-unsigned long cc_xstream_client_mkpacket_server_discovery(unsigned char **p, size_t *p_len)
-{
- CcBufferRec buf[1];
- unsigned int r;
-
- /* Initialize the buffer. */
- cc_buffer_init(buf);
- /* Encode packet. */
- cc_xstream_buffer_encode_byte(buf, (unsigned char)CC_XSTREAM_XBMSP_PACKET_SERVER_DISCOVERY_QUERY);
- r = next_id();
- cc_xstream_buffer_encode_int(buf, r);
- cc_xstream_buffer_encode_string(buf, CC_XSTREAM_CLIENT_VERSION_STR);
- cc_xstream_buffer_encode_packet_length(buf);
- /* Return payload */
- *p = cc_xmemdup(cc_buffer_ptr(buf), cc_buffer_len(buf));
- *p_len = cc_buffer_len(buf);
- /* Free the buffer */
- cc_buffer_uninit(buf);
- /* Return the command id. */
- return r;
-}
-
-void cc_xstream_client_reply_packet_free(CcXstreamReplyPacket packet)
-{
- if (packet != NULL)
- {
- cc_xfree(packet->string1);
- cc_xfree(packet->string2);
- }
- cc_xfree(packet);
-}
-
-CcXstreamReplyPacket cc_xstream_client_reply_packet_parse(const unsigned char *packet,
- size_t packet_len)
-{
- CcXstreamPacket pt;
- unsigned long id, handle, err;
- unsigned char *s1, *s2;
- size_t sl1, sl2;
- CcXstreamReplyPacket r;
-
- if (packet_len < 5)
- return NULL;
-
- id = cc_xstream_decode_int(packet + 1);
-
- switch (packet[0])
- {
- case CC_XSTREAM_XBMSP_PACKET_OK:
- if (packet_len != 5)
- return NULL;
- pt = CC_XSTREAM_XBMSP_PACKET_OK;
- s1 = s2 = NULL;
- sl1 = sl2 = 0;
- err = handle = 0;
- break;
-
- case CC_XSTREAM_XBMSP_PACKET_ERROR:
- if (packet_len < 10)
- return NULL;
- pt = CC_XSTREAM_XBMSP_PACKET_ERROR;
- err = packet[5];
- s1 = s2 = NULL;
- sl1 = sl2 = 0;
- handle = 0;
- break;
-
- case CC_XSTREAM_XBMSP_PACKET_HANDLE:
- if (packet_len != 9)
- return NULL;
- pt = CC_XSTREAM_XBMSP_PACKET_HANDLE;
- handle = cc_xstream_decode_int(packet + 5);
- s1 = s2 = NULL;
- sl1 = sl2 = 0;
- err = 0;
- break;
-
- case CC_XSTREAM_XBMSP_PACKET_FILE_DATA:
- pt = CC_XSTREAM_XBMSP_PACKET_FILE_DATA;
- sl1 = cc_xstream_decode_int(packet + 5);
- if (packet_len < (sl1 + 13))
- return NULL;
- sl2 = cc_xstream_decode_int(packet + 9 + sl1);
- if (packet_len != (13 + sl1 + sl2))
- return NULL;
- s1 = cc_xmemdup(packet + 9, sl1);
- s2 = cc_xmemdup(packet + 13 + sl1, sl2);
- err = handle = 0;
- break;
-
- case CC_XSTREAM_XBMSP_PACKET_FILE_CONTENTS:
- if (packet_len < 5)
- return NULL;
- pt = CC_XSTREAM_XBMSP_PACKET_FILE_CONTENTS;
- sl1 = cc_xstream_decode_int(packet + 5);
- if (packet_len != (sl1 + 9))
- return NULL;
- s1 = cc_xmemdup(packet + 9, sl1);
- s2 = NULL;
- sl2 = 0;
- err = handle = 0;
- break;
-
- default:
- return NULL;
- }
- r = cc_xcalloc(1, sizeof (*r));
- r->type = pt;
- r->id = id;
- r->handle = handle;
- r->error = err;
- r->string1 = s1;
- r->string2 = s2;
- r->string1_len = sl1;
- r->string2_len = sl2;
- return r;
-}
-
-CcXstreamClientError cc_xstream_client_reply_packet_read(CcXstreamServerConnection s,
- CcXstreamReplyPacket *packet)
-{
- unsigned char *lb, *pb;
- size_t len;
- CcXstreamReplyPacket p;
-
- if ((lb = cc_xstream_client_read_data(s, 4, CCXSTREAM_CLIENT_TIMEOUT_SECONDS * 1000U)) == NULL)
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- len = cc_xstream_decode_int(lb);
- cc_xfree(lb);
- if (len > 0x20000)
- {
- fprintf(stderr, "Too long packet (len=%u)\n", (unsigned int)len);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- if ((pb = cc_xstream_client_read_data(s, len, CCXSTREAM_CLIENT_TIMEOUT_SECONDS * 1000U)) == NULL)
- {
- free(pb);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- p = cc_xstream_client_reply_packet_parse(pb, len);
- cc_xfree(pb);
- if (p == NULL)
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- *packet = p;
- return CC_XSTREAM_CLIENT_OK;
-}
-
-CcXstreamClientError cc_xstream_client_setcwd(CcXstreamServerConnection s,
- const char *path)
-{
- unsigned char *pb;
- size_t pb_len;
- unsigned long id;
- CcXstreamReplyPacket rp;
-
- id = cc_xstream_client_mkpacket_setcwd(path, &pb, &pb_len);
- if (cc_xstream_client_write_data(s, pb, pb_len, 0) == 0)
- {
- cc_xfree(pb);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- cc_xfree(pb);
- if (cc_xstream_client_reply_packet_read(s, &rp) != CC_XSTREAM_CLIENT_OK)
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- if (rp->id != id)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_OK)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_OK;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_ERROR)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_COMMAND_FAILED;
- }
- else
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- /*NOTREACHED*/
-}
-
-CcXstreamClientError cc_xstream_client_upcwd(CcXstreamServerConnection s,
- unsigned long levels)
-{
- unsigned char *pb;
- size_t pb_len;
- unsigned long id;
- CcXstreamReplyPacket rp;
-
- id = cc_xstream_client_mkpacket_upcwd(levels, &pb, &pb_len);
- if (cc_xstream_client_write_data(s, pb, pb_len, 0) == 0)
- {
- cc_xfree(pb);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- cc_xfree(pb);
- if (cc_xstream_client_reply_packet_read(s, &rp) != CC_XSTREAM_CLIENT_OK)
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- if (rp->id != id)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_OK)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_OK;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_ERROR)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_COMMAND_FAILED;
- }
- else
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- /*NOTREACHED*/
-}
-
-
-CcXstreamClientError cc_xstream_client_close(CcXstreamServerConnection s,
- unsigned long handle)
-{
- unsigned char *pb;
- size_t pb_len;
- unsigned long id;
- CcXstreamReplyPacket rp;
-
- id = cc_xstream_client_mkpacket_close(handle, &pb, &pb_len);
- if (cc_xstream_client_write_data(s, pb, pb_len, 0) == 0)
- {
- cc_xfree(pb);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- cc_xfree(pb);
- if (cc_xstream_client_reply_packet_read(s, &rp) != CC_XSTREAM_CLIENT_OK)
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- if (rp->id != id)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_OK)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_OK;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_ERROR)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_COMMAND_FAILED;
- }
- else
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- /*NOTREACHED*/
-}
-
-CcXstreamClientError cc_xstream_client_close_all(CcXstreamServerConnection s)
-{
- unsigned char *pb;
- size_t pb_len;
- unsigned long id;
- CcXstreamReplyPacket rp;
-
- id = cc_xstream_client_mkpacket_close_all(&pb, &pb_len);
- if (cc_xstream_client_write_data(s, pb, pb_len, 0) == 0)
- {
- cc_xfree(pb);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- cc_xfree(pb);
- if (cc_xstream_client_reply_packet_read(s, &rp) != CC_XSTREAM_CLIENT_OK)
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- if (rp->id != id)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_OK)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_OK;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_ERROR)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_COMMAND_FAILED;
- }
- else
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- /*NOTREACHED*/
-}
-
-CcXstreamClientError cc_xstream_client_file_open(CcXstreamServerConnection s,
- const char *path,
- unsigned long *handle)
-{
- unsigned char *pb;
- size_t pb_len;
- unsigned long id;
- CcXstreamReplyPacket rp;
-
- id = cc_xstream_client_mkpacket_file_open(path, &pb, &pb_len);
- if (cc_xstream_client_write_data(s, pb, pb_len, 0) == 0)
- {
- cc_xfree(pb);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- cc_xfree(pb);
- if (cc_xstream_client_reply_packet_read(s, &rp) != CC_XSTREAM_CLIENT_OK)
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- if (rp->id != id)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_HANDLE)
- {
- *handle = rp->handle;
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_OK;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_ERROR)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_COMMAND_FAILED;
- }
- else
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- /*NOTREACHED*/
-}
-
-CcXstreamClientError cc_xstream_client_file_read(CcXstreamServerConnection s,
- unsigned long handle,
- size_t len,
- unsigned char **data,
- size_t *data_len)
-{
- unsigned char *pb;
- size_t pb_len;
- unsigned long id;
- CcXstreamReplyPacket rp;
-
- id = cc_xstream_client_mkpacket_file_read(handle, len, &pb, &pb_len);
- if (cc_xstream_client_write_data(s, pb, pb_len, 0) == 0)
- {
- cc_xfree(pb);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- cc_xfree(pb);
- if (cc_xstream_client_reply_packet_read(s, &rp) != CC_XSTREAM_CLIENT_OK)
- {
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- if (rp->id != id)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_FILE_CONTENTS)
- {
- *data = rp->string1;
- *data_len = rp->string1_len;
- rp->string1 = NULL;
- rp->string1_len = 0;
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_OK;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_ERROR)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_COMMAND_FAILED;
- }
- else
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- /*NOTREACHED*/
-}
-
-CcXstreamClientError cc_xstream_client_dir_open(CcXstreamServerConnection s,
- unsigned long *handle)
-{
- unsigned char *pb;
- size_t pb_len;
- unsigned long id;
- CcXstreamReplyPacket rp;
-
- id = cc_xstream_client_mkpacket_filelist_open(&pb, &pb_len);
- if (cc_xstream_client_write_data(s, pb, pb_len, 0) == 0)
- {
- cc_xfree(pb);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- cc_xfree(pb);
- if (cc_xstream_client_reply_packet_read(s, &rp) != CC_XSTREAM_CLIENT_OK)
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- if (rp->id != id)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_HANDLE)
- {
- *handle = rp->handle;
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_OK;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_ERROR)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_COMMAND_FAILED;
- }
- else
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- /*NOTREACHED*/
-}
-
-CcXstreamClientError cc_xstream_client_dir_read(CcXstreamServerConnection s,
- unsigned long handle,
- char **name,
- char **info)
-{
- unsigned char *pb;
- size_t pb_len;
- unsigned long id;
- CcXstreamReplyPacket rp;
-
- id = cc_xstream_client_mkpacket_filelist_read(handle, &pb, &pb_len);
- if (cc_xstream_client_write_data(s, pb, pb_len, 0) == 0)
- {
- cc_xfree(pb);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- cc_xfree(pb);
- if (cc_xstream_client_reply_packet_read(s, &rp) != CC_XSTREAM_CLIENT_OK)
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- if (rp->id != id)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_FILE_DATA)
- {
- *name = (char *)rp->string1;
- *info = (char *)rp->string2;
- rp->string1 = NULL;
- rp->string1_len = 0;
- rp->string2 = NULL;
- rp->string2_len = 0;
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_OK;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_ERROR)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_COMMAND_FAILED;
- }
- else
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- /*NOTREACHED*/
-}
-
-CcXstreamClientError cc_xstream_client_file_forward(CcXstreamServerConnection s,
- unsigned long handle,
- CC_UINT_64_TYPE_NAME bytes,
- int seek_eof_if_fails)
-{
- unsigned char *pb;
- size_t pb_len;
- unsigned long id;
- CcXstreamReplyPacket rp;
-
- id = cc_xstream_client_mkpacket_seek(handle, 2, bytes, &pb, &pb_len);
- if (cc_xstream_client_write_data(s, pb, pb_len, 0) == 0)
- {
- cc_xfree(pb);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- cc_xfree(pb);
- if (cc_xstream_client_reply_packet_read(s, &rp) != CC_XSTREAM_CLIENT_OK)
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- if (rp->id != id)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_OK)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_OK;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_ERROR)
- {
- cc_xstream_client_reply_packet_free(rp);
- if (seek_eof_if_fails)
- return cc_xstream_client_file_end(s, handle);
- else
- return CC_XSTREAM_CLIENT_COMMAND_FAILED;
- }
- else
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- /*NOTREACHED*/
-}
-
-CcXstreamClientError cc_xstream_client_file_backwards(CcXstreamServerConnection s,
- unsigned long handle,
- CC_UINT_64_TYPE_NAME bytes,
- int rewind_if_fails)
-{
- unsigned char *pb;
- size_t pb_len;
- unsigned long id;
- CcXstreamReplyPacket rp;
-
- id = cc_xstream_client_mkpacket_seek(handle, 3, bytes, &pb, &pb_len);
- if (cc_xstream_client_write_data(s, pb, pb_len, 0) == 0)
- {
- cc_xfree(pb);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- cc_xfree(pb);
- if (cc_xstream_client_reply_packet_read(s, &rp) != CC_XSTREAM_CLIENT_OK)
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- if (rp->id != id)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_OK)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_OK;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_ERROR)
- {
- cc_xstream_client_reply_packet_free(rp);
- if (rewind_if_fails)
- return cc_xstream_client_file_rewind(s, handle);
- else
- return CC_XSTREAM_CLIENT_COMMAND_FAILED;
- }
- else
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- /*NOTREACHED*/
-}
-
-CcXstreamClientError cc_xstream_client_file_rewind(CcXstreamServerConnection s,
- unsigned long handle)
-{
- unsigned char *pb;
- size_t pb_len;
- unsigned long id;
- CcXstreamReplyPacket rp;
-
- id = cc_xstream_client_mkpacket_seek(handle, 0, 0, &pb, &pb_len);
- if (cc_xstream_client_write_data(s, pb, pb_len, 0) == 0)
- {
- cc_xfree(pb);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- cc_xfree(pb);
- if (cc_xstream_client_reply_packet_read(s, &rp) != CC_XSTREAM_CLIENT_OK)
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- if (rp->id != id)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_OK)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_OK;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_ERROR)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_COMMAND_FAILED;
- }
- else
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- /*NOTREACHED*/
-}
-
-CcXstreamClientError cc_xstream_client_file_end(CcXstreamServerConnection s,
- unsigned long handle)
-{
- unsigned char *pb;
- size_t pb_len;
- unsigned long id;
- CcXstreamReplyPacket rp;
-
- id = cc_xstream_client_mkpacket_seek(handle, 1, 0, &pb, &pb_len);
- if (cc_xstream_client_write_data(s, pb, pb_len, 0) == 0)
- {
- cc_xfree(pb);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- cc_xfree(pb);
- if (cc_xstream_client_reply_packet_read(s, &rp) != CC_XSTREAM_CLIENT_OK)
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- if (rp->id != id)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_OK)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_OK;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_ERROR)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_COMMAND_FAILED;
- }
- else
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- /*NOTREACHED*/
-}
-
-CcXstreamClientError cc_xstream_client_file_info(CcXstreamServerConnection s,
- const char *path,
- char **info)
-{
- unsigned char *pb;
- size_t pb_len;
- unsigned long id;
- CcXstreamReplyPacket rp;
-
- id = cc_xstream_client_mkpacket_file_info(path, &pb, &pb_len);
- if (cc_xstream_client_write_data(s, pb, pb_len, 0) == 0)
- {
- cc_xfree(pb);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- cc_xfree(pb);
- if (cc_xstream_client_reply_packet_read(s, &rp) != CC_XSTREAM_CLIENT_OK)
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- if (rp->id != id)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_FILE_DATA)
- {
- *info = (char *)rp->string2;
- rp->string2 = NULL;
- rp->string2_len = 0;
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_OK;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_ERROR)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_COMMAND_FAILED;
- }
- else
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- /*NOTREACHED*/
-}
-
-CcXstreamClientError cc_xstream_client_set_configuration_option(CcXstreamServerConnection s,
- const char *option,
- const char *value)
-{
- unsigned char *pb;
- size_t pb_len;
- unsigned long id;
- CcXstreamReplyPacket rp;
-
- id = cc_xstream_client_mkpacket_setconfoption(option, value, &pb, &pb_len);
- if (cc_xstream_client_write_data(s, pb, pb_len, 0) == 0)
- {
- cc_xfree(pb);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- cc_xfree(pb);
- if (cc_xstream_client_reply_packet_read(s, &rp) != CC_XSTREAM_CLIENT_OK)
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- if (rp->id != id)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_OK)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_OK;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_ERROR)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_COMMAND_FAILED;
- }
- else
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- /*NOTREACHED*/
-}
-
-CcXstreamClientError cc_xstream_client_password_authenticate(CcXstreamServerConnection s,
- const char *user_id,
- const char *password)
-{
- unsigned char *pb;
- size_t pb_len;
- unsigned long id;
- CcXstreamReplyPacket rp;
- unsigned int handle;
-
- id = cc_xstream_client_mkpacket_authentication_init("password", &pb, &pb_len);
- if (cc_xstream_client_write_data(s, pb, pb_len, 0) == 0)
- {
- cc_xfree(pb);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- cc_xfree(pb);
- if (cc_xstream_client_reply_packet_read(s, &rp) != CC_XSTREAM_CLIENT_OK)
- {
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- if (rp->id != id)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_HANDLE)
- {
- handle = rp->handle;
- cc_xstream_client_reply_packet_free(rp);
- }
- else
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- id = cc_xstream_client_mkpacket_authenticate_password(handle, user_id, password, &pb, &pb_len);
- if (cc_xstream_client_write_data(s, pb, pb_len, 0) == 0)
- {
- cc_xfree(pb);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- cc_xfree(pb);
- if (cc_xstream_client_reply_packet_read(s, &rp) != CC_XSTREAM_CLIENT_OK)
- {
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- if (rp->id != id)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_OK)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_OK;
- }
- else if (rp->type == CC_XSTREAM_XBMSP_PACKET_ERROR)
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_COMMAND_FAILED;
- }
- else
- {
- cc_xstream_client_reply_packet_free(rp);
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- }
- /*NOTREACHED*/
-}
-
-/* eof (ccxclient.c) */
+++ /dev/null
-/* -*- c -*-
- *
- * ----------------------------------------------------------------------
- * CcXstream Client Library for XBMC Media Center
- * ----------------------------------------------------------------------
- *
- * Copyright (c) 2002-2003 by PuhPuh
- *
- * This code is copyrighted property of the author. It can still
- * be used for any non-commercial purpose following conditions:
- *
- * 1) This copyright notice is not removed.
- * 2) Source code follows any distribution of the software
- * if possible.
- * 3) Copyright notice above is found in the documentation
- * of the distributed software.
- *
- * Any express or implied warranties are disclaimed. Author is
- * not liable for any direct or indirect damages caused by the use
- * of this software.
- *
- * ----------------------------------------------------------------------
- *
- * This code has been integrated into XBMC Media Center.
- * As such it can me copied, redistributed and modified under
- * the same conditions as the XBMC itself.
- *
- */
-
-
-#ifndef CC_XCLIENT_H_INCLUDED
-#define CC_XCLIENT_H_INCLUDED 1
-
-#include "ccxversion.h"
-#include "ccxpacket.h"
-
-/* The definition of CcXstreamServerConnection is system dependent.
- In unix like systems this is simply int that is a file descriptor
- of the connection socket. */
-#ifdef _XBOX
-typedef SOCKET CcXstreamServerConnection;
-#else /* _XBOX */
-typedef int CcXstreamServerConnection;
-#endif /* _XBOX */
-
-typedef struct CcXstreamReplyPacketRec *CcXstreamReplyPacket;
-
-struct CcXstreamReplyPacketRec {
- CcXstreamPacket type;
- unsigned long id;
- unsigned long handle;
- unsigned long error;
- unsigned char *string1;
- size_t string1_len;
- unsigned char *string2;
- size_t string2_len;
-};
-
-typedef enum {
- /* Command was succesful and session can continue. */
- CC_XSTREAM_CLIENT_OK = 0,
- /* Command was failed but session is ok. */
- CC_XSTREAM_CLIENT_COMMAND_FAILED = 1,
- /* Command was probably failed and session is broken. */
- CC_XSTREAM_CLIENT_FATAL_ERROR = 2,
- /* Server host not found. */
- CC_XSTREAM_CLIENT_SERVER_NOT_FOUND = 3,
- /* Server host found but connection attempt failed. */
- CC_XSTREAM_CLIENT_SERVER_CONNECTION_FAILED = 4
-} CcXstreamClientError;
-
-CcXstreamClientError cc_xstream_client_connect(const char *host,
- int port,
- CcXstreamServerConnection *s);
-
-CcXstreamClientError cc_xstream_client_disconnect(CcXstreamServerConnection s);
-
-unsigned char *cc_xstream_client_read_data(CcXstreamServerConnection s,
- size_t len,
- unsigned long timeout_ms);
-int cc_xstream_client_write_data(CcXstreamServerConnection s,
- unsigned char *buf,
- size_t len,
- unsigned long timeout_ms);
-
-/* Make a packet that can be sent to the server directly. Return
- value is an operation identifier that is selecte by the client
- library and embedded into the packet. Server always returns a
- packet with same id number. This is a low level interface that may
- be used, if fully asynchronous client is needed. */
-
-CcXstreamClientError cc_xstream_client_version_handshake(CcXstreamServerConnection s);
-
-unsigned long cc_xstream_client_mkpacket_setcwd(const char *path,
- unsigned char **p, size_t *p_len);
-
-unsigned long cc_xstream_client_mkpacket_upcwd(unsigned long levels,
- unsigned char **p, size_t *p_len);
-
-unsigned long cc_xstream_client_mkpacket_filelist_open(unsigned char **p, size_t *p_len);
-
-unsigned long cc_xstream_client_mkpacket_filelost_read(unsigned long handle,
- unsigned char **p, size_t *p_len);
-
-unsigned long cc_xstream_client_mkpacket_file_info(const char *path,
- unsigned char **p, size_t *p_len);
-
-unsigned long cc_xstream_client_mkpacket_file_open(const char *path,
- unsigned char **p, size_t *p_len);
-
-unsigned long cc_xstream_client_mkpacket_file_read(unsigned long handle, size_t len,
- unsigned char **p, size_t *p_len);
-
-unsigned long cc_xstream_client_mkpacket_seek(unsigned long handle,
- int seek_type, CC_UINT_64_TYPE_NAME bytes,
- unsigned char **p, size_t *p_len);
-
-unsigned long cc_xstream_client_mkpacket_close(unsigned long handle,
- unsigned char **p, size_t *p_len);
-
-unsigned long cc_xstream_client_mkpacket_close_all(unsigned char **p, size_t *p_len);
-
-unsigned long cc_xstream_client_mkpacket_setconfoption(const char *option,
- const char *value,
- unsigned char **p, size_t *p_len);
-
-unsigned long cc_xstream_client_mkpacket_authentication_init(const char *method,
- unsigned char **p, size_t *p_len);
-
-unsigned long cc_xstream_client_mkpacket_authenticate_password(unsigned long handle,
- const char *user_id,
- const char *password,
- unsigned char **p, size_t *p_len);
-
-unsigned long cc_xstream_client_mkpacket_server_discovery(unsigned char **p, size_t *p_len);
-
-
-/* Packet reading and parsing fuctionality is also quite low level.
- It is mainly needed for applications that implement fully
- asynchronous protocol session. */
-
-/* Packet is passed to this function without length field. */
-CcXstreamReplyPacket cc_xstream_client_reply_packet_parse(const unsigned char *packet,
- size_t packet_len);
-
-/* Read a packet from the socket and parse it. */
-CcXstreamClientError cc_xstream_client_reply_packet_read(CcXstreamServerConnection s,
- CcXstreamReplyPacket *packet);
-
-/* Free the packet. */
-void cc_xstream_client_reply_packet_free(CcXstreamReplyPacket packet);
-
-/* Following interfaces provide a synchronous interface to the server.
- If this interface is used, the user can't send his own commands
- directly bypassing this interface. */
-
-CcXstreamClientError cc_xstream_client_setcwd(CcXstreamServerConnection s,
- const char *path);
-CcXstreamClientError cc_xstream_client_upcwd(CcXstreamServerConnection s,
- unsigned long levels);
-CcXstreamClientError cc_xstream_client_close_all(CcXstreamServerConnection s);
-CcXstreamClientError cc_xstream_client_file_open(CcXstreamServerConnection s,
- const char *path,
- unsigned long *handle);
-CcXstreamClientError cc_xstream_client_file_read(CcXstreamServerConnection s,
- unsigned long handle,
- size_t len,
- unsigned char **data,
- size_t *data_len);
-CcXstreamClientError cc_xstream_client_dir_open(CcXstreamServerConnection s,
- unsigned long *handle);
-CcXstreamClientError cc_xstream_client_dir_read(CcXstreamServerConnection s,
- unsigned long handle,
- char **name,
- char **info);
-CcXstreamClientError cc_xstream_client_close(CcXstreamServerConnection s,
- unsigned long handle);
-CcXstreamClientError cc_xstream_client_file_forward(CcXstreamServerConnection s,
- unsigned long handle,
- CC_UINT_64_TYPE_NAME bytes,
- int seek_eof_if_fails);
-CcXstreamClientError cc_xstream_client_file_backwards(CcXstreamServerConnection s,
- unsigned long handle,
- CC_UINT_64_TYPE_NAME bytes,
- int rewind_if_fails);
-
-CcXstreamClientError cc_xstream_client_file_rewind(CcXstreamServerConnection s,
- unsigned long handle);
-CcXstreamClientError cc_xstream_client_file_end(CcXstreamServerConnection s,
- unsigned long handle);
-CcXstreamClientError cc_xstream_client_file_info(CcXstreamServerConnection s,
- const char *path,
- char **info);
-CcXstreamClientError cc_xstream_client_set_configuration_option(CcXstreamServerConnection s,
- const char *option,
- const char *value);
-CcXstreamClientError cc_xstream_client_password_authenticate(CcXstreamServerConnection s,
- const char *user_id,
- const char *password);
-
-/* Server discovery function. May not be supported in all systems. */
-
-typedef void (*CcXstreamServerDiscoveryCB)(const char *addr,
- const char *port,
- const char *version,
- const char *comment,
- void *context);
-
-CcXstreamClientError ccx_client_discover_servers(CcXstreamServerDiscoveryCB callback, void *context);
-
-
-#define CC_XSTREAM_CLIENT_VERSION_STR "XBMSP-1.0 CcXstream Client Library " CC_XSTREAM_SW_VERSION
-#define CC_XSTREAM_CLIENT_VERSION "1.0"
-
-/* If the server end is inresponsive for 10 seconds, connection will halt. */
-#define CCXSTREAM_CLIENT_TIMEOUT_SECONDS 10
-
-#endif /* CC_XCLIENT_H_INCLUDED */
-/* eof (ccxclient.h) */
+++ /dev/null
-// Place the code and data below here into the LIBXBMS section.
-#ifndef __GNUC__
-#pragma code_seg( "LIBXBMS" )
-#pragma data_seg( "LIBXBMS_RW" )
-#pragma bss_seg( "LIBXBMS_RW" )
-#pragma const_seg( "LIBXBMS_RD" )
-#pragma comment(linker, "/merge:LIBXBMS_RW=LIBXBMS")
-#pragma comment(linker, "/merge:LIBXBMS_RD=LIBXBMS")
-#endif
-/* -*- c -*-
- *
- * ----------------------------------------------------------------------
- * CcXstream Client Library for XBMC Media Center
- * ----------------------------------------------------------------------
- *
- * Copyright (c) 2002-2003 by PuhPuh
- *
- * This code is copyrighted property of the author. It can still
- * be used for any non-commercial purpose following conditions:
- *
- * 1) This copyright notice is not removed.
- * 2) Source code follows any distribution of the software
- * if possible.
- * 3) Copyright notice above is found in the documentation
- * of the distributed software.
- *
- * Any express or implied warranties are disclaimed. Author is
- * not liable for any direct or indirect damages caused by the use
- * of this software.
- *
- * ----------------------------------------------------------------------
- *
- * This code has been integrated into XBMC Media Center.
- * As such it can me copied, redistributed and modified under
- * the same conditions as the XBMC itself.
- *
- */
-#include "ccincludes.h"
-#include "ccbuffer.h"
-#include "ccxclient.h"
-
-#if !defined(_WIN32)
-#define CC_XSTREAM_SOCKET_FD_TYPE int
-#define CC_XSTREAM_SOCKET_CLOSE close
-#define CC_XSTREAM_SOCKET_WRITE(s, b, l) write((s), (b), (l))
-#define CC_XSTREAM_SOCKET_READ(s, b, l) read((s), (b), (l))
-#else /* _WIN32 */
-#define CC_XSTREAM_SOCKET_FD_TYPE SOCKET
-#define CC_XSTREAM_SOCKET_CLOSE closesocket
-#define CC_XSTREAM_SOCKET_WRITE(s, b, l) send((s), (b), (l), 0)
-#define CC_XSTREAM_SOCKET_READ(s, b, l) recv((s), (b), (l), 0)
-#endif
-
-static void cc_xstream_client_socket_setup(CC_XSTREAM_SOCKET_FD_TYPE sock)
-{
-#ifdef TCP_NODELAY
- int i;
-
- i = 1;
- setsockopt(sock, IPPROTO_TCP,TCP_NODELAY, (char *)(&i), sizeof (i));
-#endif /* TCP_NODELAY */
-}
-
-CcXstreamClientError cc_xstream_client_connect(const char *host,
- int port,
- CcXstreamServerConnection *s)
-{
- CC_XSTREAM_SOCKET_FD_TYPE sock;
- struct sockaddr_in sa;
-#ifndef _XBOX
- struct hostent *he;
-#endif /* ! _XBOX */
-
- memset(&sa, 0, sizeof (sa));
- sa.sin_port = htons(port);
- sa.sin_family = AF_INET;
- if (inet_addr(host) == INADDR_NONE)
- {
-#ifndef _XBOX
- he = gethostbyname(host);
- if ((he == NULL) || (he->h_addrtype != AF_INET) || (he->h_length != 4))
- return CC_XSTREAM_CLIENT_SERVER_NOT_FOUND;
- memcpy(&(sa.sin_addr), he->h_addr, 4);
-#else /* ! _XBOX */
- return CC_XSTREAM_CLIENT_SERVER_NOT_FOUND;
-#endif /* ! _XBOX */
- }
- else
- {
- sa.sin_addr.s_addr = inet_addr(host);
- }
- sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- if (sock < 0)
- return CC_XSTREAM_CLIENT_FATAL_ERROR;
- if (connect(sock, (struct sockaddr *)&sa, sizeof (sa)) != 0)
- {
- CC_XSTREAM_SOCKET_CLOSE(sock);
- return CC_XSTREAM_CLIENT_SERVER_CONNECTION_FAILED;
- }
- cc_xstream_client_socket_setup(sock);
- *s = (CcXstreamServerConnection)sock;
- return CC_XSTREAM_CLIENT_OK;
-}
-
-CcXstreamClientError cc_xstream_client_disconnect(CcXstreamServerConnection s)
-{
- CC_XSTREAM_SOCKET_FD_TYPE sock;
-
- sock = (CC_XSTREAM_SOCKET_FD_TYPE)s;
- CC_XSTREAM_SOCKET_CLOSE(s);
- return CC_XSTREAM_CLIENT_OK;
-}
-
-unsigned char *cc_xstream_client_read_data(CcXstreamServerConnection s,
- size_t len,
- unsigned long timeout_ms)
-{
- unsigned char *buf;
- size_t done;
- CC_XSTREAM_SOCKET_FD_TYPE sock;
- int rv;
- struct timeval tv;
- fd_set fds;
-
- /* Convert the conenction handle to simple file descriptor. */
- sock = (CC_XSTREAM_SOCKET_FD_TYPE)s;
-
- /* We terminate incoming buffer just to make code safer.
- Caller should not count on it anyway. */
- buf = cc_xmalloc(len + 1);
- buf[len] = '\0';
-
- for (done = 0; done < len; /*NOTHING*/)
- {
- if (timeout_ms > 0)
- {
- tv.tv_sec = timeout_ms / 1000U;
- tv.tv_usec = (timeout_ms % 1000U) * 1000U;
- FD_ZERO(&fds);
- FD_SET(sock, &fds);
- if (select(sock + 1, &fds, NULL, NULL, &tv) != 1)
- {
- /* Timeout or error, we don't really care. */
- cc_xfree(buf);
- return NULL;
- }
- }
- rv = CC_XSTREAM_SOCKET_READ(sock, buf + done, len - done);
- if (rv < 1)
- {
- cc_xfree(buf);
- return NULL;
- }
- done += rv;
- }
- return buf;
-}
-
-int cc_xstream_client_write_data(CcXstreamServerConnection s,
- unsigned char *buf,
- size_t len,
- unsigned long timeout_ms)
-{
- size_t done;
- CC_XSTREAM_SOCKET_FD_TYPE sock;
- int rv;
- struct timeval tv;
- fd_set fds;
-
- /* Convert the conenction handle to simple file descriptor. */
- sock = (CC_XSTREAM_SOCKET_FD_TYPE)s;
-
- for (done = 0; done < len; /*NOTHING*/)
- {
- if (timeout_ms > 0)
- {
- tv.tv_sec = timeout_ms / 1000U;
- tv.tv_usec = (timeout_ms % 1000U) * 1000U;
- FD_ZERO(&fds);
- FD_SET(sock, &fds);
- if (select(sock + 1, NULL, &fds, NULL, &tv) != 1)
- {
- /* Timeout or error, we don't really care. */
- cc_xfree(buf);
- return 0;
- }
- }
- rv = CC_XSTREAM_SOCKET_WRITE(sock, buf + done, len - done);
- if (rv < 1)
- return 0;
- done += rv;
- }
- return 1;
-}
-
-/* eof (ccxclientconn.c) */
+++ /dev/null
-// Place the code and data below here into the LIBXBMS section.
-#ifndef __GNUC__
-#pragma code_seg( "LIBXBMS" )
-#pragma data_seg( "LIBXBMS_RW" )
-#pragma bss_seg( "LIBXBMS_RW" )
-#pragma const_seg( "LIBXBMS_RD" )
-#pragma comment(linker, "/merge:LIBXBMS_RW=LIBXBMS")
-#pragma comment(linker, "/merge:LIBXBMS_RD=LIBXBMS")
-#endif
-/* -*- c -*-
- *
- * ----------------------------------------------------------------------
- * CcXstream Client Library for XBMC Media Center (Server Discovery)
- * ----------------------------------------------------------------------
- *
- * Copyright (c) 2002-2003 by PuhPuh
- *
- * This code is copyrighted property of the author. It can still
- * be used for any non-commercial purpose following conditions:
- *
- * 1) This copyright notice is not removed.
- * 2) Source code follows any distribution of the software
- * if possible.
- * 3) Copyright notice above is found in the documentation
- * of the distributed software.
- *
- * Any express or implied warranties are disclaimed. Author is
- * not liable for any direct or indirect damages caused by the use
- * of this software.
- *
- * ----------------------------------------------------------------------
- *
- * This code has been integrated into XBMC Media Center.
- * As such it can me copied, redistributed and modified under
- * the same conditions as the XBMC itself.
- *
- */
-
-#include "ccincludes.h"
-#include "ccbuffer.h"
-#include "ccxclient.h"
-#include "ccxencode.h"
-
-static unsigned long timeout_start()
-{
-#if defined (__linux__) || defined(__APPLE__) || defined (__NetBSD__) || defined (__FreeBSD__) || defined (__CYGWIN__) || defined (sun)
- struct timeval tv;
- unsigned long r;
-
- gettimeofday(&tv, NULL);
- r = (((unsigned long)tv.tv_sec) % 200000000U) * 10U;
- r += ((unsigned long)tv.tv_usec) / 100000U;
- return r;
-#elif defined (_XBOX)
- return ((unsigned long)(GetTickCount()) / 100U);
-#else
- time_t t;
-
- t = time(NULL);
- return (((unsigned long)t) % 200000000U) * 10U;
-#endif
-}
-
-static int timeout_exceeded(unsigned long start_time)
-{
- unsigned long t;
-
- t = timeout_start();
- return ((t < start_time) || ((start_time + 9) < t));
-}
-
-CcXstreamClientError ccx_client_discover_servers(CcXstreamServerDiscoveryCB callback, void *context)
-{
- struct sockaddr_in sa, ra;
-#if defined (_XBOX) || defined (WIN32)
- size_t sa_len, ra_len;
-#else
- socklen_t sa_len, ra_len;
-#endif
- unsigned long handle, p_len, p_handle;
- unsigned char *packet, ch;
- size_t packet_len;
- int found = 0, l, c;
-#if defined (_XBOX) || defined (WIN32)
- SOCKET sock;
-#else
- int sock;
-#endif
- unsigned long t0;
- fd_set rs;
- struct timeval tv;
- CcBufferRec buf[1], seen_buf[1];
- char *p_address, *p_port, *p_version, *p_comment;
-
- memset(&sa, 0, sizeof (sa));
- sa.sin_family = AF_INET;
- sa.sin_addr.s_addr = htonl(INADDR_BROADCAST);
- sa.sin_port = htons(CC_XSTREAM_DEFAULT_PORT);
- sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
- if (sock < 0)
- return CC_XSTREAM_CLIENT_COMMAND_FAILED;
- c = 1;
- setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *)(&c), sizeof (c));
- handle = cc_xstream_client_mkpacket_server_discovery(&packet, &packet_len);
- sa_len = sizeof (sa);
- sendto(sock, packet, packet_len, 0, (struct sockaddr *)(&sa), sa_len);
- t0 = timeout_start();
- cc_buffer_init(seen_buf);
- while (1)
- {
- if (timeout_exceeded(t0))
- {
- cc_buffer_uninit(seen_buf);
- break;
- }
- FD_ZERO(&rs);
- FD_SET(sock, &rs);
- tv.tv_sec = 0;
- tv.tv_usec = 350000;
- switch (select(sock + 1, &rs, NULL, NULL, &tv))
- {
- case -1:
-#if defined (_XBOX) || defined (WIN32)
- closesocket(sock);
-#else
- close(sock);
-#endif
- cc_buffer_uninit(seen_buf);
- cc_xfree(packet);
- return (found > 0) ? CC_XSTREAM_CLIENT_OK : CC_XSTREAM_CLIENT_COMMAND_FAILED;
- /*NOTREACHED*/
-
- case 0:
- /* Resend packet if we got timeout. */
- sendto(sock, packet, packet_len, 0, (struct sockaddr *)(&sa), sa_len);
- break;
-
- default:
- memset(&ra, 0, sizeof (ra));
- cc_buffer_init(buf);
- cc_buffer_append_space(buf, 2000);
- ra_len = sizeof (ra);
- l = recvfrom(sock, cc_buffer_ptr(buf), cc_buffer_len(buf), 0, (struct sockaddr *)(&ra), &ra_len);
- if (l > 0)
- {
- cc_buffer_consume_end(buf, cc_buffer_len(buf) - l);
- if (cc_xstream_buffer_decode_int(buf, &p_len) &&
- (p_len == cc_buffer_len(buf)) &&
- cc_xstream_buffer_decode_byte(buf, &ch) &&
- ((CcXstreamPacket)ch == CC_XSTREAM_XBMSP_PACKET_SERVER_DISCOVERY_REPLY) &&
- cc_xstream_buffer_decode_int(buf, &p_handle) &&
- (p_handle == handle) &&
- cc_xstream_buffer_decode_string(buf, (unsigned char **)(&p_address), NULL) &&
- cc_xstream_buffer_decode_string(buf, (unsigned char **)(&p_port), NULL) &&
- cc_xstream_buffer_decode_string(buf, (unsigned char **)(&p_version), NULL) &&
- cc_xstream_buffer_decode_string(buf, (unsigned char **)(&p_comment), NULL) &&
- (cc_buffer_len(buf) == 0))
- {
- if (strlen(p_address) == 0)
- {
- cc_xfree(p_address);
-#ifdef _XBOX
- {
- unsigned char *b;
-
- b = (unsigned char *)(&(ra.sin_addr.s_addr));
- p_address = cc_xmalloc(32);
- sprintf(p_address, "%d.%d.%d.%d", (int)(b[0]), (int)(b[1]), (int)(b[2]), (int)(b[3]));
- }
-#else
- p_address = cc_xstrdup(inet_ntoa(ra.sin_addr));
-#endif
- }
- if (strlen(p_port) == 0)
- {
- cc_xfree(p_port);
- p_port = cc_xmalloc(16);
-#ifdef _XBOX
- sprintf(p_port, "%d", (int)(ntohs(ra.sin_port)));
-#else
- snprintf(p_port, 16, "%d", (int)(ntohs(ra.sin_port)));
-#endif
- }
- cc_buffer_append_string(buf, ">");
- cc_buffer_append_string(buf, p_address);
- cc_buffer_append_string(buf, ":");
- cc_buffer_append_string(buf, p_port);
- cc_buffer_append_string(buf, "<");
- ch = 0;
- /* Terminate both buffers with '\0' */
- cc_buffer_append(buf, &ch, 1);
- cc_buffer_append(seen_buf, &ch, 1);
- if (strstr((char *)cc_buffer_ptr(seen_buf), (char *)cc_buffer_ptr(buf)) == NULL)
- {
- /* Don't forget to remove the terminating '\0' */
- cc_buffer_consume_end(seen_buf, 1);
- cc_buffer_append_string(seen_buf, (char *)cc_buffer_ptr(buf));
- if (callback != NULL)
- (*callback)(p_address, p_port, p_version, p_comment, context);
- found++;
- }
- else
- {
- /* Don't forget to remove the terminating '\0' */
- cc_buffer_consume_end(seen_buf, 1);
- }
- cc_buffer_clear(buf);
- cc_xfree(p_address);
- cc_xfree(p_port);
- cc_xfree(p_version);
- cc_xfree(p_comment);
- }
- }
- cc_buffer_uninit(buf);
- break;
- }
- }
-#if defined (_XBOX) || defined (WIN32)
- closesocket(sock);
-#else
- close(sock);
-#endif
- cc_xfree(packet);
-
- return (found > 0) ? CC_XSTREAM_CLIENT_OK : CC_XSTREAM_CLIENT_SERVER_NOT_FOUND;
-}
-
-/* eof (ccxdiscover.c) */
+++ /dev/null
-// Place the code and data below here into the LIBXBMS section.
-#ifndef __GNUC__
-#pragma code_seg( "LIBXBMS" )
-#pragma data_seg( "LIBXBMS_RW" )
-#pragma bss_seg( "LIBXBMS_RW" )
-#pragma const_seg( "LIBXBMS_RD" )
-#pragma comment(linker, "/merge:LIBXBMS_RW=LIBXBMS")
-#pragma comment(linker, "/merge:LIBXBMS_RD=LIBXBMS")
-#endif
-/* -*- c -*-
- *
- * ----------------------------------------------------------------------
- * Protocol packet encode/decode for CcXstream Server for XBMC Media Center
- * ----------------------------------------------------------------------
- *
- * Copyright (c) 2002-2003 by PuhPuh
- *
- * This code is copyrighted property of the author. It can still
- * be used for any non-commercial purpose following conditions:
- *
- * 1) This copyright notice is not removed.
- * 2) Source code follows any distribution of the software
- * if possible.
- * 3) Copyright notice above is found in the documentation
- * of the distributed software.
- *
- * Any express or implied warranties are disclaimed. Author is
- * not liable for any direct or indirect damages caused by the use
- * of this software.
- *
- * ----------------------------------------------------------------------
- *
- * This code has been integrated into XBMC Media Center.
- * As such it can me copied, redistributed and modified under
- * the same conditions as the XBMC itself.
- *
- */
-
-#include "ccincludes.h"
-#include "ccbuffer.h"
-#include "ccxencode.h"
-
-void cc_xstream_encode_int(unsigned char *buf, unsigned long x)
-{
- buf[3] = (unsigned char)(x & 0xff);
- x >>= 8;
- buf[2] = (unsigned char)(x & 0xff);
- x >>= 8;
- buf[1] = (unsigned char)(x & 0xff);
- x >>= 8;
- buf[0] = (unsigned char)(x & 0xff);
-}
-
-void cc_xstream_buffer_encode_int(CcBuffer buf, unsigned long x)
-{
- cc_buffer_append_space(buf, 4);
- cc_xstream_encode_int(cc_buffer_ptr(buf) + cc_buffer_len(buf) - 4, x);
-}
-
-void cc_xstream_buffer_encode_int64(CcBuffer buf, CC_UINT_64_TYPE_NAME x)
-{
- unsigned char nb[8];
-
- nb[7] = (unsigned char)(x & 0xff);
- x >>= 8;
- nb[6] = (unsigned char)(x & 0xff);
- x >>= 8;
- nb[5] = (unsigned char)(x & 0xff);
- x >>= 8;
- nb[4] = (unsigned char)(x & 0xff);
- x >>= 8;
- nb[3] = (unsigned char)(x & 0xff);
- x >>= 8;
- nb[2] = (unsigned char)(x & 0xff);
- x >>= 8;
- nb[1] = (unsigned char)(x & 0xff);
- x >>= 8;
- nb[0] = (unsigned char)(x & 0xff);
- cc_buffer_append(buf, nb, 8);
-}
-
-void cc_xstream_buffer_encode_byte(CcBuffer buf, unsigned char b)
-{
- cc_buffer_append(buf, &b, 1);
-}
-
-void cc_xstream_buffer_encode_data_string(CcBuffer buf, const unsigned char *str, size_t str_len)
-{
- cc_xstream_buffer_encode_int(buf, (unsigned long)str_len);
- cc_buffer_append(buf, str, str_len);
-}
-
-void cc_xstream_buffer_encode_string(CcBuffer buf, const char *str)
-{
- size_t str_len;
-
- str_len = strlen(str);
- cc_xstream_buffer_encode_int(buf, (unsigned long)str_len);
- cc_buffer_append(buf, (unsigned char *)str, str_len);
-}
-
-void cc_xstream_buffer_encode_packet_length(CcBuffer buf)
-{
- unsigned long len;
- unsigned char hlp[4];
-
- len = (unsigned long)cc_buffer_len(buf);
- cc_xstream_encode_int(hlp, len);
- cc_buffer_prepend(buf, hlp, 4);
-}
-
-
-unsigned long cc_xstream_decode_int(const unsigned char *buf)
-{
- unsigned long r;
-
- r = (unsigned long)(buf[0]);
- r <<= 8;
- r |= (unsigned long)(buf[1]);
- r <<= 8;
- r |= (unsigned long)(buf[2]);
- r <<= 8;
- r |= (unsigned long)(buf[3]);
- return r;
-}
-
-int cc_xstream_buffer_decode_int(CcBuffer buf, unsigned long *x)
-{
- if (cc_buffer_len(buf) < 4)
- return 0;
- *x = cc_xstream_decode_int(cc_buffer_ptr(buf));
- cc_buffer_consume(buf, 4);
- return 1;
-}
-
-int cc_xstream_buffer_decode_int64(CcBuffer buf, CC_UINT_64_TYPE_NAME *x)
-{
- CC_UINT_64_TYPE_NAME r;
- unsigned char *b;
- int i;
-
- if (cc_buffer_len(buf) < 8)
- return 0;
- r = 0;
- for (i = 0; i < 8; i++)
- {
- b = cc_buffer_ptr(buf) + i;
- r = (r << 8) | (CC_UINT_64_TYPE_NAME)(*b);
- }
- *x = r;
- cc_buffer_consume(buf, 8);
- return 1;
-}
-
-int cc_xstream_buffer_decode_byte(CcBuffer buf, unsigned char *b)
-{
- if (cc_buffer_len(buf) < 1)
- return 0;
- *b = *(cc_buffer_ptr(buf));
- cc_buffer_consume(buf, 1);
- return 1;
-}
-
-int cc_xstream_buffer_decode_string(CcBuffer buf, unsigned char **str, size_t *str_len)
-{
- unsigned long len;
-
- if (cc_buffer_len(buf) < 4)
- return 0;
- len = cc_xstream_decode_int(cc_buffer_ptr(buf));
- if ((len + 4) > cc_buffer_len(buf))
- return 0;
- cc_buffer_consume(buf, 4);
- if (str_len != NULL)
- *str_len = (size_t)len;
- *str = cc_xmemdup(cc_buffer_ptr(buf), len);
- cc_buffer_consume(buf, len);
- return 1;
-}
-
-/* eof (ccxencode.c) */
+++ /dev/null
-/* -*- c -*-
- *
- * ----------------------------------------------------------------------
- * Protocol packet encode/decode for CcXstream Server for XBMC Media Center
- * ----------------------------------------------------------------------
- *
- * Copyright (c) 2002-2003 by PuhPuh
- *
- * This code is copyrighted property of the author. It can still
- * be used for any non-commercial purpose following conditions:
- *
- * 1) This copyright notice is not removed.
- * 2) Source code follows any distribution of the software
- * if possible.
- * 3) Copyright notice above is found in the documentation
- * of the distributed software.
- *
- * Any express or implied warranties are disclaimed. Author is
- * not liable for any direct or indirect damages caused by the use
- * of this software.
- *
- * ----------------------------------------------------------------------
- *
- * This code has been integrated into XBMC Media Center.
- * As such it can me copied, redistributed and modified under
- * the same conditions as the XBMC itself.
- *
- */
-
-#ifndef CC_XENCODE_H_INCLUDED
-#define CC_XENCODE_H_INCLUDED 1
-
-#include "ccbuffer.h"
-
-void cc_xstream_encode_int(unsigned char *buf, unsigned long x);
-void cc_xstream_buffer_encode_int(CcBuffer buf, unsigned long x);
-void cc_xstream_buffer_encode_int64(CcBuffer buf, CC_UINT_64_TYPE_NAME x);
-void cc_xstream_buffer_encode_byte(CcBuffer buf, unsigned char b);
-void cc_xstream_buffer_encode_string(CcBuffer buf, const char *str);
-void cc_xstream_buffer_encode_data_string(CcBuffer buf, const unsigned char *str, size_t str_len);
-void cc_xstream_buffer_encode_packet_length(CcBuffer buf);
-
-unsigned long cc_xstream_decode_int(const unsigned char *buf);
-int cc_xstream_buffer_decode_int(CcBuffer buf, unsigned long *x);
-int cc_xstream_buffer_decode_int64(CcBuffer buf, CC_UINT_64_TYPE_NAME *x);
-int cc_xstream_buffer_decode_byte(CcBuffer buf, unsigned char *b);
-int cc_xstream_buffer_decode_string(CcBuffer buf, unsigned char **str, size_t *str_len);
-
-#endif /* CC_XENCODE_H_INCLUDED */
-/* eof (ccxencode.h) */
+++ /dev/null
-// Place the code and data below here into the LIBXBMS section.
-#ifndef __GNUC__
-#pragma code_seg( "LIBXBMS" )
-#pragma data_seg( "LIBXBMS_RW" )
-#pragma bss_seg( "LIBXBMS_RW" )
-#pragma const_seg( "LIBXBMS_RD" )
-#pragma comment(linker, "/merge:LIBXBMS_RW=LIBXBMS")
-#pragma comment(linker, "/merge:LIBXBMS_RD=LIBXBMS")
-#endif
-/* -*- c -*-
- *
- * ----------------------------------------------------------------------
- * Translate raw strings so that they can be inserted into xml.
- * ----------------------------------------------------------------------
- *
- * Copyright (c) 2002-2003 by PuhPuh
- *
- * This code is copyrighted property of the author. It can still
- * be used for any non-commercial purpose following conditions:
- *
- * 1) This copyright notice is not removed.
- * 2) Source code follows any distribution of the software
- * if possible.
- * 3) Copyright notice above is found in the documentation
- * of the distributed software.
- *
- * Any express or implied warranties are disclaimed. Author is
- * not liable for any direct or indirect damages caused by the use
- * of this software.
- *
- * ----------------------------------------------------------------------
- *
- * This code has been integrated into XBMC Media Center.
- * As such it can me copied, redistributed and modified under
- * the same conditions as the XBMC itself.
- *
- */
-
-#include "ccincludes.h"
-#include "ccbuffer.h"
-#include "ccxmltrans.h"
-
-typedef struct {
- char *raw;
- char *xml;
-} CcXstreamXmlTranslationRec, *CcXstreamXmlTranslation;
-
-#ifndef __GNUC__
-#pragma code_seg()
-#pragma data_seg()
-#pragma bss_seg()
-#pragma const_seg()
-#endif
-
-static CcXstreamXmlTranslationRec cc_xml_translation[] = {
- { ">", ">" },
- { "<", "<" },
- { "/", "&slash;" },
- { "\\", "&backslash;" },
- { "\"", "&doublequote;" },
- { "&", "&" },
- { NULL, NULL }
-};
-
-#ifndef __GNUC__
-#pragma code_seg( "LIBXBMS" )
-#pragma data_seg( "LIBXBMS_RW" )
-#pragma bss_seg( "LIBXBMS_RW" )
-#pragma const_seg( "LIBXBMS_RD" )
-#pragma comment(linker, "/merge:LIBXBMS_RW=LIBXBMS")
-#pragma comment(linker, "/merge:LIBXBMS_RD=LIBXBMS")
-#endif
-
-char *cc_xstream_xml_encode(const char *raw)
-{
- CcBufferRec buf[1];
- const char *tmp;
- char *r, cb[16];
- int i;
- unsigned int x;
-
- cc_buffer_init(buf);
- for (tmp = raw; *tmp != '\0'; /*NOTHING*/)
- {
- for (i = 0; cc_xml_translation[i].raw != NULL; i++)
- {
- if (strncmp(tmp, cc_xml_translation[i].raw, strlen(cc_xml_translation[i].raw)) == 0)
- {
- cc_buffer_append_string(buf, cc_xml_translation[i].xml);
- tmp += strlen(cc_xml_translation[i].raw);
- break;
- }
- }
- if (cc_xml_translation[i].raw == NULL)
- {
- if (isprint(*tmp) && ((! isspace(*tmp)) || (*tmp == ' ')))
- {
- cc_buffer_append(buf, (unsigned char *)tmp, 1);
- }
- else
- {
- x = (unsigned int)(*tmp);
- sprintf(cb, "&%04x;", x);
- cc_buffer_append_string(buf, cb);
- }
- tmp++;
- }
- }
- r = cc_xmemdup(cc_buffer_ptr(buf), cc_buffer_len(buf));
- cc_buffer_uninit(buf);
- return r;
-}
-
-char *cc_xstream_xml_decode(const char *xml)
-{
- CcBufferRec buf[1];
- const char *tmp;
- char *r;
- unsigned long l;
- unsigned char c;
- int i;
-
- cc_buffer_init(buf);
- for (tmp = xml; *tmp != '\0'; /*NOTHING*/)
- {
- for (i = 0; cc_xml_translation[i].xml != NULL; i++)
- {
- if (strncmp(tmp, cc_xml_translation[i].xml, strlen(cc_xml_translation[i].xml)) == 0)
- {
- cc_buffer_append_string(buf, cc_xml_translation[i].raw);
- tmp += strlen(cc_xml_translation[i].xml);
- break;
- }
- }
- if (cc_xml_translation[i].raw == NULL)
- {
- if ((tmp[0] == '&') &&
- (tmp[1] == '0') &&
- (tmp[2] == '0') &&
- (isxdigit(tmp[3])) &&
- (isxdigit(tmp[4])) &&
- (tmp[5] == ';'))
- {
- l = strtoul(tmp + 1, NULL, 16);
- c = (unsigned char)l;
- cc_buffer_append(buf, &c, 1);
- tmp += 6;
- }
- else
- {
- cc_buffer_append(buf, (unsigned char *)tmp, 1);
- tmp++;
- }
- }
- }
- r = cc_xmemdup(cc_buffer_ptr(buf), cc_buffer_len(buf));
- cc_buffer_uninit(buf);
- return r;
-}
-
-/* eof (ccxmltrans.c) */
+++ /dev/null
-/* -*- c -*-
- *
- * ----------------------------------------------------------------------
- * Translate raw strings so that they can be inserted into xml.
- * ----------------------------------------------------------------------
- *
- * Copyright (c) 2002-2003 by PuhPuh
- *
- * This code is copyrighted property of the author. It can still
- * be used for any non-commercial purpose following conditions:
- *
- * 1) This copyright notice is not removed.
- * 2) Source code follows any distribution of the software
- * if possible.
- * 3) Copyright notice above is found in the documentation
- * of the distributed software.
- *
- * Any express or implied warranties are disclaimed. Author is
- * not liable for any direct or indirect damages caused by the use
- * of this software.
- *
- * ----------------------------------------------------------------------
- *
- * This code has been integrated into XBMC Media Center.
- * As such it can me copied, redistributed and modified under
- * the same conditions as the XBMC itself.
- *
- */
-
-#ifndef CC_XMLTRANS_H_INCLUDED
-#define CC_XMLTRANS_H_INCLUDED 1
-
-char *cc_xstream_xml_encode(const char *raw);
-char *cc_xstream_xml_decode(const char *xml);
-
-#endif /* CC_XMLTRANS_H_INCLUDED */
-/* eof (ccxmltrans.h) */
+++ /dev/null
-/* -*- c -*-
- *
- * ----------------------------------------------------------------------
- * Protocol packet definitions for CcXstream Server for XBMC Media Center
- * ----------------------------------------------------------------------
- *
- * Copyright (c) 2002-2003 by PuhPuh
- *
- * This code is copyrighted property of the author. It can still
- * be used for any non-commercial purpose following conditions:
- *
- * 1) This copyright notice is not removed.
- * 2) Source code follows any distribution of the software
- * if possible.
- * 3) Copyright notice above is found in the documentation
- * of the distributed software.
- *
- * Any express or implied warranties are disclaimed. Author is
- * not liable for any direct or indirect damages caused by the use
- * of this software.
- *
- * ----------------------------------------------------------------------
- *
- * This code has been integrated into XBMC Media Center.
- * As such it can me copied, redistributed and modified under
- * the same conditions as the XBMC itself.
- *
- */
-
-#ifndef CC_XPACKET_H_INCLUDED
-#define CC_XPACKET_H_INCLUDED 1
-
-typedef enum {
- /* Server -> Client */
- CC_XSTREAM_XBMSP_PACKET_OK = 1,
- CC_XSTREAM_XBMSP_PACKET_ERROR = 2,
- CC_XSTREAM_XBMSP_PACKET_HANDLE = 3,
- CC_XSTREAM_XBMSP_PACKET_FILE_DATA = 4,
- CC_XSTREAM_XBMSP_PACKET_FILE_CONTENTS = 5,
- CC_XSTREAM_XBMSP_PACKET_AUTHENTICATION_CONTINUE = 6,
- /* Client -> Server */
- CC_XSTREAM_XBMSP_PACKET_NULL = 10,
- CC_XSTREAM_XBMSP_PACKET_SETCWD = 11,
- CC_XSTREAM_XBMSP_PACKET_FILELIST_OPEN = 12,
- CC_XSTREAM_XBMSP_PACKET_FILELIST_READ = 13,
- CC_XSTREAM_XBMSP_PACKET_FILE_INFO = 14,
- CC_XSTREAM_XBMSP_PACKET_FILE_OPEN = 15,
- CC_XSTREAM_XBMSP_PACKET_FILE_READ = 16,
- CC_XSTREAM_XBMSP_PACKET_FILE_SEEK = 17,
- CC_XSTREAM_XBMSP_PACKET_CLOSE = 18,
- CC_XSTREAM_XBMSP_PACKET_CLOSE_ALL = 19,
- CC_XSTREAM_XBMSP_PACKET_SET_CONFIGURATION_OPTION = 20,
- CC_XSTREAM_XBMSP_PACKET_AUTHENTICATION_INIT = 21,
- CC_XSTREAM_XBMSP_PACKET_AUTHENTICATE = 22,
- CC_XSTREAM_XBMSP_PACKET_UPCWD = 23,
- /* Server discovery packets */
- CC_XSTREAM_XBMSP_PACKET_SERVER_DISCOVERY_QUERY = 90,
- CC_XSTREAM_XBMSP_PACKET_SERVER_DISCOVERY_REPLY = 91
-} CcXstreamPacket;
-
-typedef enum {
- CC_XSTREAM_XBMSP_ERROR_OK = 0,
- CC_XSTREAM_XBMSP_ERROR_FAILURE = 1,
- CC_XSTREAM_XBMSP_ERROR_UNSUPPORTED = 2,
- CC_XSTREAM_XBMSP_ERROR_NO_SUCH_FILE = 3,
- CC_XSTREAM_XBMSP_ERROR_INVALID_FILE = 4,
- CC_XSTREAM_XBMSP_ERROR_INVALID_HANDLE = 5,
- CC_XSTREAM_XBMSP_ERROR_OPEN_FAILED = 6,
- CC_XSTREAM_XBMSP_ERROR_TOO_MANY_OPEN_FILES = 7,
- CC_XSTREAM_XBMSP_ERROR_TOO_LONG_READ = 8,
- CC_XSTREAM_XBMSP_ERROR_ILLEGAL_SEEK = 9,
- CC_XSTREAM_XBMSP_ERROR_OPTION_IS_READ_ONLY = 10,
- CC_XSTREAM_XBMSP_ERROR_INVALID_OPTION_VALUE = 11,
- CC_XSTREAM_XBMSP_ERROR_AUTHENTICATION_NEEDED = 12,
- CC_XSTREAM_XBMSP_ERROR_AUTHENTICATION_FAILED = 13
-} CcXstreamError;
-
-#define CC_XSTREAM_DEFAULT_PORT 1400
-
-#endif /* CC_XPACKET_H_INCLUDED */
-/* eof (ccxpacket.h) */
+++ /dev/null
-#ifndef CC_XSTREAM_SW_VERSION
-#define CC_XSTREAM_SW_VERSION "1.0.14 for XBox"
-#endif /* ! CC_XSTREAM_SW_VERSION */
+++ /dev/null
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9,00"
- Name="libXBMS"
- ProjectGUID="{706163E2-5422-4A94-8464-082ADA8C2769}"
- RootNamespace="libXBMS"
- Keyword="Win32Proj"
- TargetFrameworkVersion="196613"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)libs\$(ProjectName)\$(ConfigurationName)\"
- IntermediateDirectory="$(SolutionDir)objs\$(ProjectName)\$(ConfigurationName)\"
- ConfigurationType="4"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\win32\"
- PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="4"
- CompileAs="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)libs\$(ProjectName)\$(ConfigurationName)\"
- IntermediateDirectory="$(SolutionDir)objs\$(ProjectName)\$(ConfigurationName)\"
- ConfigurationType="4"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- EnableIntrinsicFunctions="true"
- WholeProgramOptimization="false"
- AdditionalIncludeDirectories="..\..\..\win32\"
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE"
- RuntimeLibrary="0"
- EnableFunctionLevelLinking="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="3"
- CompileAs="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
- >
- <File
- RelativePath="..\ccbuffer.c"
- >
- </File>
- <File
- RelativePath="..\ccutil.c"
- >
- </File>
- <File
- RelativePath="..\ccxclient.c"
- >
- </File>
- <File
- RelativePath="..\ccxclientconnxbox.c"
- >
- </File>
- <File
- RelativePath="..\ccxdiscover.c"
- >
- </File>
- <File
- RelativePath="..\ccxencode.c"
- >
- </File>
- <File
- RelativePath="..\ccxmltrans.c"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
- >
- <File
- RelativePath="..\ccbuffer.h"
- >
- </File>
- <File
- RelativePath="..\ccincludes.h"
- >
- </File>
- <File
- RelativePath="..\ccutil.h"
- >
- </File>
- <File
- RelativePath="..\ccxclient.h"
- >
- </File>
- <File
- RelativePath="..\ccxencode.h"
- >
- </File>
- <File
- RelativePath="..\ccxmltrans.h"
- >
- </File>
- <File
- RelativePath="..\ccxpacket.h"
- >
- </File>
- <File
- RelativePath="..\ccxversion.h"
- >
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{706163E2-5422-4A94-8464-082ADA8C2769}</ProjectGuid>
- <RootNamespace>libXBMS</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\xbmc\win32\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <CompileAs>CompileAsC</CompileAs>
- </ClCompile>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <Optimization>Full</Optimization>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <WholeProgramOptimization>false</WholeProgramOptimization>
- <AdditionalIncludeDirectories>..\..\..\xbmc\win32\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <CompileAs>CompileAsC</CompileAs>
- </ClCompile>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="..\ccbuffer.c" />
- <ClCompile Include="..\ccutil.c" />
- <ClCompile Include="..\ccxclient.c" />
- <ClCompile Include="..\ccxclientconnxbox.c" />
- <ClCompile Include="..\ccxdiscover.c" />
- <ClCompile Include="..\ccxencode.c" />
- <ClCompile Include="..\ccxmltrans.c" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\ccbuffer.h" />
- <ClInclude Include="..\ccincludes.h" />
- <ClInclude Include="..\ccutil.h" />
- <ClInclude Include="..\ccxclient.h" />
- <ClInclude Include="..\ccxencode.h" />
- <ClInclude Include="..\ccxmltrans.h" />
- <ClInclude Include="..\ccxpacket.h" />
- <ClInclude Include="..\ccxversion.h" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\ccbuffer.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\ccutil.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\ccxclient.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\ccxclientconnxbox.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\ccxdiscover.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\ccxencode.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\ccxmltrans.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\ccbuffer.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\ccincludes.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\ccutil.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\ccxclient.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\ccxencode.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\ccxmltrans.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\ccxpacket.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\ccxversion.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
-</Project>
\ No newline at end of file
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpcre", "..\..\lib\win32\pcre\libpcre\libpcre.vcxproj", "{D8097C41-605D-4917-8957-9DF7F44A18CD}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libXBMS", "..\..\lib\libXBMS\libXBMS\libXBMS.vcxproj", "{706163E2-5422-4A94-8464-082ADA8C2769}"
-EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libXDAAP", "..\..\lib\libXDAAP\libXDAAP_win32\libXDAAP_win32.vcxproj", "{19B16CD0-3B47-47B7-AB0E-81EF2BF1B187}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libenca", "..\..\lib\enca\libenca_win32\libenca_win32.vcxproj", "{22B25AEC-7223-46FC-8356-4418327EFDE1}"
{D8097C41-605D-4917-8957-9DF7F44A18CD}.Release (DirectX)|Win32.Build.0 = Release|Win32
{D8097C41-605D-4917-8957-9DF7F44A18CD}.Release (OpenGL)|Win32.ActiveCfg = Release|Win32
{D8097C41-605D-4917-8957-9DF7F44A18CD}.Release (OpenGL)|Win32.Build.0 = Release|Win32
- {706163E2-5422-4A94-8464-082ADA8C2769}.Debug (DirectX)|Win32.ActiveCfg = Debug|Win32
- {706163E2-5422-4A94-8464-082ADA8C2769}.Debug (DirectX)|Win32.Build.0 = Debug|Win32
- {706163E2-5422-4A94-8464-082ADA8C2769}.Debug (OpenGL)|Win32.ActiveCfg = Debug|Win32
- {706163E2-5422-4A94-8464-082ADA8C2769}.Debug (OpenGL)|Win32.Build.0 = Debug|Win32
- {706163E2-5422-4A94-8464-082ADA8C2769}.Release (DirectX)|Win32.ActiveCfg = Release|Win32
- {706163E2-5422-4A94-8464-082ADA8C2769}.Release (DirectX)|Win32.Build.0 = Release|Win32
- {706163E2-5422-4A94-8464-082ADA8C2769}.Release (OpenGL)|Win32.ActiveCfg = Release|Win32
- {706163E2-5422-4A94-8464-082ADA8C2769}.Release (OpenGL)|Win32.Build.0 = Release|Win32
{19B16CD0-3B47-47B7-AB0E-81EF2BF1B187}.Debug (DirectX)|Win32.ActiveCfg = Debug|Win32
{19B16CD0-3B47-47B7-AB0E-81EF2BF1B187}.Debug (DirectX)|Win32.Build.0 = Debug|Win32
{19B16CD0-3B47-47B7-AB0E-81EF2BF1B187}.Debug (OpenGL)|Win32.ActiveCfg = Debug|Win32
<ClCompile Include="..\..\xbmc\FileSystem\FileShoutcast.cpp" />
<ClCompile Include="..\..\xbmc\FileSystem\FileSpecialProtocol.cpp" />
<ClCompile Include="..\..\xbmc\FileSystem\FileTuxBox.cpp" />
- <ClCompile Include="..\..\xbmc\FileSystem\FileXBMSP.cpp" />
<ClCompile Include="..\..\xbmc\FileSystem\FileZip.cpp" />
<ClCompile Include="..\..\xbmc\FileSystem\FTPDirectory.cpp" />
<ClCompile Include="..\..\xbmc\FileSystem\FTPParse.cpp" />
<ClCompile Include="..\..\xbmc\FileSystem\VTPDirectory.cpp" />
<ClCompile Include="..\..\xbmc\FileSystem\VTPFile.cpp" />
<ClCompile Include="..\..\xbmc\FileSystem\VTPSession.cpp" />
- <ClCompile Include="..\..\xbmc\FileSystem\XBMSDirectory.cpp" />
<ClCompile Include="..\..\xbmc\FileSystem\ZipDirectory.cpp" />
<ClCompile Include="..\..\xbmc\FileSystem\ZipManager.cpp" />
<ClCompile Include="..\..\xbmc\FileSystem\MusicDatabaseDirectory\DirectoryNode.cpp" />
<ClInclude Include="..\..\xbmc\FileSystem\FileShoutcast.h" />
<ClInclude Include="..\..\xbmc\FileSystem\FileSpecialProtocol.h" />
<ClInclude Include="..\..\xbmc\FileSystem\FileTuxBox.h" />
- <ClInclude Include="..\..\xbmc\FileSystem\FileXBMSP.h" />
<ClInclude Include="..\..\xbmc\FileSystem\FileZip.h" />
<ClInclude Include="..\..\xbmc\FileSystem\FTPDirectory.h" />
<ClInclude Include="..\..\xbmc\FileSystem\FTPParse.h" />
<ClInclude Include="..\..\xbmc\FileSystem\VTPDirectory.h" />
<ClInclude Include="..\..\xbmc\FileSystem\VTPFile.h" />
<ClInclude Include="..\..\xbmc\FileSystem\VTPSession.h" />
- <ClInclude Include="..\..\xbmc\FileSystem\XBMSDirectory.h" />
<ClInclude Include="..\..\xbmc\FileSystem\ZipDirectory.h" />
<ClInclude Include="..\..\xbmc\FileSystem\ZipManager.h" />
<ClInclude Include="..\..\xbmc\FileSystem\MusicDatabaseDirectory\DirectoryNode.h" />
<ClCompile Include="..\..\xbmc\FileSystem\FileTuxBox.cpp">
<Filter>filesystem</Filter>
</ClCompile>
- <ClCompile Include="..\..\xbmc\FileSystem\FileXBMSP.cpp">
- <Filter>filesystem</Filter>
- </ClCompile>
<ClCompile Include="..\..\xbmc\FileSystem\FileZip.cpp">
<Filter>filesystem</Filter>
</ClCompile>
<ClCompile Include="..\..\xbmc\FileSystem\VTPSession.cpp">
<Filter>filesystem</Filter>
</ClCompile>
- <ClCompile Include="..\..\xbmc\FileSystem\XBMSDirectory.cpp">
- <Filter>filesystem</Filter>
- </ClCompile>
<ClCompile Include="..\..\xbmc\FileSystem\ZipDirectory.cpp">
<Filter>filesystem</Filter>
</ClCompile>
<ClInclude Include="..\..\xbmc\FileSystem\FileTuxBox.h">
<Filter>filesystem</Filter>
</ClInclude>
- <ClInclude Include="..\..\xbmc\FileSystem\FileXBMSP.h">
- <Filter>filesystem</Filter>
- </ClInclude>
<ClInclude Include="..\..\xbmc\FileSystem\FileZip.h">
<Filter>filesystem</Filter>
</ClInclude>
<ClInclude Include="..\..\xbmc\FileSystem\VTPSession.h">
<Filter>filesystem</Filter>
</ClInclude>
- <ClInclude Include="..\..\xbmc\FileSystem\XBMSDirectory.h">
- <Filter>filesystem</Filter>
- </ClInclude>
<ClInclude Include="..\..\xbmc\FileSystem\ZipDirectory.h">
<Filter>filesystem</Filter>
</ClInclude>
return URIUtils::IsSmb(m_strPath);
}
-bool CFileItem::IsXBMS() const
-{
- return URIUtils::IsXBMS(m_strPath);
-}
-
bool CFileItem::IsURL() const
{
return URIUtils::IsURL(m_strPath);
if (item->m_bIsFolder)
{
// only check known fast sources?
- // xbms included because it supports file existance
// NOTES:
- // 1. xbms would not have worked previously: item->m_strPath.Left(5).Equals("xbms", false)
- // 2. rars and zips may be on slow sources? is this supposed to be allowed?
+ // 1. rars and zips may be on slow sources? is this supposed to be allowed?
if( !item->IsRemote()
|| item->IsSmb()
- || item->IsXBMS()
|| URIUtils::IsInRAR(item->m_strPath)
|| URIUtils::IsInZIP(item->m_strPath)
)
strFilename = url.GetHostName();
}
}
- // XBMSP Network
- else if (url.GetProtocol() == "xbms" && strFilename.IsEmpty())
- strFilename = "XBMSP Network";
-
// iTunes music share (DAAP)
else if (url.GetProtocol() == "daap" && strFilename.IsEmpty())
strFilename = g_localizeStrings.Get(20174);
CUtil::SplitExecFunction("ActivateWindow(Video, \"C:\\\\\\\\test\\\\\\foo\\\\\")", function, params);
if (function != "ActivateWindow" || params.size() != 2 || params[0] != "Video" || params[1] != "C:\\\\test\\\\foo\\")
return false;
+ CUtil::SplitExecFunction("SetProperty(Foo,\"\")", function, params);
+ if (function != "SetProperty" || params.size() != 2 || params[0] != "Foo" || params[1] != "")
+ return false;
return true;
}
#endif
CLog::Log(LOGWARNING, "%s(%s) - end of string while searching for ) or \"", __FUNCTION__, execString.c_str());
if (whiteSpacePos)
parameter = parameter.Left(whiteSpacePos);
- if (!parameter.IsEmpty())
+ if (!parameter.IsEmpty() || parameters.size())
parameters.push_back(parameter);
}
#include "SMBDirectory.h"
#endif
#endif
-#if defined(HAS_FILESYSTEM_CCX)
-#include "XBMSDirectory.h"
-#endif
#ifdef HAS_FILESYSTEM_CDDA
#include "CDDADirectory.h"
#endif
if (strProtocol == "smb") return new CSMBDirectory();
#endif
#endif
-#ifdef HAS_FILESYSTEM_CCX
- if (strProtocol == "xbms") return new CXBMSDirectory();
-#endif
#ifdef HAS_FILESYSTEM
#ifdef HAS_FILESYSTEM_DAAP
if (strProtocol == "daap") return new CDAAPDirectory();
#include "FileSmb.h"
#endif
#endif
-#ifdef HAS_FILESYSTEM_CCX
-#include "FileXBMSP.h"
-#endif
#ifdef HAS_FILESYSTEM_CDDA
#include "FileCDDA.h"
#endif
else if (strProtocol == "smb") return new CFileSMB();
#endif
#endif
-#ifdef HAS_FILESYSTEM_CCX
- else if (strProtocol == "xbms") return new CFileXBMSP();
-#endif
#ifdef HAS_FILESYSTEM
#ifdef HAS_FILESYSTEM_RTV
else if (strProtocol == "rtv") return new CFileRTV();
+++ /dev/null
-/*
-* XBMC Media Center
-* Copyright (c) 2002 Frodo
-* Portions Copyright (c) by the authors of ffmpeg and xvid
-*
-* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "FileXBMSP.h"
-#include "utils/URIUtils.h"
-#include "Directory.h"
-#include "SectionLoader.h"
-#include "URL.h"
-#include "settings/AdvancedSettings.h"
-#include "utils/CharsetConverter.h"
-#include "utils/log.h"
-
-#include <sys/stat.h>
-
-using namespace XFILE;
-
-namespace XFILE
-{
-
-static UINT64 strtouint64(const char *s)
-{
- UINT64 r = 0;
-
- while ((*s != 0) && (isspace(*s)))
- s++;
- if (*s == '+')
- s++;
- while ((*s != 0) && (isdigit(*s)))
- {
- r = r * ((UINT64)10);
- r += ((UINT64)(*s)) - ((UINT64)'0');
- s++;
- }
- return r;
-}
-
-//////////////////////////////////////////////////////////////////////
-// Construction/Destruction
-//////////////////////////////////////////////////////////////////////
-
-CFileXBMSP::CFileXBMSP()
-{
- CSectionLoader::Load("LIBXBMS");
- m_fileSize = 0;
- m_bOpened = false;
-}
-
-CFileXBMSP::~CFileXBMSP()
-{
- Close();
- CSectionLoader::Unload("LIBXBMS");
-}
-
-//*********************************************************************************************
-bool CFileXBMSP::Open(const CURL& urlUtf8)
-{
- CStdString strURL = urlUtf8.Get();
- g_charsetConverter.utf8ToStringCharset(strURL);
-
- CURL url(strURL);
- const char* strUserName = url.GetUserName().c_str();
- const char* strPassword = url.GetPassWord().c_str();
- const char* strHostName = url.GetHostName().c_str();
- const char* strFileName = url.GetFileName().c_str();
- int iport = url.GetPort();
-
- char *tmp1, *tmp2, *info;
-
- if (m_bOpened) Close();
-
- m_bOpened = false;
- m_fileSize = 0;
- m_filePos = 0;
-
- if (g_advancedSettings.m_logLevel >= LOG_LEVEL_DEBUG_SAMBA)
- CLog::Log(LOGDEBUG,"xbms:open: %s",strFileName);
-
- if (cc_xstream_client_connect(strHostName,
- (iport > 0) ? iport : 1400,
- &m_connection) != CC_XSTREAM_CLIENT_OK)
- {
- CLog::Log(LOGDEBUG, "xbms:unable to connect");
- return false;
- }
- if (cc_xstream_client_version_handshake(m_connection) != CC_XSTREAM_CLIENT_OK)
- {
- CLog::Log(LOGDEBUG, "xbms:unable handshake");
- cc_xstream_client_disconnect(m_connection);
-
- return false;
- }
-
- // Authenticate here!
- if ((strPassword != NULL) && (strlen(strPassword) > 0))
- {
- // We don't check the return value here. If authentication
- // step fails, let's try if server lets us log in without
- // authentication.
- cc_xstream_client_password_authenticate(m_connection,
- (strUserName != NULL) ? strUserName : "",
- strPassword);
- }
-
- CStdString strFile = URIUtils::GetFileName(strFileName);
-
- char szPath[1024];
- strcpy(szPath, "");
- if (strFile.size() != strlen(strFileName) )
- {
- strncpy(szPath, strFileName, strlen(strFileName) - (strFile.size() + 1) );
- szPath[ strlen(strFileName) - (strFile.size() + 1)] = 0;
- }
-
-
- CStdString strDir;
- strDir = "";
-
- if (g_advancedSettings.m_logLevel >= LOG_LEVEL_DEBUG_SAMBA)
- CLog::Log(LOGDEBUG,"xbms:setdir:/");
-
- if (cc_xstream_client_setcwd(m_connection, "/") == CC_XSTREAM_CLIENT_OK)
- {
- CStdString strPath = szPath;
- for (int i = 0; i < (int)strPath.size(); ++i)
- {
- if (strPath[i] == '/' || strPath[i] == '\\')
- {
- if (strDir != "")
- {
- if (g_advancedSettings.m_logLevel >= LOG_LEVEL_DEBUG_SAMBA)
- CLog::Log(LOGDEBUG,"xbms:setdir: %s",strDir.c_str());
-
- if (cc_xstream_client_setcwd(m_connection, strDir.c_str()) != CC_XSTREAM_CLIENT_OK)
- {
- CLog::Log(LOGDEBUG, "xbms:unable set dir");
- if (m_connection != 0) cc_xstream_client_disconnect(m_connection);
- return false;
- }
- }
- strDir = "";
- }
- else
- {
- strDir += strPath[i];
- }
- }
- }
- else
- {
- CLog::Log(LOGDEBUG, "xbms:unable set dir");
- if (m_connection != 0) cc_xstream_client_disconnect(m_connection);
- return false;
- }
- if (strDir.size() > 0)
- {
- if (g_advancedSettings.m_logLevel >= LOG_LEVEL_DEBUG_SAMBA)
- CLog::Log(LOGDEBUG,"xbms:setdir: %s",strDir.c_str());
-
- if (cc_xstream_client_setcwd(m_connection, strDir.c_str()) != CC_XSTREAM_CLIENT_OK)
- {
- CLog::Log(LOGDEBUG, "xbms:unable set dir");
- if (m_connection != 0) cc_xstream_client_disconnect(m_connection);
- return false;
- }
- }
-
- if (cc_xstream_client_file_info(m_connection, strFile.c_str(), &info) != CC_XSTREAM_CLIENT_OK)
- {
- CLog::Log(LOGDEBUG, "xbms:unable to get info for file: %s", strFile.c_str());
- cc_xstream_client_disconnect(m_connection);
- return false;
- }
-
- if (strstr(info, "<ATTRIB>file</ATTRIB>") != NULL)
- {
- tmp1 = strstr(info, "<SIZE>");
- tmp2 = strstr(info, "</SIZE>");
- if ((tmp1 != NULL) && (tmp2 != NULL) && (tmp2 > tmp1) && ((tmp2 - tmp1) < 22))
- {
- m_fileSize = strtouint64(tmp1 + 6);
- }
- else
- {
- m_fileSize = 4000000000U;
- }
- }
- else
- {
- m_fileSize = 4000000000U;
- }
- free(info);
-
- if (cc_xstream_client_file_open(m_connection, strFile.c_str(), &m_handle) != CC_XSTREAM_CLIENT_OK)
- {
- CLog::Log(LOGDEBUG, "xbms:unable to open file: %s", strFile.c_str());
- cc_xstream_client_disconnect(m_connection);
-
- return false;
- }
- m_bOpened = true;
-
- return true;
-}
-
-bool CFileXBMSP::Exists(const CURL& url)
-{
- bool exist(true);
- exist = CFileXBMSP::Open(url);
- Close();
- return exist;
-}
-
-int CFileXBMSP::Stat(const CURL& url, struct __stat64* buffer)
-{
- memset(buffer, 0, sizeof(struct __stat64));
- if (Open(url))
- {
- buffer->st_size = this->m_fileSize;
- buffer->st_mode = _S_IFREG;
- Close();
- errno = 0;
- return 0;
- }
-
- int dot = url.GetFileName().rfind('.');
- int slash = url.GetFileName().rfind('/');
- if (dot <= slash)
- if (CDirectory::Exists(url.Get()))
- {
- buffer->st_mode = _S_IFDIR;
- return 0;
- }
-
- errno = ENOENT;
- return -1;
-}
-
-//*********************************************************************************************
-unsigned int CFileXBMSP::Read(void *lpBuf, int64_t uiBufSize)
-{
- unsigned char *buf = NULL;
- size_t buflen = 0;
- size_t readsize;
-
- if (!m_bOpened) return 0;
-
- /* ccx has a max read size of 120k */
- if(uiBufSize > 120*1024)
- readsize = 120*1024;
- else
- readsize = (size_t)uiBufSize;
-
- if (cc_xstream_client_file_read(m_connection, m_handle, readsize, &buf, &buflen) !=
- CC_XSTREAM_CLIENT_OK)
- {
- CLog::Log(LOGERROR, "xbms:cc_xstream_client_file_read reported error on read");
- free(buf);
- return 0;
- }
- memcpy(lpBuf, buf, buflen);
- m_filePos += buflen;
-
- free(buf);
-
- return buflen;
-}
-
-//*********************************************************************************************
-void CFileXBMSP::Close()
-{
-
- if (m_bOpened)
- {
- cc_xstream_client_close(m_connection, m_handle);
- cc_xstream_client_disconnect(m_connection);
- }
- m_bOpened = false;
- m_fileSize = 0;
-}
-
-//*********************************************************************************************
-int64_t CFileXBMSP::Seek(int64_t iFilePosition, int iWhence)
-{
- UINT64 newpos;
-
- if (!m_bOpened) return -1;
-
- switch (iWhence)
- {
- case SEEK_SET:
- // cur = pos
- newpos = iFilePosition;
- break;
- case SEEK_CUR:
- // cur += pos
- newpos = m_filePos + iFilePosition;
- break;
- case SEEK_END:
- // end += pos
- newpos = m_fileSize + iFilePosition;
- break;
- default:
- return -1;
- }
-
- // We can't seek beyond EOF
- if (newpos > m_fileSize) return -1;
-
- if (newpos == m_filePos) return m_filePos;
-
- if ( newpos == 0 )
- {
- // goto beginning
- if (cc_xstream_client_file_rewind(m_connection, m_handle) == CC_XSTREAM_CLIENT_OK)
- {
- m_filePos = newpos;
- }
- else
- {
- return -1;
- }
- }
- else if ( newpos == m_fileSize )
- {
- // goto end
- if (cc_xstream_client_file_end(m_connection, m_handle) == CC_XSTREAM_CLIENT_OK)
- {
- m_filePos = newpos;
- }
- else
- {
- return -1;
- }
- }
- else if (newpos > m_filePos)
- {
- //Fix for broken seeking when we are at position 0 when using -dvd-device
- if (m_filePos == 0)
- {
- char cBuf[1];
- Read(cBuf, 1);
- }
- if (newpos == m_filePos) return m_filePos;
- if (cc_xstream_client_file_forward(m_connection, m_handle, (size_t)(newpos - m_filePos), 0) == CC_XSTREAM_CLIENT_OK)
- {
- m_filePos = newpos;
- }
- else
- {
- return -1;
- }
- }
- else if (newpos < m_filePos)
- {
- if (cc_xstream_client_file_backwards(m_connection, m_handle, (size_t)(m_filePos - newpos), 0) == CC_XSTREAM_CLIENT_OK)
- {
- m_filePos = newpos;
- }
- else
- {
- return -1;
- }
- }
- return m_filePos;
-}
-
-//*********************************************************************************************
-int64_t CFileXBMSP::GetLength()
-{
- if (!m_bOpened) return 0;
- return m_fileSize;
-}
-
-//*********************************************************************************************
-int64_t CFileXBMSP::GetPosition()
-{
- if (!m_bOpened) return 0;
- return m_filePos;
-}
-
-}
-
-
+++ /dev/null
-/*
-* XBMC Media Center
-* Copyright (c) 2002 Frodo
-* Portions Copyright (c) by the authors of ffmpeg and xvid
-*
-* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-// FileXBMSP.h: interface for the CFileXBMSP class.
-//
-//////////////////////////////////////////////////////////////////////
-
-#if !defined(AFX_FILEXMBMSP_H___INCLUDED_)
-#define AFX_FILEXMBMSP_H___INCLUDED_
-
-#if _MSC_VER > 1000
-#pragma once
-#endif // _MSC_VER > 1000
-
-#include "IFile.h"
-
-#ifdef _LINUX
-#include "PlatformDefs.h" // SOCKET
-#endif
-
-extern "C"
-{
-#include "libXBMS/ccincludes.h"
-#include "libXBMS/ccxclient.h"
-}
-
-namespace XFILE
-{
-
-class CFileXBMSP : public IFile
-{
-public:
- CFileXBMSP();
- virtual ~CFileXBMSP();
- virtual int64_t GetPosition();
- virtual int64_t GetLength();
- virtual bool Open(const CURL& url);
- virtual bool Exists(const CURL& url);
- virtual int Stat(const CURL& url, struct __stat64* buffer);
- virtual unsigned int Read(void* lpBuf, int64_t uiBufSize);
- virtual int64_t Seek(int64_t iFilePosition, int iWhence = SEEK_SET);
- virtual void Close();
-protected:
- uint64_t m_fileSize;
- uint64_t m_filePos;
- SOCKET m_socket;
-private:
- CcXstreamServerConnection m_connection;
- unsigned long m_handle;
- bool m_bOpened;
-
-};
-}
-
-#endif // !defined(AFX_FILEXMBMSP_H___INCLUDED_)
ifeq (@HAVE_XBMC_NONFREE@,1)
SRCS+=FileRar.cpp \
- FileXBMSP.cpp \
RarDirectory.cpp \
RarManager.cpp \
- XBMSDirectory.cpp \
endif
+++ /dev/null
-/*
- * Copyright (C) 2005-2008 Team XBMC
- * http://www.xbmc.org
- *
- * 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, 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 XBMC; see the file COPYING. If not, write to
- * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include "XBMSDirectory.h"
-#include "SectionLoader.h"
-#include "URL.h"
-#include "FileItem.h"
-#include "utils/CharsetConverter.h"
-#include "utils/URIUtils.h"
-
-using namespace XFILE;
-
-extern "C"
-{
-#include "libXBMS/ccincludes.h"
-#include "libXBMS/ccbuffer.h"
-#include "libXBMS/ccxclient.h"
-#include "libXBMS/ccxmltrans.h"
-}
-
-
-struct DiscoveryCallbackContext
-{
- CFileItemList *items;
- const char *username;
- const char *password;
-};
-
-static void DiscoveryCallback(const char *addr, const char *port, const char *version,
- const char *comment, void *context);
-
-CXBMSDirectory::CXBMSDirectory(void)
-{
- CSectionLoader::Load("LIBXBMS");
-}
-
-CXBMSDirectory::~CXBMSDirectory(void)
-{
- CSectionLoader::Unload("LIBXBMS");
-}
-
-bool CXBMSDirectory::GetDirectory(const CStdString& strPathUtf8, CFileItemList &items)
-{
- unsigned long handle;
- char *filename, *fileinfo;
-
- CStdString strPath=strPathUtf8;
- g_charsetConverter.utf8ToStringCharset(strPath);
-
- CURL url(strPath);
-
- CStdString strRoot = strPath;
- URIUtils::AddSlashAtEnd(strPath);
-
- CcXstreamServerConnection conn = 0;
-
- if (strPath == "xbms://")
- {
- if (url.GetFileName() == "")
- {
- int iOldSize=items.Size();
- // Let's do the automatic discovery.
- struct DiscoveryCallbackContext dc_context;
- CStdString strPassword = url.GetPassWord();
- CStdString strUserName = url.GetUserName();
-
- dc_context.items = &items;
- dc_context.username = ((strUserName.c_str() != NULL) && (strlen(strUserName.c_str()) > 0)) ? strUserName.c_str() : NULL;
- dc_context.password = ((strPassword.c_str() != NULL) && (strlen(strPassword.c_str()) > 0)) ? strPassword.c_str() : NULL;
- ccx_client_discover_servers(DiscoveryCallback, (void *)(&dc_context));
-
- return (items.Size()>iOldSize);
- }
- }
-
- if (cc_xstream_client_connect(url.GetHostName().c_str(),
- (url.HasPort()) ? url.GetPort() : 1400, &conn) != CC_XSTREAM_CLIENT_OK)
- {
- if (conn != 0) cc_xstream_client_disconnect(conn);
-
- return false;
- }
-
- if (cc_xstream_client_version_handshake(conn) != CC_XSTREAM_CLIENT_OK)
- {
- if (conn != 0) cc_xstream_client_disconnect(conn);
-
- return false;
- }
-
- // Authenticate here!
- CStdString strPassword = url.GetPassWord();
- CStdString strUserName = url.GetUserName();
- if (strPassword.size() && strUserName.size())
- {
- // We don't check the return value here. If authentication
- // step fails, let's try if server lets us log in without
- // authentication.
- cc_xstream_client_password_authenticate(conn,
- strUserName.c_str(),
- strPassword.c_str() );
- }
- CStdString strFileName = url.GetFileName();
- CStdString strDir;
- strDir = "";
- if (cc_xstream_client_setcwd(conn, "/") == CC_XSTREAM_CLIENT_OK)
- {
- CStdString strFile = url.GetFileName();
- for (int i = 0; i < (int)strFile.size(); ++i)
- {
- if (strFile[i] == '/' || strFile[i] == '\\')
- {
- if (strDir != "")
- {
- if (cc_xstream_client_setcwd(conn, strDir.c_str()) != CC_XSTREAM_CLIENT_OK)
- {
- if (conn != 0) cc_xstream_client_disconnect(conn);
- return false;
- }
- }
- strDir = "";
- }
- else
- {
- strDir += strFile[i];
- }
- }
- }
- else
- {
- if (conn != 0) cc_xstream_client_disconnect(conn);
- return false;
- }
- if (strDir.size() > 0)
- {
- if (cc_xstream_client_setcwd(conn, strDir.c_str()) != CC_XSTREAM_CLIENT_OK)
- {
- if (conn != 0) cc_xstream_client_disconnect(conn);
-
- return false;
- }
- }
-
- if (cc_xstream_client_dir_open(conn, &handle) != CC_XSTREAM_CLIENT_OK)
- {
- if (conn != 0) cc_xstream_client_disconnect(conn);
-
- return false;
- }
-
- while (cc_xstream_client_dir_read(conn, handle, &filename, &fileinfo) == CC_XSTREAM_CLIENT_OK)
- {
- if (*filename == '\0')
- {
- free(filename);
- free(fileinfo);
- break;
- }
- bool bIsDirectory = false;
-
- if (strstr(fileinfo, "<ATTRIB>directory</ATTRIB>"))
- bIsDirectory = true;
-
- CStdString strLabel=filename;
- g_charsetConverter.unknownToUTF8(strLabel);
- CFileItemPtr pItem(new CFileItem(strLabel));
-
- char* pstrSizeStart = strstr(fileinfo, "<SIZE>");
- char* pstrSizeEnd = strstr(fileinfo, "</SIZE>");
- if (pstrSizeStart && pstrSizeEnd)
- {
- char szSize[128];
- pstrSizeStart += strlen("<SIZE>");
- strncpy(szSize, pstrSizeStart, pstrSizeEnd - pstrSizeStart);
- szSize[pstrSizeEnd - pstrSizeStart] = 0;
- pItem->m_dwSize = _atoi64(szSize);
- }
-
- char* pstrModificationStart = strstr(fileinfo, "<MODIFICATION>");
- char* pstrModificationEnd = strstr(fileinfo, "</MODIFICATION>");
- if (pstrModificationStart && pstrModificationEnd)
- {
- char szModification[128];
- pstrModificationStart += strlen("<MODIFICATION>");
- strncpy(szModification, pstrModificationStart, pstrModificationEnd - pstrModificationStart);
- szModification[pstrModificationEnd - pstrModificationStart] = 0;
- int64_t lTimeDate = _atoi64(szModification);
-
- FILETIME fileTime, localTime;
- LONGLONG ll = Int32x32To64(lTimeDate, 10000000) + 116444736000000000LL;
- fileTime.dwLowDateTime = (DWORD) (ll & 0xFFFFFFFF);
- fileTime.dwHighDateTime = (DWORD)(ll >> 32);
-
- FileTimeToLocalFileTime(&fileTime, &localTime);
- pItem->m_dateTime=localTime;
-
- }
-
-
- pItem->m_strPath = strRoot;
- pItem->m_strPath += filename;
- g_charsetConverter.unknownToUTF8(pItem->m_strPath);
- pItem->m_bIsFolder = bIsDirectory;
- if (pItem->m_bIsFolder)
- URIUtils::AddSlashAtEnd(pItem->m_strPath);
-
- items.Add(pItem);
-
- free(filename);
- free(fileinfo);
- }
- cc_xstream_client_close_all(conn);
-
- if (conn != 0)
- cc_xstream_client_disconnect(conn);
-
- return true;
-}
-
-static void DiscoveryCallback(const char *addr, const char *port, const char *version,
- const char *comment, void *context)
-{
- struct DiscoveryCallbackContext *c = (struct DiscoveryCallbackContext *)context;
-
- //Construct name
- CStdString itemName = "Server: ";
- CStdString strPath = "xbms://";
- itemName += addr;
-
- if (strcmp(port, "1400") != 0)
- {
- itemName += " Port: ";
- itemName += port;
- }
- if (strlen(comment) > 0)
- {
- itemName += " (";
- itemName += comment;
- itemName += ")";
- }
-
- // Construct URL
- if (c->username != NULL)
- {
- strPath += c->username;
- if (c->password != NULL)
- {
- strPath += ":";
- strPath += c->password;
- }
- strPath += "@";
- }
- strPath += addr;
- strPath += ":";
- strPath += port;
- strPath += "/";
-
- // Add to items
- g_charsetConverter.unknownToUTF8(itemName);
- CFileItemPtr pItem(new CFileItem(itemName));
- pItem->m_strPath = strPath;
- g_charsetConverter.unknownToUTF8(pItem->m_strPath);
- pItem->m_bIsFolder = true;
- pItem->m_bIsShareOrDrive = true;
- pItem->SetIconImage("DefaultNetwork.png");
- c->items->Add(pItem);
-}
-bool CXBMSDirectory::Exists(const char* strPath)
-{
- CFileItemList items;
- CStdString strPath2(strPath);
- if (GetDirectory(strPath2,items))
- return true;
-
- return false;
-}
-
+++ /dev/null
-#pragma once
-/*
- * Copyright (C) 2005-2008 Team XBMC
- * http://www.xbmc.org
- *
- * 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, 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 XBMC; see the file COPYING. If not, write to
- * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include "IDirectory.h"
-
-namespace XFILE
-{
-class CXBMSDirectory :
- public IDirectory
-{
-public:
- CXBMSDirectory(void);
- virtual ~CXBMSDirectory(void);
- virtual bool GetDirectory(const CStdString& strPath, CFileItemList &items);
- virtual bool Exists(const char* strPath);
-};
-}
}
CGImageRef image = CGImageSourceCreateImageAtIndex(imageSource, 0, NULL);
-
- //get the orientation of the image for displaying it correctly
- CFDictionaryRef imagePropertiesDictionary = CGImageSourceCopyPropertiesAtIndex(imageSource,0, NULL);
- if (imagePropertiesDictionary != nil)
- {
- CFNumberRef orientation = (CFNumberRef)CFDictionaryGetValue(imagePropertiesDictionary, kCGImagePropertyOrientation);
- if (orientation != nil)
+
+ int rotate = 0;
+ if (autoRotate)
+ { // get the orientation of the image for displaying it correctly
+ CFDictionaryRef imagePropertiesDictionary = CGImageSourceCopyPropertiesAtIndex(imageSource,0, NULL);
+ if (imagePropertiesDictionary != nil)
{
- int switchValue = 0;
- int rotationAngle = 0;
- CFNumberGetValue(orientation, kCFNumberIntType, &switchValue);
- // possible values taken from
- // http://developer.apple.com/library/mac/#samplecode/ImageApp/Listings/ImageDoc_m.html
- switch(switchValue)
- {
- case 3: //rotated 180°
- rotationAngle = 180;
- break;
- case 6: //rotated 90°
- rotationAngle = 270;
- break;
- case 8: //rotated 270°
- rotationAngle = 90;
- break;
- }
-
- //rotate the image if needed
- if (rotationAngle != 0)
+ CFNumberRef orientation = (CFNumberRef)CFDictionaryGetValue(imagePropertiesDictionary, kCGImagePropertyOrientation);
+ if (orientation != nil)
{
- CLog::Log(LOGDEBUG,"Rotating the image about %i degrees", rotationAngle);
- CGImageRef rotatedImage = CGImageCreateRotatedByAngle(image, (float)rotationAngle);
- CFRelease(image);
- image = rotatedImage;
+ int value = 0;
+ CFNumberGetValue(orientation, kCFNumberIntType, &value);
+ if (value)
+ rotate = value - 1;
}
}
}
CLog::Log(LOGDEBUG, "Texture manager texture clamp:new texture size: %i x %i", width, height);
}
- Allocate(width, height, XB_FMT_A8R8G8B8);
+ Allocate(width, height, XB_FMT_A8R8G8B8);
+ m_orientation = rotate;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
if (window)
window->SetProperty(params[0],params[1]);
}
- else if (execute.Equals("clearproperty") && params.size() == 2)
+ else if (execute.Equals("clearproperty") && params.size())
{
CGUIWindow *window = g_windowManager.GetWindow(g_windowManager.GetFocusedWindow());
if (window)
if (!param.isMember("fields"))
param["fields"] = Value(arrayValue);
param["fields"].append("genre");
+ param["fields"].append("thumbnail");
CFileItemList items;
if (musicdatabase.GetGenresNav("", items))
}
}
- if (serialization.isMember(field))
+ if (serialization.isMember(field) && !result.isMember(field))
result[field] = serialization[field];
}
}
void CFileItemHandler::HandleFileItem(const char *ID, bool allowFile, const char *resultname, CFileItemPtr item, const Json::Value ¶meterObject, const Json::Value &validFields, Json::Value &result)
{
Value object;
- if (allowFile)
+ bool hasFileField = false;
+ bool hasThumbnailField = false;
+
+ for (unsigned int i = 0; i < validFields.size(); i++)
+ {
+ CStdString field = validFields[i].asString();
+
+ if (field == "file")
+ hasFileField = true;
+ if (field == "thumbnail")
+ hasThumbnailField = true;
+ }
+
+ if (allowFile && hasFileField)
{
if (item->HasVideoInfoTag() && !item->GetVideoInfoTag()->m_strFileNameAndPath.IsEmpty())
object["file"] = item->GetVideoInfoTag()->m_strFileNameAndPath.c_str();
object[ID] = item->GetVideoInfoTag()->m_iDbId;
}
- if (!item->GetThumbnailImage().IsEmpty())
+ if (hasThumbnailField && !item->GetThumbnailImage().IsEmpty())
object["thumbnail"] = item->GetThumbnailImage().c_str();
if (item->HasVideoInfoTag())
filteredFiles.Add(items[i]);
}
- HandleFileItemList(NULL, true, "files", filteredDirectories, parameterObject, result);
+ // Check if the "fields" list exists
+ // and make sure it contains the "file"
+ // field
+ Value param = parameterObject;
+ if (!param.isMember("fields"))
+ param["fields"] = Value(arrayValue);
+
+ bool hasFileField = false;
+ for (unsigned int i = 0; i < param["fields"].size(); i++)
+ {
+ if (param["fields"][i].asString().compare("file") == 0)
+ {
+ hasFileField = true;
+ break;
+ }
+ }
+
+ if (!hasFileField)
+ param["fields"].append("file");
+
+ HandleFileItemList(NULL, true, "files", filteredDirectories, param, result);
for (unsigned int index = 0; index < result["files"].size(); index++)
{
result["files"][index]["filetype"] = "directory";
}
int count = result["limits"]["total"].asInt();
- HandleFileItemList(NULL, true, "files", filteredFiles, parameterObject, result);
+ HandleFileItemList(NULL, true, "files", filteredFiles, param, result);
for (unsigned int index = count; index < result["files"].size(); index++)
{
result["files"][index]["filetype"] = "file";
"\"plotoutline\", \"originaltitle\", \"lastplayed\", \"writer\", \"studio\","
"\"mpaa\", \"cast\", \"country\", \"imdbnumber\", \"premiered\", \"productioncode\","
"\"runtime\", \"set\", \"showlink\", \"streamDetails\", \"top250\", \"votes\","
- "\"writingcredits\", \"firstaired\", \"season\", \"episode\", \"showtitle\" ]"
+ "\"writingcredits\", \"firstaired\", \"season\", \"episode\", \"showtitle\","
+ "\"thumbnail\", \"file\" ]"
"}"
"},"
"{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
"\"plotoutline\", \"originaltitle\", \"lastplayed\", \"writer\", \"studio\","
"\"mpaa\", \"cast\", \"country\", \"imdbnumber\", \"premiered\", \"productioncode\","
"\"runtime\", \"set\", \"showlink\", \"streamDetails\", \"top250\", \"votes\","
- "\"writingcredits\", \"firstaired\", \"season\", \"episode\", \"showtitle\" ]"
+ "\"writingcredits\", \"firstaired\", \"season\", \"episode\", \"showtitle\","
+ "\"thumbnail\", \"file\" ]"
"}"
"},"
"{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
"\"items\": { \"type\": \"string\","
"\"enum\": [ \"instrument\", \"style\", \"mood\", \"born\", \"formed\","
"\"description\", \"genre\", \"died\", \"disbanded\","
- "\"yearsactive\", \"musicbrainzartistid\", \"fanart\" ]"
+ "\"yearsactive\", \"musicbrainzartistid\", \"fanart\","
+ "\"thumbnail\" ]"
"}"
"},"
"{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
"\"enum\": [ \"title\", \"description\", \"artist\", \"genre\","
"\"theme\", \"mood\", \"style\", \"type\", \"label\","
"\"rating\", \"year\", \"musicbrainzalbumid\","
- "\"musicbrainzalbumartistid\", \"fanart\" ]"
+ "\"musicbrainzalbumartistid\", \"fanart\", \"thumbnail\" ]"
"}"
"},"
"{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
"\"rating\", \"album\", \"track\", \"duration\", \"comment\","
"\"lyrics\", \"musicbrainztrackid\", \"musicbrainzartistid\","
"\"musicbrainzalbumid\", \"musicbrainzalbumartistid\","
- "\"playcount\", \"fanart\" ]"
+ "\"playcount\", \"fanart\", \"thumbnail\", \"file\" ]"
"}"
"},"
"{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
"\"properties\": {"
"\"songid\": { \"$ref\": \"Library.Id\", \"required\": true },"
"\"label\": { \"type\": \"string\", \"required\": true },"
- "\"file\": { \"type\": \"string\", \"required\": true },"
+ "\"file\": { \"type\": \"string\" },"
"\"fanart\": { \"type\": \"string\" },"
"\"thumbnail\": { \"type\": \"string\" },"
"\"title\": { \"type\": \"string\" },"
"\"tagline\", \"plot\", \"plotoutline\", \"originaltitle\", \"lastplayed\","
"\"playcount\", \"writer\", \"studio\", \"mpaa\", \"cast\", \"country\","
"\"imdbnumber\", \"premiered\", \"productioncode\", \"runtime\", \"set\","
- "\"showlink\", \"streamDetails\", \"top250\", \"votes\", \"writingcredits\", \"fanart\" ]"
+ "\"showlink\", \"streamDetails\", \"top250\", \"votes\", \"writingcredits\","
+ "\"fanart\", \"thumbnail\", \"file\" ]"
"}"
"},"
"{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
"\"properties\": {"
"\"movieid\": { \"$ref\": \"Library.Id\", \"required\": true },"
"\"label\": { \"type\": \"string\", \"required\": true },"
- "\"file\": { \"type\": \"string\", \"required\": true },"
+ "\"file\": { \"type\": \"string\" },"
"\"fanart\": { \"type\": \"string\" },"
"\"thumbnail\": { \"type\": \"string\" },"
"\"title\": { \"type\": \"string\" },"
"\"description\": \"Requesting the cast field will result in increased response times\","
"\"enum\": [ \"title\", \"genre\", \"year\", \"rating\", \"plot\","
"\"studio\", \"mpaa\", \"cast\", \"playcount\", \"episode\","
- "\"imdbnumber\", \"premiered\", \"votes\", \"lastplayed\", \"fanart\" ]"
+ "\"imdbnumber\", \"premiered\", \"votes\", \"lastplayed\","
+ "\"fanart\", \"thumbnail\", \"file\" ]"
"}"
"},"
"{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
"\"properties\": {"
"\"tvshowid\": { \"$ref\": \"Library.Id\", \"required\": true },"
"\"label\": { \"type\": \"string\", \"required\": true },"
- "\"file\": { \"type\": \"string\", \"required\": true },"
+ "\"file\": { \"type\": \"string\" },"
"\"fanart\": { \"type\": \"string\" },"
"\"thumbnail\": { \"type\": \"string\" },"
"\"title\": { \"type\": \"string\" },"
"{ \"name\": \"tvshowid\", \"$ref\": \"Library.Id\", \"required\": true },"
"{ \"name\": \"fields\", \"type\": \"array\", \"id\": \"Library.Fields.Season\", \"uniqueItems\": true,"
"\"items\": { \"type\": \"string\","
- "\"enum\": [ \"season\", \"showtitle\", \"playcount\", \"episode\", \"fanart\" ]"
+ "\"enum\": [ \"season\", \"showtitle\", \"playcount\", \"episode\", \"fanart\", \"thumbnail\" ]"
"}"
"},"
"{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
"\"enum\": [ \"title\", \"plot\", \"votes\", \"rating\", \"writingcredits\","
"\"firstaired\", \"playcount\", \"runtime\", \"director\","
"\"productioncode\", \"season\", \"episode\", \"originaltitle\","
- "\"showtitle\", \"cast\", \"streamDetails\", \"lastplayed\", \"fanart\" ]"
+ "\"showtitle\", \"cast\", \"streamDetails\", \"lastplayed\", \"fanart\","
+ "\"thumbnail\", \"file\" ]"
"}"
"},"
"{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
"\"properties\": {"
"\"episodeid\": { \"$ref\": \"Library.Id\", \"required\": true },"
"\"label\": { \"type\": \"string\", \"required\": true },"
- "\"file\": { \"type\": \"string\", \"required\": true },"
+ "\"file\": { \"type\": \"string\" },"
"\"fanart\": { \"type\": \"string\" },"
"\"thumbnail\": { \"type\": \"string\" },"
"\"title\": { \"type\": \"string\" },"
"\"enum\": [ \"title\", \"playcount\", \"runtime\", \"director\","
"\"studio\", \"year\", \"plot\", \"album\", \"artist\","
"\"genre\", \"track\", \"streamDetails\", \"lastplayed\","
- "\"fanart\" ]"
+ "\"fanart\", \"thumbnail\", \"file\" ]"
"}"
"},"
"{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
"\"properties\": {"
"\"musicvideoid\": { \"$ref\": \"Library.Id\", \"required\": true },"
"\"label\": { \"type\": \"string\", \"required\": true },"
- "\"file\": { \"type\": \"string\", \"required\": true },"
+ "\"file\": { \"type\": \"string\" },"
"\"fanart\": { \"type\": \"string\" },"
"\"thumbnail\": { \"type\": \"string\" },"
"\"title\": { \"type\": \"string\" },"
pSpin->AddLabel(g_localizeStrings.Get(20257), NET_PROTOCOL_VTP);
pSpin->AddLabel(g_localizeStrings.Get(20258), NET_PROTOCOL_MYTH);
pSpin->AddLabel(g_localizeStrings.Get(21331), NET_PROTOCOL_TUXBOX);
- pSpin->AddLabel(g_localizeStrings.Get(20172), NET_PROTOCOL_XBMSP);
pSpin->AddLabel(g_localizeStrings.Get(20301), NET_PROTOCOL_HTTPS);
pSpin->AddLabel(g_localizeStrings.Get(20300), NET_PROTOCOL_HTTP);
pSpin->AddLabel(g_localizeStrings.Get(20254), NET_PROTOCOL_DAVS);
m_port = "80";
else if (m_protocol == NET_PROTOCOL_HTTPS || m_protocol == NET_PROTOCOL_DAVS)
m_port = "443";
- else if (m_protocol == NET_PROTOCOL_XBMSP)
- m_port = "1400";
else if (m_protocol == NET_PROTOCOL_DAAP)
m_port = "3689";
else if (m_protocol == NET_PROTOCOL_HTSP)
{
SET_CONTROL_LABEL(CONTROL_SERVER_ADDRESS, 1009); // Server Address
}
- if (m_protocol == NET_PROTOCOL_XBMSP || m_protocol == NET_PROTOCOL_DAAP)
+ if (m_protocol == NET_PROTOCOL_DAAP)
SendMessage(GUI_MSG_SET_TYPE, CONTROL_SERVER_ADDRESS, CGUIEditControl::INPUT_TYPE_IPADDRESS, 1016);
else
SendMessage(GUI_MSG_SET_TYPE, CONTROL_SERVER_ADDRESS, CGUIEditControl::INPUT_TYPE_TEXT, 1016);
// port
SET_CONTROL_LABEL2(CONTROL_PORT_NUMBER, m_port);
- CONTROL_ENABLE_ON_CONDITION(CONTROL_PORT_NUMBER, m_protocol == NET_PROTOCOL_XBMSP ||
- m_protocol == NET_PROTOCOL_FTP ||
+ CONTROL_ENABLE_ON_CONDITION(CONTROL_PORT_NUMBER, m_protocol == NET_PROTOCOL_FTP ||
m_protocol == NET_PROTOCOL_HTTP ||
m_protocol == NET_PROTOCOL_HTTPS ||
m_protocol == NET_PROTOCOL_DAV ||
CURL url;
if (m_protocol == NET_PROTOCOL_SMB)
url.SetProtocol("smb");
- else if (m_protocol == NET_PROTOCOL_XBMSP)
- url.SetProtocol("xbms");
else if (m_protocol == NET_PROTOCOL_FTP)
url.SetProtocol("ftp");
else if (m_protocol == NET_PROTOCOL_HTTP)
(m_protocol == NET_PROTOCOL_DAV) ||
(m_protocol == NET_PROTOCOL_DAVS) ||
(m_protocol == NET_PROTOCOL_RSS) ||
- (m_protocol == NET_PROTOCOL_XBMSP && !m_server.IsEmpty()) ||
(m_protocol == NET_PROTOCOL_DAAP && !m_server.IsEmpty()) ||
(m_protocol == NET_PROTOCOL_HTSP) ||
(m_protocol == NET_PROTOCOL_VTP) ||
const CStdString &protocol = url.GetProtocol();
if (protocol == "smb")
m_protocol = NET_PROTOCOL_SMB;
- else if (protocol == "xbms")
- m_protocol = NET_PROTOCOL_XBMSP;
else if (protocol == "ftp")
m_protocol = NET_PROTOCOL_FTP;
else if (protocol == "http")
int GetDarwinExecutablePath(char* path, uint32_t *pathsize);
bool DarwinHasVideoToolboxDecoder(void);
-
- typedef struct CGImage *CGImageRef;
- CGImageRef CGImageCreateRotatedByAngle(CGImageRef imgRef, float angle);
#ifdef __cplusplus
}
#endif
return bDecoderAvailable;
}
-
-CGImageRef CGImageCreateRotatedByAngle(CGImageRef imgRef, float angle)
-{
- // image rotation function taken from
- // https://gist.github.com/585377
- float angleInRadians = angle * (M_PI / 180);
- float width = CGImageGetWidth(imgRef);
- float height = CGImageGetHeight(imgRef);
-
- CGRect imgRect = CGRectMake(0, 0, width, height);
- CGAffineTransform transform = CGAffineTransformMakeRotation(angleInRadians);
- CGRect rotatedRect = CGRectApplyAffineTransform(imgRect, transform);
-
- CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
- CGContextRef bmContext = CGBitmapContextCreate(NULL,rotatedRect.size.width, rotatedRect.size.height,
- 8, 0, colorSpace, kCGImageAlphaPremultipliedFirst);
- CGContextSetAllowsAntialiasing(bmContext, 1);
- CGContextSetInterpolationQuality(bmContext, kCGInterpolationHigh);
- CGColorSpaceRelease(colorSpace);
- CGContextTranslateCTM(bmContext, +(rotatedRect.size.width/2), +(rotatedRect.size.height/2));
- CGContextRotateCTM(bmContext, angleInRadians);
- CGContextDrawImage(bmContext, CGRectMake(-width/2, -height/2, width, height), imgRef);
-
- CGImageRef rotatedImage = CGBitmapContextCreateImage(bmContext);
- CFRelease(bmContext);
-
- return rotatedImage;
-}
-
#endif
SRCS = \
SDLMain.mm \
XBMCHelper.m \
+ AutoPool.mm \
+ DarwinUtils.mm \
CocoaInterface.mm \
CoreAudio.cpp \
OSXGNUReplacements.c \
eaglLayer.opaque = TRUE;
eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
- //[NSNumber numberWithBool:FALSE], kEAGLDrawablePropertyRetainedBacking,
+ [NSNumber numberWithBool:FALSE], kEAGLDrawablePropertyRetainedBacking,
//kEAGLColorFormatRGB565, kEAGLDrawablePropertyColorFormat,
kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat,
nil];
#if defined(_LINUX) || defined(__APPLE__)
#if defined(HAVE_XBMC_NONFREE)
#define HAS_FILESYSTEM_RAR
- #define HAS_FILESYSTEM_CCX
#endif
#else
#define HAS_FILESYSTEM_RAR
- #define HAS_FILESYSTEM_CCX
#endif
/*****************
return strFile.Find("://") >= 0;
}
-bool URIUtils::IsXBMS(const CStdString& strFile)
-{
- CStdString strFile2(strFile);
-
- if (IsStack(strFile))
- strFile2 = CStackDirectory::GetFirstStackedFile(strFile);
-
- return strFile2.Left(5).Equals("xbms:");
-}
-
bool URIUtils::IsFTP(const CStdString& strFile)
{
CStdString strFile2(strFile);
return details;
}
-bool CVideoDatabase::GetStreamDetailsForFileId(CStreamDetails& details, int idFile) const
+bool CVideoDatabase::GetStreamDetails(CVideoInfoTag& tag) const
{
- if (idFile < 0)
+ if (tag.m_iFileId < 0)
return false;
bool retVal = false;
dbiplus::Dataset *pDS = m_pDB->CreateDataset();
- CStdString strSQL = PrepareSQL("SELECT * FROM streamdetails WHERE idFile = %i", idFile);
+ CStdString strSQL = PrepareSQL("SELECT * FROM streamdetails WHERE idFile = %i", tag.m_iFileId);
pDS->query(strSQL);
+ CStreamDetails& details = tag.m_streamDetails;
details.Reset();
while (!pDS->eof())
{
pDS->close();
details.DetermineBestStreams();
+ if (details.GetVideoDuration() > 0)
+ tag.m_strRuntime.Format("%i", details.GetVideoDuration() / 60 );
+
return retVal;
}
GetCommonDetails(pDS, details);
movieTime += CTimeUtils::GetTimeMS() - time; time = CTimeUtils::GetTimeMS();
- GetStreamDetailsForFileId(details.m_streamDetails, details.m_iFileId);
+ GetStreamDetails(details);
if (needsCast)
{
details.m_strStudio = pDS->fv(VIDEODB_DETAILS_EPISODE_TVSHOW_STUDIO).get_asString();
details.m_strPremiered = pDS->fv(VIDEODB_DETAILS_EPISODE_TVSHOW_AIRED).get_asString();
- GetStreamDetailsForFileId(details.m_streamDetails, details.m_iFileId);
+ GetStreamDetails(details);
if (needsCast)
{
GetCommonDetails(pDS, details);
movieTime += CTimeUtils::GetTimeMS() - time; time = CTimeUtils::GetTimeMS();
- GetStreamDetailsForFileId(details.m_streamDetails, details.m_iFileId);
+ GetStreamDetails(details);
details.m_strPictureURL.Parse();
return details;
void GetTvShowInfo(const CStdString& strPath, CVideoInfoTag& details, int idTvShow = -1);
bool GetEpisodeInfo(const CStdString& strFilenameAndPath, CVideoInfoTag& details, int idEpisode = -1);
void GetMusicVideoInfo(const CStdString& strFilenameAndPath, CVideoInfoTag& details, int idMVideo=-1);
- bool GetStreamDetailsForFileId(CStreamDetails& details, int idFile) const;
int GetPathId(const CStdString& strPath);
int GetTvShowId(const CStdString& strPath);
void GetDetailsFromDB(std::auto_ptr<dbiplus::Dataset> &pDS, int min, int max, const SDbTableOffsets *offsets, CVideoInfoTag &details, int idxOffset = 2);
CStdString GetValueString(const CVideoInfoTag &details, int min, int max, const SDbTableOffsets *offsets) const;
+ bool GetStreamDetails(CVideoInfoTag& tag) const;
private:
virtual bool CreateTables();
for (int i=0;i<items.Size();++i)
{
CFileItemPtr pItem=items[i];
+ if (pItem->m_bIsFolder)
+ {
+ MarkWatched(pItem, bMark);
+ continue;
+ }
if (pItem->HasVideoInfoTag() &&
(( bMark && pItem->GetVideoInfoTag()->m_playCount) ||
return; // don't load for listings that have content set
CStdString content = m_database.GetContentForPath(items.m_strPath);
- if (content.IsEmpty())
- {
- items.SetContent("files");
- return;
- }
- items.SetContent(content);
+ items.SetContent(content.IsEmpty() ? "files" : content);
bool clean = (g_guiSettings.GetBool("myvideos.cleanstrings") &&
!items.IsVirtualDirectoryRoot() &&
m_stackingAvailable);
- if (!content.IsEmpty())
+ for (int i = 0; i < items.Size(); i++)
{
- for (int i = 0; i < items.Size(); i++)
- {
- CFileItemPtr pItem = items[i];
- CFileItem item;
- if (m_database.GetItemForPath(content, pItem->m_strPath, item))
- { // copy info across
- pItem->UpdateInfo(item);
- pItem->m_strPath = item.m_strPath;
- // if we switch from a file to a folder item it means we really shouldn't be sorting files and
- // folders separately
- if (pItem->m_bIsFolder != item.m_bIsFolder)
- items.SetSortIgnoreFolders(true);
- pItem->m_bIsFolder = item.m_bIsFolder;
- }
- else
- {
- if (clean)
- pItem->CleanString();
- }
+ CFileItemPtr pItem = items[i];
+ CFileItem item;
+ if (!content.IsEmpty() && m_database.GetItemForPath(content, pItem->m_strPath, item))
+ { // copy info across
+ pItem->UpdateInfo(item);
+ pItem->m_strPath = item.m_strPath;
+ // if we switch from a file to a folder item it means we really shouldn't be sorting files and
+ // folders separately
+ if (pItem->m_bIsFolder != item.m_bIsFolder)
+ items.SetSortIgnoreFolders(true);
+ pItem->m_bIsFolder = item.m_bIsFolder;
}
- }
- else
- {
- for (int i = 0; i < items.Size(); i++)
- {
- CFileItemPtr pItem = items[i];
+ else
+ { // grab the playcount and clean the label
int playCount = m_database.GetPlayCount(*pItem);
if (playCount >= 0)
pItem->SetOverlayImage(CGUIListItem::ICON_OVERLAY_UNWATCHED, playCount > 0);
if (pItem->m_iDriveType != CMediaSource::SOURCE_TYPE_REMOTE) // Local shares incl. dvd drive
idMessageText=15300;
- else if (url.GetProtocol() == "xbms" && strHostName.IsEmpty()) // xbms server discover
- idMessageText=15302;
else if (url.GetProtocol() == "smb" && strHostName.IsEmpty()) // smb workgroup
idMessageText=15303;
else // All other remote shares
if (pItem->m_iDriveType!=CMediaSource::SOURCE_TYPE_REMOTE) // Local shares incl. dvd drive
idMessageText=15300;
- else if (url.GetProtocol()=="xbms" && strHostName.IsEmpty()) // xbms server discover
- idMessageText=15302;
else if (url.GetProtocol()=="smb" && strHostName.IsEmpty()) // smb workgroup
idMessageText=15303;
else // All other remote shares