Files @ r1866:3795144cd786
Branch filter:

Location: cpp/openttd-patchpack/source/endian_check.c

Darkvater
(svn r2372) - Fix (console): update the example scripts in the scripts/ directory to reflect the new console functionality
- Fix (console): any line starting with a '#' is a comment so ignore it
- Fix (console): The special variables whose value can only be set by a custom process should, also print out their newly set value there, instead of relying on the default printout which is slightly confusing. Eg after you change the value it still printed out 'current value for...' instead of 'XXX changed to...'
#include <stdio.h>

// This pretty simple file checks if the system is LITTLE_ENDIAN or BIG_ENDIAN
//  it does that by putting a 1 and a 0 in an array, and read it out as one
//  number. If it is 1, it is LITTLE_ENDIAN, if it is 256, it is BIG_ENDIAN
//
// After that it outputs the contents of an include files (endian.h)
//  that says or TTD_LITTLE_ENDIAN, or TTD_BIG_ENDIAN. Makefile takes
//  care of the real writing to the file.

int main (int argc, char *argv[]) {
  unsigned char EndianTest[2] = { 1, 0 };
  int force_BE = 0, force_LE = 0;

  if (argc > 1 && strcmp(argv[1], "BE") == 0)
    force_BE = 1;
  if (argc > 1 && strcmp(argv[1], "LE") == 0)
    force_LE = 1;

  printf("#ifndef ENDIAN_H\n#define ENDIAN_H\n");

  if ( (*(short *) EndianTest == 1 && force_BE != 1) || force_LE == 1)
    printf("#define TTD_LITTLE_ENDIAN\n");
  else
    printf("#define TTD_BIG_ENDIAN\n");

  printf("#endif\n");

  return 0;
}