{0, 0, 0, 0}
};
+static int get_current_time(time_t *et, struct tm *tm, int *millisec)
+{
+ struct timeval timeval;
+ int result = gettimeofday(&timeval, NULL);
+ time_t t;
+ if (result == 0) {
+ t = timeval.tv_sec;
+ }
+ else {
+ t = time(NULL);
+ timeval.tv_usec = 0;
+ }
+ int msec = (timeval.tv_usec + 500) / 1000;
+ if (msec >= 1000) {
+ ++t;
+ msec = 0;
+ }
+ if (et != NULL) {
+ *et = t;
+ }
+ if (tm != NULL) {
+ *tm = *localtime(&t);
+ }
+ *millisec = msec;
+ return result;
+}
+
static void log_current_time()
{
- time_t t = time(NULL);
- struct tm tm = *localtime(&t);
- fprintf(stderr, "%04d-%02d-%02d %02d:%02d:%02d ",
- tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);
+ struct tm tm;
+ int millisec;
+ get_current_time(NULL, &tm, &millisec);
+ fprintf(stderr, "%02d-%02d-%02d %02d:%02d:%02d.%03d ",
+ tm.tm_year + 1900 - 2000, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec, millisec);
}
static pthread_mutex_t stderr_lock;
long pages;
long available;
- struct timeval timeval;
- int err, millisec;
time_t t;
- err = gettimeofday(&timeval, NULL);
- if (err == 0) {
- t = timeval.tv_sec;
- }
- else {
- t = time(NULL);
- timeval.tv_usec = 0;
+ int millisec;
+ if (get_current_time(&t, NULL, &millisec) != 0) { // gettimeofday failed (no milliseconds)
timeoutMicrosec = 1000000; // 1 sec
}
- millisec = (timeval.tv_usec + 500) / 1000;
- if (millisec >= 1000)
- {
- ++t;
- millisec = 0;
- }
fseek(sstat, 0, SEEK_SET);
fflush(sstat);