-
Notifications
You must be signed in to change notification settings - Fork 236
/
testrsc.c
103 lines (73 loc) · 1.77 KB
/
testrsc.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
// Meridian 59, Copyright 1994-2012 Andrew Kirmse and Chris Kirmse.
// All rights reserved.
//
// This software is distributed under a license that is described in
// the LICENSE file that accompanies it.
//
// Meridian is a registered trademark.
#include <stdio.h>
#include <stdlib.h>
typedef struct rsc {
unsigned long magic;
unsigned long num_res;
unsigned long temp;
unsigned long id,t1,t2,t3,t4;
} RSC ;
RSC rsc;
FILE* ReadRSCHdr(char *name, RSC *r );
void main(int argc,char*argv[])
{
int i;
FILE *fp;
if( argc< 2 ){
fprintf(stderr,"Need a .rsc name dummy\n");
exit(1);
}
fp = ReadRSCHdr( argv[1] , &rsc);
if(fp == NULL )
exit( 1 );
printf("Magic % 10ld 0x%lx\n",rsc.magic,rsc.magic);
printf("num resources % 8ld 0x%lx\n",rsc.num_res,rsc.num_res);
printf("Version % 8ld 0x%lx\n",rsc.temp,rsc.temp);
printf("ID % 8ld 0x%lx\n",rsc.id,rsc.id);
printf("t1 % 8ld 0x%lx\n",rsc.t1,rsc.t1);
printf("\n");
for(i=0;i<rsc.num_res;i++) {
ReadRSC(fp,&rsc);
printf("\n");
}
printf("%s file ptr @ %ld\n",argv[1],ftell( fp ) );
if( fp ) fclose ( fp );
exit( 0 );
}
FILE* ReadRSCHdr(char *name, RSC *r )
{
FILE*fp;
fp = fopen(name,"rb");
if( fp == NULL ) {
fprintf(stderr,"Couldn`t open file %s\n",name);
return NULL;
}
fread(&r->magic,4,1,fp);
fread(&r->temp,4,1,fp);
fread(&r->num_res,4,1,fp);
fread(&r->id,4,1,fp);
fread(&r->t1,4,1,fp);
return fp;
}
int ReadRSC( FILE*fp,RSC*r)
{
int i;
char ch;
/* Read the resource ID */
fread(&r->t2,4,1,fp);
printf("\tID % 8ld - ",r->t2,r->t2);
/* since this next part contains no useful information,
i won`t keep it around */
do {
ch = fgetc(fp);
if(ch!=0) printf("%c",ch);
} while(ch!=0);
/* resource ID */
return r->t2;
}