Subversion Repositories shark

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
 code "borrowed" from JPEG-5 config code
*/


#include <stdio.h>

int is_shifting_signed (arg)
     long arg;
/* See whether right-shift on a long is signed or not. */
{
  long res = arg >> 4;

  if (res == -0x7F7E80CL) {     /* expected result for signed shift */
    return 1;                   /* right shift is signed */
  }

  /* see if unsigned-shift hack will fix it. */
  /* we can't just test exact value since it depends on width of long... */
  res |= (~0L) << (32-4);

  if (res == -0x7F7E80CL) {     /* expected result now? */
    return 0;                   /* right shift is unsigned */
  }

  fprintf(stderr, "Right shift isn't acting as I expect it to.\n");
  fprintf(stderr, "I fear the DCT software will not work at all.\n\n");
  exit(1);
}

main()
{

  if (is_shifting_signed(-0x7F7E80B1L)) {
    printf("do not define RIGHT_SHIFT_IS_UNSIGNED\n");
  }
  else {
    printf("define RIGHT_SHIFT_IS_UNSIGNED\n");
  }

}