home *** CD-ROM | disk | FTP | other *** search
- /** DoRev Header ** Do not edit! **
- *
- * Name : checksym.c
- * Creation date : 29-Jul-92
- * Contents : checksym.c
- * Compiler opts. : -qq -wdlp -sou -pe -hi Sys.pre
- *
- * Date Rev Author Comment
- * --------- --- ------------------- ----------------------------------------
- * 29-Jul-92 1 Rolf Boehme Erstellt
- * 29-Jul-92 0 Rolf Boehme None.
- *
- *** DoRev End **/
-
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <ctype.h>
-
- /* Vebesserte Version: Benutzt MACROs */
- int atoh(char *hex)
- { int n;
- register int i;
-
- /* Stellenzähler auf 0 setzen */
- n = 0;
-
- /* Solange ein Zeichen in den angegebenen Bereichen liegt, */
- /* werden die entsprechenden Werte aufaddiert */
- for( i = 0; isxdigit( (int)hex[i] ); i++ ){
- if((hex[i] >= '0') && (hex[i] <= '9'))
- n = 16*n + hex[i] - '0';
- if((hex[i] >= 'a') && (hex[i] <= 'f'))
- n = 16*n + 10 + (hex[i] - 'a');
- if((hex[i] >= 'A') && (hex[i] <= 'F'))
- n = 16*n + 10 + (hex[i] - 'A');
- }
-
- /* Summe zurückgeben */
- return(n);
- }
-
-
- void
- main(int i,char *a[])
- {
- FILE *fin;
- char line[200],fname[200],findsym[100],lastsym[100];
- long findaddr = -1,symaddr,lastaddr = 0;
- int segment,hunk;
-
- printf("\33[3;33m%s 0.1\33[0m - von Rolf Böhme, PD!\n",a[0]);
-
- if(i >= 2)
- {
- strcpy(fname,a[1]);
- if( !strstr(fname,".sym") )
- strcat(fname,".sym");
-
- if( i == 3 )
- findaddr = (long)atoh(a[2]);
-
- if( fin = fopen(fname,"r") )
- {
- fgets( line,200,fin );
-
- while( !feof(fin) )
- {
- if( strstr(line,"Segment") )
- {
- char *tok = strtok(line," :");
-
- segment = atoi( strtok(NULL," :") );
- strtok(NULL," :");
- hunk = atoi( strtok(NULL," :") );
-
- puts("\n-------------------------------");
- printf("Segment %d, Hunk %d",segment,hunk);
- puts("\n-------------------------------");
- }
- else
- {
- line[9] = '\0';
- symaddr = atoh( &line[1] );
- strcpy( findsym,&line[10] );
-
- if( findaddr == -1 )
- printf("Adr: 0x%08x Symbol: %s",symaddr,findsym);
- else
- if( (findaddr >= lastaddr) && (findaddr < symaddr) )
- printf("Adr: 0x%08x Symbol: %s",lastaddr,lastsym);
-
- strcpy(lastsym,findsym);
- lastaddr = symaddr;
- }
-
- fgets( line,200,fin );
- }
-
- fclose(fin);
- }
- else
- printf("Datei %s nicht gefunden!\n",fname);
- }
- else
- printf("Aufruf: %s <Programmname> <adr>\n",a[0]);
-
- exit(0);
- }
-