diff src/modplug/archive/open.cxx @ 12:3da1b8942b8b trunk

[svn] - remove src/Input src/Output src/Effect src/General src/Visualization src/Container
author nenolod
date Mon, 18 Sep 2006 03:14:20 -0700
parents src/Input/modplug/archive/open.cxx@13389e613d67
children e67bce91d70c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/modplug/archive/open.cxx	Mon Sep 18 03:14:20 2006 -0700
@@ -0,0 +1,112 @@
+/* Modplug XMMS Plugin
+ * Authors: Kenton Varda <temporal@gauge3d.org>
+ *
+ * This source code is public domain.
+ */
+
+#include "open.h"
+#include "arch_raw.h"
+#include "arch_gzip.h"
+#include "arch_zip.h"
+#include "arch_rar.h"
+#include "arch_bz2.h"
+
+Archive* OpenArchive(const string& aFileName)
+{
+	string lExt;
+	uint32 lPos;
+
+	lPos = aFileName.find_last_of('.');
+	if(lPos > aFileName.length())
+		return NULL;
+	lExt = aFileName.substr(lPos);
+	for(uint32 i = 0; i < lExt.length(); i++)
+		lExt[i] = tolower(lExt[i]);
+
+	if (lExt == ".mdz")
+		return new arch_Zip(aFileName);
+	if (lExt == ".mdr")
+		return new arch_Rar(aFileName);
+	if (lExt == ".mdgz")
+		return new arch_Gzip(aFileName);
+	if (lExt == ".mdbz")
+		return new arch_Bzip2(aFileName);
+	if (lExt == ".s3z")
+		return new arch_Zip(aFileName);
+	if (lExt == ".s3r")
+		return new arch_Rar(aFileName);
+	if (lExt == ".s3gz")
+		return new arch_Gzip(aFileName);
+	if (lExt == ".xmz")
+		return new arch_Zip(aFileName);
+	if (lExt == ".xmr")
+		return new arch_Rar(aFileName);
+	if (lExt == ".xmgz")
+		return new arch_Gzip(aFileName);
+	if (lExt == ".itz")
+		return new arch_Zip(aFileName);
+	if (lExt == ".itr")
+		return new arch_Rar(aFileName);
+	if (lExt == ".itgz")
+		return new arch_Gzip(aFileName);
+	if (lExt == ".zip")
+		return new arch_Zip(aFileName);
+	if (lExt == ".rar")
+		return new arch_Rar(aFileName);
+	if (lExt == ".gz")
+		return new arch_Gzip(aFileName);
+	if (lExt == ".bz2")
+		return new arch_Bzip2(aFileName);
+
+	return new arch_Raw(aFileName);
+}
+
+bool ContainsMod(const string& aFileName)
+{
+	string lExt;
+	uint32 lPos;
+
+	lPos = aFileName.find_last_of('.');
+	if(lPos > aFileName.length())
+		return false;
+	lExt = aFileName.substr(lPos);
+	for(uint32 i = 0; i < lExt.length(); i++)
+		lExt[i] = tolower(lExt[i]);
+
+	if (lExt == ".mdz")
+		return arch_Zip::ContainsMod(aFileName);
+	if (lExt == ".mdr")
+		return arch_Rar::ContainsMod(aFileName);
+	if (lExt == ".mdgz")
+		return arch_Gzip::ContainsMod(aFileName);
+	if (lExt == ".mdbz")
+		return arch_Bzip2::ContainsMod(aFileName);
+	if (lExt == ".s3z")
+		return arch_Zip::ContainsMod(aFileName);
+	if (lExt == ".s3r")
+		return arch_Rar::ContainsMod(aFileName);
+	if (lExt == ".s3gz")
+		return arch_Gzip::ContainsMod(aFileName);
+	if (lExt == ".xmz")
+		return arch_Zip::ContainsMod(aFileName);
+	if (lExt == ".xmr")
+		return arch_Rar::ContainsMod(aFileName);
+	if (lExt == ".xmgz")
+		return arch_Gzip::ContainsMod(aFileName);
+	if (lExt == ".itz")
+		return arch_Zip::ContainsMod(aFileName);
+	if (lExt == ".itr")
+		return arch_Rar::ContainsMod(aFileName);
+	if (lExt == ".itgz")
+		return arch_Gzip::ContainsMod(aFileName);
+	if (lExt == ".zip")
+		return arch_Zip::ContainsMod(aFileName);
+	if (lExt == ".rar")
+		return arch_Rar::ContainsMod(aFileName);
+	if (lExt == ".gz")
+		return arch_Gzip::ContainsMod(aFileName);
+	if (lExt == ".bz2")
+		return arch_Bzip2::ContainsMod(aFileName);
+
+	return arch_Raw::ContainsMod(aFileName);
+}