Diffstat (limited to 'noncore/apps/opie-reader/pdb.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/apps/opie-reader/pdb.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/noncore/apps/opie-reader/pdb.cpp b/noncore/apps/opie-reader/pdb.cpp index 68b904e..3054424 100644 --- a/noncore/apps/opie-reader/pdb.cpp +++ b/noncore/apps/opie-reader/pdb.cpp | |||
@@ -1,13 +1,16 @@ | |||
1 | #include "pdb.h" | 1 | #include "pdb.h" |
2 | #include <sys/types.h> | ||
3 | #include <sys/stat.h> | ||
4 | #include <unistd.h> | ||
2 | 5 | ||
3 | size_t Cpdb::recordpos(int n) | 6 | size_t Cpdb::recordpos(int n) |
4 | { | 7 | { |
5 | UInt16 mxn = ntohs(head.recordList.numRecords); | 8 | UInt16 mxn = ntohs(head.recordList.numRecords); |
6 | if (n >= mxn) | 9 | if (n >= mxn) |
7 | { | 10 | { |
8 | return file_length; | 11 | return file_length; |
9 | } | 12 | } |
10 | else | 13 | else |
11 | { | 14 | { |
12 | size_t dataoffset = sizeof(DatabaseHdrType) - sizeof(UInt16); | 15 | size_t dataoffset = sizeof(DatabaseHdrType) - sizeof(UInt16); |
13 | dataoffset += /*dataoffset%4 + */ sizeof(RecordListType) * n; | 16 | dataoffset += /*dataoffset%4 + */ sizeof(RecordListType) * n; |
@@ -37,21 +40,24 @@ bool Cpdb::openfile(const char *src) | |||
37 | // printf("closing fin:%x\n",fin); | 40 | // printf("closing fin:%x\n",fin); |
38 | if (fin != NULL) fclose(fin); | 41 | if (fin != NULL) fclose(fin); |
39 | // printf("opening fin\n"); | 42 | // printf("opening fin\n"); |
40 | fin = fopen(src,"rb"); | 43 | fin = fopen(src,"rb"); |
41 | 44 | ||
42 | if (fin==0) | 45 | if (fin==0) |
43 | { | 46 | { |
44 | return false; | 47 | return false; |
45 | } | 48 | } |
46 | 49 | ||
47 | // just holds the first few chars of the file | 50 | // just holds the first few chars of the file |
48 | //char buf[0x100]; | 51 | //char buf[0x100]; |
49 | fseek(fin,0,SEEK_END); | 52 | struct stat buf; |
50 | file_length = ftell(fin); | 53 | stat(src, &buf); |
54 | file_length = buf.st_size; | ||
55 | // fseek(fin,0,SEEK_END); | ||
56 | // file_length = ftell(fin); | ||
51 | 57 | ||
52 | fseek(fin,0,SEEK_SET); | 58 | // fseek(fin,0,SEEK_SET); |
53 | 59 | ||
54 | fread(&head, 1, sizeof(head), fin); | 60 | fread(&head, 1, sizeof(head), fin); |
55 | 61 | ||
56 | return true; | 62 | return true; |
57 | } | 63 | } |