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 | 
