/* counter functions */
/* ------------------------------------------------------------------------- */
-#if defined(PLATFORM_MSDOS)
-volatile unsigned int counter = 0;
-
-void increment_counter()
-{
- counter++;
-}
-
-END_OF_FUNCTION(increment_counter);
-#endif
-
-
/* maximal allowed length of a command line option */
#define MAX_OPTION_LEN 256
{
return SDL_GetTicks();
}
-
-#else /* !TARGET_SDL */
-
-#if defined(PLATFORM_UNIX)
-static unsigned int getCurrentMS()
-{
- struct timeval current_time;
-
- gettimeofday(¤t_time, NULL);
-
- return current_time.tv_sec * 1000 + current_time.tv_usec / 1000;
-}
-#endif /* PLATFORM_UNIX */
-#endif /* !TARGET_SDL */
+#endif
static unsigned int mainCounter(int mode)
{
return counter_ms; /* return milliseconds since last init */
}
-
-#else /* !TARGET_SDL */
-
-#if defined(PLATFORM_UNIX)
-static unsigned int mainCounter(int mode)
-{
- static struct timeval base_time = { 0, 0 };
- struct timeval current_time;
- unsigned int counter_ms;
-
- gettimeofday(¤t_time, NULL);
-
- /* reset base time in case of counter initializing or wrap-around */
- if (mode == INIT_COUNTER || current_time.tv_sec < base_time.tv_sec)
- base_time = current_time;
-
- counter_ms = (current_time.tv_sec - base_time.tv_sec) * 1000
- + (current_time.tv_usec - base_time.tv_usec) / 1000;
-
- return counter_ms; /* return milliseconds since last init */
-}
-#endif /* PLATFORM_UNIX */
-#endif /* !TARGET_SDL */
+#endif
#endif
void InitCounter() /* set counter back to zero */
{
-#if !defined(PLATFORM_MSDOS)
mainCounter(INIT_COUNTER);
-#else
- LOCK_VARIABLE(counter);
- LOCK_FUNCTION(increment_counter);
- install_int_ex(increment_counter, BPS_TO_TIMER(100));
-#endif
}
unsigned int Counter() /* get milliseconds since last call of InitCounter() */
{
-#if !defined(PLATFORM_MSDOS)
return mainCounter(READ_COUNTER);
-#else
- return (counter * 10);
-#endif
}
static void sleep_milliseconds(unsigned int milliseconds_delay)
{
#if defined(TARGET_SDL)
SDL_Delay(milliseconds_delay);
-#elif defined(TARGET_ALLEGRO)
- rest(milliseconds_delay);
#else
struct timeval delay;
/* system info functions */
/* ------------------------------------------------------------------------- */
-#if !defined(PLATFORM_MSDOS) && !defined(PLATFORM_ANDROID)
+#if !defined(PLATFORM_ANDROID)
static char *get_corrected_real_name(char *real_name)
{
char *real_name_new = checked_malloc(MAX_USERNAME_LEN + 1);
Error(ERR_WARN, "cannot open file '%s' for writing: %s",
program.error_filename, strerror(errno));
}
+
+ /* error output should be unbuffered so it is not truncated in a crash */
+ setbuf(program.error_file, NULL);
}
void closeErrorFile()