this seems to be the proper way under ms, but it won't work under wine
committer: Markus Bröker <mbroeker@largo.homelinux.org>
/**
* test/demos/asm/main.c
* Copyright (C) 2008 Markus Broeker
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#ifndef TIMEOUT
#define TIMEOUT 500
#endif
int get_sp ();
void sigendian ()
{
unsigned short word = 0x1234;
unsigned char *p = (unsigned char *)&word;
signal (SIGUSR1, sigendian);
printf ("%s Endian System\n", (p[0] == 0x34) ? "Little" : "Big");
}
void sigproc ()
{
signal (SIGINT, sigproc);
printf ("Stack-Pointer is at %08x\n", get_sp ());
}
void sigquit ()
{
printf ("Hmm... You got it, man!\n");
exit (0);
}
int main (int argc, char **argv)
{
signal (SIGINT, sigproc);
signal (SIGUSR1, sigendian);
signal (SIGQUIT, sigquit);
for (;;)
usleep (TIMEOUT);
return EXIT_FAILURE;
}