home *** CD-ROM | disk | FTP | other *** search
- #include <exec/types.h>
- #include <libraries/dos.h>
- #include <stdio.h>
-
- char *show_ascii();
-
- char *types[]={
- "Unknomn","IFF","GIF","PCX","Sound Arranger instrument file",
- "Icon file","PowerPacked file","AmigaGuide","Executable",
- "C Object file", "AmiNet readme file", "Lha archive",
- "DMS archive", "ZIP archive", "DBTools database",
- "AmigaBase database", "Quickfile database",
- };
-
- BPTR fh=NULL;
-
- void __regargs _CXBRK(void)
- {
- if(fh) Close(fh);
- printf("- Aborted -------------------------------------------------------------------\n");
- }
-
- int IdH(char *bf, char i1, char i2, char i3, char i4)
- {
- if(i1==bf[0] && i2==bf[1] && i3==bf[2] && i4==bf[3])
- return TRUE;
- else
- return FALSE;
- }
-
- void main(argc,argv)
- char *argv[];
- {
- unsigned char bf[17],buffer[256],filebfr[200];
- int i,rd=16,size,offs=0;
- int ftp=0;
-
- bf[16]=0;
-
- if(argc==0) {
- printf("HexType V1.2\n");
- printf("Enter filename > ");
- gets(filebfr);
- argc=2;
- argv[1]=filebfr;
- }
-
- if(argc<2) {
- printf("HexType V1.2 ©1995-1997 Henrik I\n");
- printf("USAGE: %s FILE/A\n",argv[0]);
- }
-
- fh=Open(argv[1],MODE_OLDFILE);
- if(fh) {
- Seek(fh,0,OFFSET_END);
- size=Seek(fh,0,OFFSET_BEGINNING);
-
- Read(fh,buffer,256);
-
- if(Id(buffer,"FORM")) ftp=1;
- if(Id(buffer,"GIF")) ftp=2;
- if(IdH(buffer,10,5,1,8)) ftp=3;
- if(Id(buffer,"SASI")) ftp=4;
- if(IdH(buffer,0xe3,0x10,0x00,0x01)) ftp=5;
- if(Id(buffer,"PP")) ftp=6;
- if(Id(buffer,"@da")) ftp=7;
- if(Id(buffer,"@DA")) ftp=7;
- if(Id(buffer,"@Da")) ftp=7;
- if(IdH(buffer,0x0,0x0,0x3,243)) ftp=8;
- if(IdH(buffer,0x0,0x0,0x3,231)) ftp=9;
- if(Id(buffer,"Short:")) ftp=10;
- if(Id(buffer,"**-lh")) ftp=11;
- if(Id(buffer,"DMS")) ftp=12;
- if(Id(buffer,"PK")) ftp=13;
- if(Id(buffer,"DBTDAT")) ftp=13;
- if(Id(buffer,"ABST")) ftp=14;
- if(Id(buffer,"QuickFile")) ftp=15;
-
- Seek(fh,0,OFFSET_BEGINNING);
-
- printf("-----------------------------------------------------------------------------\n");
- printf(" File: %s\n",argv[1]);
- printf(" Size: %ld bytes\n",size);
- printf(" File type: %s\n",types[ftp]);
- printf("-----------------------------------------------------------------------------\n");
- printf("OFFSET: HEX: ASCII:\n");
- printf("-------- ----------- ----------- ----------- ----------- ----------------\n");
- while(rd==16) {
- printf("%08lx ",offs);
- offs+=0x10;
- rd=Read(fh,bf,sizeof(bf)-1);
- for(i=0;i<16;i++) {
- if(i>rd) bf[i]=0;
- printf("%02x ",bf[i]);
- if(i==3 || i==7 || i==11 || i==15) printf(" ");
- }
- printf("%s\n",show_ascii(bf));
- }
- printf("-----------------------------------------------------------------------------\n");
- Close(fh);
- } else {
- printf("Error! File %s not found!\n",argv[1]);
- }
- }
-
- char *show_ascii(bf)
- char *bf;
- {
- int i;
-
- for(i=0;i<16;i++) {
- if(bf[i]<' ' || bf[i]>'~') bf[i]='.';
- }
-
- return bf;
- }
-
- int Id(bf,str)
- char *bf,*str;
- {
- int i;
-
- for(i=0;str[i]!=0;i++) {
- if(str[i]!=bf[i]) {
- if(str[i]!='*') return FALSE;
- }
- }
- return TRUE;
- }
-