home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #3 / amigamamagazinepolishissue1998.iso / blabla / bin2c / bin2c.c < prev    next >
C/C++ Source or Header  |  1998-01-24  |  2KB  |  119 lines

  1. /*
  2.     $VER: Bin2C 0.5
  3.  
  4.     Bin2C by LeMUr/ Fire
  5.                  /& blabla
  6.  
  7.     Public Domain.
  8.  
  9.         Program zapisuje plii binarne w formie liczb hexadecymalnych (np. dla
  10.     úródîówki w C).
  11.         Kickstart 2.0+ (lub 1.3 po zmianie "Printf" na "printf", co wydîuûy
  12.     kod wynikowy)
  13.  */
  14.  
  15. #include <stdio.h>
  16. #include <string.h>
  17. #include <stdlib.h>
  18.  
  19. #include <proto/dos.h>
  20. #include <proto/exec.h>
  21.  
  22. #include <exec/memory.h>
  23.  
  24. // wersja programu
  25. const static char Version[]="\0$VER: Bin2C 0.5 (" __DATE__ ") by LeMUr/Fire & blabla\0";
  26.  
  27. // pamiëê i jej rozmiar
  28. UBYTE *Bufor=NULL;
  29. ULONG Size=NULL;
  30.  
  31.  
  32. void out(int kod)
  33. // Procedura zwalnia co byîo zajëte i wychodzi z podanym kodem bîëdu
  34. {
  35.     if(Bufor && Size)
  36.         FreeMem(Bufor, Size);
  37.  
  38.     exit(kod);
  39. } /* out() */
  40.  
  41.  
  42. int main(int argc, char *argv[])
  43. {
  44.     UBYTE znak[10];
  45.     ULONG i=0;
  46.  
  47.     BPTR file, lock;
  48.     struct FileInfoBlock __aligned fib;
  49.  
  50.     /* najpierw sprawdúmy agrumenty... */
  51.     if(argc!=3)
  52.     {
  53.         Printf("I need two file-names as argument!\n");
  54.         out(5);
  55.     }
  56.  
  57.     /* jebanie z plikiem */
  58.     if(!(lock=Lock(argv[1], ACCESS_READ)))
  59.     {
  60.         Printf("Unable to lock \"%s\"\n", argv[1]);
  61.         out(25);
  62.     }
  63.  
  64.     if(!Examine(lock, &fib))
  65.     {
  66.         Printf("Unable to examine \"%s\"\n", argv[1]);
  67.         UnLock(lock);
  68.         out(30);
  69.     }
  70.  
  71.     if(!(Size=fib.fib_Size))
  72.     {
  73.         Printf("File couldn't be 0 bytes long!\n");
  74.         UnLock(lock);
  75.         out(32);
  76.     }
  77.  
  78.     if(!(Bufor=AllocMem(Size, MEMF_CHIP)))
  79.     {
  80.         Printf("Unable to allocate memory!\n");
  81.         UnLock(lock);
  82.         out(35);
  83.     }
  84.  
  85.     if(!(file=Open(argv[1], MODE_OLDFILE)))
  86.     {
  87.         Printf("Unable to open file \"%s\"\n", argv[1]);
  88.         UnLock(lock);
  89.         out(40);
  90.     }
  91.  
  92.     Read(file, Bufor, Size);
  93.     Close(file);
  94.     UnLock(lock);
  95.  
  96.     /* jebanie zdrugim plikiem */
  97.     if(!(file=Open(argv[2], MODE_NEWFILE)))
  98.     {
  99.         Printf("Unable to open file \"%s\"\n", argv[2]);
  100.         UnLock(lock);
  101.         out(40);
  102.     }
  103.  
  104.     Write(file, "UBYTE Data[]=\n{\n", 16);
  105.     /* "konwersja" */
  106.     for(i=0; i<Size; i++)
  107.     {
  108.         sprintf(znak, "0x%X,\n", Bufor[i]);
  109.         if(strlen(znak)==5)
  110.             sprintf(znak, "0x0%X,\n", Bufor[i]);
  111.         Write(file, znak, strlen(znak));
  112.     }
  113.  
  114.     Write(file, "\n};\n", 4);
  115.     Close(file);
  116.  
  117.     out(0);
  118. } /* main() */
  119.