diff options
author | pixel <pixel> | 2004-11-27 21:44:44 +0000 |
---|---|---|
committer | pixel <pixel> | 2004-11-27 21:44:44 +0000 |
commit | d38e80ee04afe582e70150d3884e56c05f3fd7a8 (patch) | |
tree | f2627c50fa22aea89447e8406ac418eb68650d3d /VP/unarc.cpp | |
parent | 50f0dd331f8168fb5b2cd60c70178fad627b7fb6 (diff) |
Large dos2unix commit...
Diffstat (limited to 'VP/unarc.cpp')
-rw-r--r-- | VP/unarc.cpp | 158 |
1 files changed, 79 insertions, 79 deletions
diff --git a/VP/unarc.cpp b/VP/unarc.cpp index 1584041..36a258a 100644 --- a/VP/unarc.cpp +++ b/VP/unarc.cpp @@ -1,79 +1,79 @@ -#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#include "Input.h"
-#include "Output.h"
-#include "generic.h"
-#include "Main.h"
-
-#define THRESHOLD 2000
-
-CODE_BEGINS
-virtual int startup() throw(GeneralException) {
- int n, * index, * sizes, i, d;
- String temp;
- Handle * h, * o;
-
- verbosity = M_INFO;
-
- if (argc != 2) {
- printm(M_BARE, "Usage: unarc <archive>\n");
- exit(-1);
- }
-
- h = new Input(argv[1]);
-
- h->read(&n, 4);
-
- printm(M_STATUS, "Archive claims to have %i files, checking integrity.\n", n);
-
- if (n > THRESHOLD) {
- printm(M_ERROR, "Archive has more than %i files, that doesn't make sense to me.\n", THRESHOLD);
- exit(-1);
- }
-
- index = (int *) malloc(n * sizeof(int));
- sizes = (int *) malloc(n * sizeof(int));
-
- for (i = 0; i < n; i++) {
- h->seek((i + 1) * 8 + 4, SEEK_SET);
- h->read(&(sizes[i]), 4);
- printm(M_INFO, "File #%i size = %i = 0x%08x\n", i, sizes[i], sizes[i]);
- }
-
- index[0] = (n + 1) * 8;
- i = 0;
- printm(M_INFO, "Index #%i = %i = 0x%08x\n", i, index[i], index[i]);
-
- for (i = 1; i < n; i++) {
- index[i] = index[i - 1] + sizes[i - 1];
- printm(M_INFO, "Index #%i = %i = 0x%08x\n", i, index[i], index[i]);
- }
-
- d = h->GetSize() - index[n - 1] - sizes[n - 1];
-
- printm(M_INFO, "Archive size: %i, last index: %i, last file size: %i, difference = %i\n", h->GetSize(), index[n - 1], sizes[n - 1], d);
-
- if ((d < 0) || (d > 2048)) {
- printm(M_ERROR, "Archive incoherent.\n");
- exit(-1);
- }
-
- printm(M_STATUS, "Archive seems to be ok, extracting.\n");
-
- for (i = 0; i < n; i++) {
- temp.set("%04i.out", i);
- o = new Output(temp);
-
- printm(M_INFO, "Extracting " + temp + "\n");
-
- h->seek(index[i], SEEK_SET);
- copy(h, o, sizes[i]);
- delete o;
- }
-
- delete h;
- return 0;
-}
-CODE_ENDS
+#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +#include "Input.h" +#include "Output.h" +#include "generic.h" +#include "Main.h" + +#define THRESHOLD 2000 + +CODE_BEGINS +virtual int startup() throw(GeneralException) { + int n, * index, * sizes, i, d; + String temp; + Handle * h, * o; + + verbosity = M_INFO; + + if (argc != 2) { + printm(M_BARE, "Usage: unarc <archive>\n"); + exit(-1); + } + + h = new Input(argv[1]); + + h->read(&n, 4); + + printm(M_STATUS, "Archive claims to have %i files, checking integrity.\n", n); + + if (n > THRESHOLD) { + printm(M_ERROR, "Archive has more than %i files, that doesn't make sense to me.\n", THRESHOLD); + exit(-1); + } + + index = (int *) malloc(n * sizeof(int)); + sizes = (int *) malloc(n * sizeof(int)); + + for (i = 0; i < n; i++) { + h->seek((i + 1) * 8 + 4, SEEK_SET); + h->read(&(sizes[i]), 4); + printm(M_INFO, "File #%i size = %i = 0x%08x\n", i, sizes[i], sizes[i]); + } + + index[0] = (n + 1) * 8; + i = 0; + printm(M_INFO, "Index #%i = %i = 0x%08x\n", i, index[i], index[i]); + + for (i = 1; i < n; i++) { + index[i] = index[i - 1] + sizes[i - 1]; + printm(M_INFO, "Index #%i = %i = 0x%08x\n", i, index[i], index[i]); + } + + d = h->GetSize() - index[n - 1] - sizes[n - 1]; + + printm(M_INFO, "Archive size: %i, last index: %i, last file size: %i, difference = %i\n", h->GetSize(), index[n - 1], sizes[n - 1], d); + + if ((d < 0) || (d > 2048)) { + printm(M_ERROR, "Archive incoherent.\n"); + exit(-1); + } + + printm(M_STATUS, "Archive seems to be ok, extracting.\n"); + + for (i = 0; i < n; i++) { + temp.set("%04i.out", i); + o = new Output(temp); + + printm(M_INFO, "Extracting " + temp + "\n"); + + h->seek(index[i], SEEK_SET); + copy(h, o, sizes[i]); + delete o; + } + + delete h; + return 0; +} +CODE_ENDS |