view TOOLS/mem2dump.c @ 19932:0b5b9cbbc74e

Move calculation of text parameters (number of lines, height, etc.) from wrap_lines_smart() into a separate function. Call it for every event, even those that do not require line wrapping. This fixes randomly wrong positioning of 'Banner' events.
author eugeni
date Fri, 22 Sep 2006 18:56:09 +0000
parents 51276a7f4ea1
children
line wrap: on
line source

/*
    bios2dump.c - Was designed to dump memory block to file.
    Usage: as argument requires absolute address of memory dump and its lenght
    (int hexadecimal form).
    as output - will write file which will named: memADDR_LEN.dump
    where: ADDR - given address of memory
           LEN  - given length of memory
    Licence: GNU GPL v2
    Copyright: Nick Kurshev <nickols_k@mail.ru>
*/
#include <stdio.h>
#include <stdlib.h>

int main( int argc, char *argv[])
{
  FILE * fd_mem, *fd_out;
  unsigned long i,addr,len;
  int int_no;
  char outname[80];
  unsigned char ch;
  if(argc < 3)
  {
    printf("Usage: %s address length (in hex)\n",argv[0]);
    return EXIT_FAILURE;
  }
  addr = strtol(argv[1],NULL,16);
  len  = strtol(argv[2],NULL,16);
  if(!(fd_mem = fopen("/dev/mem","rb")))
  {
    perror("Can't open file - /dev/mem");
    return EXIT_FAILURE;
  }
  sprintf(outname,"mem%08X_%08X.dump",addr,len);
  if(!(fd_out = fopen(outname,"wb")))
  {
    perror("Can't open output file");
    fclose(fd_mem);
    return EXIT_FAILURE;
  }
  fseek(fd_mem,addr,SEEK_SET);
  for(i=0;i<len;i++)
  {
    fread(&ch,1,1,fd_mem);
    fwrite(&ch,1,1,fd_out);
  }
  fclose(fd_out);
  fclose(fd_mem);
  return EXIT_SUCCESS;
}