This is test-seek.c in view mode; [Download] [Up]
#include <stdio.h> #include "include.h" #ifdef HAVE_AOUT #include HAVE_AOUT #endif #ifdef HAVE_ELF #include <elf.h> #endif #define OUR_MAX(a,b) (a > b ? a : b) #define SEEK_TO_END_OFILE(fp)\ do{ int m; \ Elf32_Ehdr eheader; \ Elf32_Shdr shdr; \ fseek(fp,0,SEEK_SET); \ fread(&eheader,sizeof(eheader),1,fp); \ fseek(fp,eheader.e_shoff+(eheader.e_shnum -1) \ *eheader.e_shentsize,0); \ fread(&shdr,eheader.e_shentsize,1,fp); \ fseek(fp,OUR_MAX(shdr.sh_offset+ shdr.sh_size, \ eheader.e_shoff+(eheader.e_shnum) \ *eheader.e_shentsize) \ , SEEK_SET);\ }while(0) main(argc,argv) char *argv[]; { FILE *fp; fp = fopen (argv[1],"r"); SEEK_TO_END_OFILE(fp); printf("end = %d\n",ftell(fp)); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.