aboutsummaryrefslogtreecommitdiffstats
path: root/lib/sisfile.cpp
diff options
context:
space:
mode:
authorFritz Elfert <felfert@to.com>2002-02-28 20:56:59 +0000
committerFritz Elfert <felfert@to.com>2002-02-28 20:56:59 +0000
commiteecba3b5fcb47a01e6e13ee1940def989f6dd22d (patch)
tree970f3113de0d2b9b0544c1420117e0cf9633abcd /lib/sisfile.cpp
parent12241e0ff5ea242891fc3a8c177e8f55e897f2a3 (diff)
downloadplptools-eecba3b5fcb47a01e6e13ee1940def989f6dd22d.tar.gz
plptools-eecba3b5fcb47a01e6e13ee1940def989f6dd22d.tar.bz2
plptools-eecba3b5fcb47a01e6e13ee1940def989f6dd22d.zip
- Added SIS stuff by Daniel Brahneborg
Diffstat (limited to 'lib/sisfile.cpp')
-rw-r--r--lib/sisfile.cpp72
1 files changed, 72 insertions, 0 deletions
diff --git a/lib/sisfile.cpp b/lib/sisfile.cpp
new file mode 100644
index 0000000..53b9c24
--- /dev/null
+++ b/lib/sisfile.cpp
@@ -0,0 +1,72 @@
+
+#include "sisfile.h"
+#include "sislangrecord.h"
+#include "sisfilerecord.h"
+#include "sisreqrecord.h"
+
+#include <stdio.h>
+
+void
+SISFile::fillFrom(uchar* buf)
+{
+ int ix = 0;
+ m_header.fillFrom(buf, &ix);
+ if (logLevel >= 2)
+ printf("Ate header, got ix = %d\n", ix);
+ int n;
+
+ // Read languages.
+ //
+ n = m_header.m_nlangs;
+ m_langRecords = new SISLangRecord[n];
+ ix = m_header.m_languagePtr;
+ for (int i = 0; i < n; ++i)
+ m_langRecords[i].fillFrom(buf, &ix);
+
+ // Read requisites.
+ //
+ n = m_header.m_nreqs;
+ m_reqRecords = new SISReqRecord[n];
+ ix = m_header.m_reqPtr;
+ for (int i = 0; i < n; ++i)
+ m_reqRecords[i].fillFrom(buf, &ix, this);
+
+ // Read component names, by language.
+ //
+ ix = m_header.m_componentPtr;
+ m_componentRecord.fillFrom(buf, ix, this);
+
+ // Read files.
+ //
+ n = m_header.m_nfiles;
+ m_fileRecords = new SISFileRecord[n];
+ ix = m_header.m_filesPtr;
+ for (int i = 0; i < n; ++i)
+ m_fileRecords[i].fillFrom(buf, &ix, this);
+
+}
+
+int
+SISFile::getLanguage()
+{
+ return m_header.m_installationLanguage;
+}
+
+LangTableEntry*
+SISFile::getLanguage(int i)
+{
+ return &langTable[m_langRecords[i].m_lang];
+}
+
+uchar*
+SISFile::getName()
+{
+ return m_componentRecord.getName(m_header.m_installationLanguage);
+}
+
+void
+SISFile::setLanguage(int lang)
+{
+ m_header.m_installationLanguage = lang;
+}
+