diff options
author | Christopher Faylor <me@cgf.cx> | 2003-02-22 19:35:03 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2003-02-22 19:35:03 +0000 |
commit | 878e60c56146c6e8fe6530de84627bf4c3a9d20e (patch) | |
tree | c5d004573e8af4c1c2c6c7fe56e40a938e446f50 | |
parent | fe962019355cae8aba8cb3a3e5ea8d09464509a2 (diff) | |
download | newlib-878e60c56146c6e8fe6530de84627bf4c3a9d20e.zip newlib-878e60c56146c6e8fe6530de84627bf4c3a9d20e.tar.gz newlib-878e60c56146c6e8fe6530de84627bf4c3a9d20e.tar.bz2 |
* syslog.cc (syslog): Do not print the Windows pid. Print the Cygwin pid as an
unsigned decimal. On Win95 print a timestamp and attempt to lock the file up
to four times in 3 ms.
-rw-r--r-- | winsup/cygwin/ChangeLog | 6 | ||||
-rw-r--r-- | winsup/cygwin/cygwin.din | 1 | ||||
-rw-r--r-- | winsup/cygwin/include/cygwin/version.h | 3 | ||||
-rw-r--r-- | winsup/cygwin/syslog.cc | 31 |
4 files changed, 29 insertions, 12 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 53f07bd..97e1bbc 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,9 @@ +2003-02-22 Pierre Humblet <pierre.humblet@ieee.org> + + * syslog.cc (syslog): Do not print the Windows pid. Print the Cygwin + pid as an unsigned decimal. On Win95 print a timestamp and attempt to + lock the file up to four times in 3 ms. + 2003-02-21 Corinna Vinschen <corinna@vinschen.de> * fhandler_socket.cc (fhandler_socket::fhandler_socket): Fix compiler diff --git a/winsup/cygwin/cygwin.din b/winsup/cygwin/cygwin.din index dd201f5..a2dd266 100644 --- a/winsup/cygwin/cygwin.din +++ b/winsup/cygwin/cygwin.din @@ -767,6 +767,7 @@ lseek _lseek = lseek lseek64 lstat64 +mallinfo malloc _malloc = malloc malloc_stats diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index 343a74d..a1320b9 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -184,12 +184,13 @@ details. */ lrintf lround lroundf nearbyint nearbyintf remquo remquof round roundf scalbln scalblnf sincos sincosf tgamma tgammaf truncf + 76: mallinfo */ /* Note that we forgot to bump the api for ualarm, strtoll, strtoull */ #define CYGWIN_VERSION_API_MAJOR 0 -#define CYGWIN_VERSION_API_MINOR 75 +#define CYGWIN_VERSION_API_MINOR 76 /* There is also a compatibity version number associated with the shared memory regions. It is incremented when incompatible diff --git a/winsup/cygwin/syslog.cc b/winsup/cygwin/syslog.cc index f424a4f..bde15b9 100644 --- a/winsup/cygwin/syslog.cc +++ b/winsup/cygwin/syslog.cc @@ -302,8 +302,7 @@ syslog (int priority, const char *message, ...) } if (process_logopt & LOG_PID) { - if (pass.print ("Win32 Process Id = 0x%X : Cygwin Process Id = 0x%X : ", - GetCurrentProcessId (), getpid ()) == -1) + if (pass.print ("PID %u : ", getpid ()) == -1) return; } @@ -375,6 +374,8 @@ syslog (int priority, const char *message, ...) else { /* Under Windows 95, append the message to the log file */ + char timestamp[24]; + time_t ctime; FILE *fp = fopen (get_win95_event_log_path (), "a"); if (fp == NULL) { @@ -382,24 +383,32 @@ syslog (int priority, const char *message, ...) get_win95_event_log_path ()); return; } + strftime (timestamp, sizeof timestamp, "%Y-%m-%d %H:%M:%S : ", + localtime (&(ctime = time (NULL)))); + /* Now to prevent several syslog messages from being interleaved, we must lock the first byte of the file This works on Win32 even if we created the file above. */ HANDLE fHandle = cygheap->fdtab[fileno (fp)]->get_handle (); - if (LockFile (fHandle, 0, 0, 1, 0) == FALSE) - { - debug_printf ("failed to lock file %s", get_win95_event_log_path ()); - fclose (fp); - return; - } + for (int i = 0;; i++) + if (LockFile (fHandle, 0, 0, 1, 0) == FALSE) + if (i == 3) + { + debug_printf ("failed to lock file %s", get_win95_event_log_path ()); + fclose (fp); + return; + } + else + usleep (1000); + else + break; + fputs (timestamp, fp); fputs (msg_strings[0], fp); fputc ('\n', fp); UnlockFile (fHandle, 0, 0, 1, 0); if (ferror (fp)) - { - debug_printf ("error in writing syslog"); - } + debug_printf ("error in writing syslog"); fclose (fp); } } |