Guest User

Untitled

a guest
Jan 23rd, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.76 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <sys/stat.h>
  4. #include <sys/types.h>
  5. #include <unistd.h>
  6. #include <string.h>
  7. #include <errno.h>
  8. #include <stdint.h>
  9.  
  10. int main(int argc, char* argv[])
  11. {
  12.     unsigned char buffer[1024];
  13.     unsigned char header[1024];
  14.     uint32_t headerlength;
  15.     uint32_t songlength;
  16.     uint32_t restart;
  17.     uint32_t channels;
  18.     uint32_t patterns;
  19.     uint32_t freqtable;
  20.     uint32_t tempo;
  21.     uint32_t bpm;
  22.     unsigned char temp[2];
  23.     struct patterndata {
  24.         unsigned char note;
  25.         unsigned char inst;
  26.         unsigned char vc;
  27.         unsigned char et;
  28.         unsigned char ep;
  29.     };
  30.  
  31.     printf("loadxm/c by oerg866\n");
  32.     printf("v0.01\n\n");
  33.     mkdir("temp");
  34.  
  35.     unlink("temp\\*.tmp");
  36.     //printf(argv[0]);
  37.     FILE *xm = fopen(argv[1], "rb");
  38.     FILE *inf = fopen("temp\file.inf", "w");
  39.  
  40.     if (!xm) {
  41.     printf("Error opening the file: %s\n", strerror(errno));
  42.     return 1;
  43.     }
  44.  
  45.     fread(buffer, 1, 17, xm);
  46.  
  47.     if (strcmp(buffer, "Extended Module: ") != 0) {
  48.     printf("File not an XM.\n");
  49.     }
  50.     fread(buffer, 1, 20, xm);
  51.     printf("Song name: %s",buffer);
  52.     fread(buffer, 1, 1, xm);
  53.     fread(buffer, 1, 20, xm);
  54.     printf("Tracker name: %s",buffer);
  55.     fread(buffer, 1, 2, xm);
  56.     fread(buffer, 1, 4, xm);
  57.     headerlength = ldword(buffer);
  58.     fread(header, 1, headerlength - 4, xm);
  59.     songlength = rword(&header[0]);
  60.     restart = rword(&header[2]);
  61.     channels = rword(&header[4]);
  62.  
  63.     fprintf(inf, "%d\n", channels);
  64.  
  65.     return 0;
  66.  
  67. }
  68.  
  69. uint32_t ldword(unsigned char bytes[])
  70. {
  71.     return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];
  72. }
  73.  
  74. uint16_t rword(unsigned char bytes[])
  75. {
  76.     return bytes[1] << 8 | bytes[0];
  77. }
Add Comment
Please, Sign In to add comment