Implemented ticket #185: Added pj_file_flush() to file I/O API to flush file buffers

git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@1074 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjlib/include/pj/file_io.h b/pjlib/include/pj/file_io.h
index c5d9ac6..0442103 100644
--- a/pjlib/include/pj/file_io.h
+++ b/pjlib/include/pj/file_io.h
@@ -163,6 +163,16 @@
 PJ_DECL(pj_status_t) pj_file_getpos(pj_oshandle_t fd,
                                     pj_off_t *pos);
 
+/**
+ * Flush file buffers.
+ *
+ * @param fd		The file descriptor.
+ *
+ * @return		PJ_SUCCESS or the appropriate error code on error.
+ */
+PJ_DECL(pj_status_t) pj_file_flush(pj_oshandle_t fd);
+
+
 /** @} */
 
 
diff --git a/pjlib/src/pj/config.c b/pjlib/src/pj/config.c
index 66e72fa..75ab36f 100644
--- a/pjlib/src/pj/config.c
+++ b/pjlib/src/pj/config.c
@@ -21,7 +21,7 @@
 #include <pj/ioqueue.h>
 
 static const char *id = "config.c";
-const char *PJ_VERSION = "0.5.10.1-trunk";
+const char *PJ_VERSION = "0.5.10.2-trunk";
 
 PJ_DEF(void) pj_dump_config(void)
 {
diff --git a/pjlib/src/pj/file_io_ansi.c b/pjlib/src/pj/file_io_ansi.c
index a242581..6d340ce 100644
--- a/pjlib/src/pj/file_io_ansi.c
+++ b/pjlib/src/pj/file_io_ansi.c
@@ -154,4 +154,14 @@
     return PJ_SUCCESS;
 }
 
+PJ_DEF(pj_status_t) pj_file_flush(pj_oshandle_t fd)
+{
+    int rc;
 
+    rc = fflush((FILE*)fd);
+    if (rc == EOF) {
+	return PJ_RETURN_OS_ERROR(errno);
+    }
+
+    return PJ_SUCCESS;
+}
diff --git a/pjlib/src/pj/file_io_win32.c b/pjlib/src/pj/file_io_win32.c
index 2497be6..2784849 100644
--- a/pjlib/src/pj/file_io_win32.c
+++ b/pjlib/src/pj/file_io_win32.c
@@ -204,3 +204,17 @@
     return PJ_SUCCESS;
 }
 
+PJ_DEF(pj_status_t) pj_file_flush(pj_oshandle_t fd)
+{
+    BOOL rc;
+
+    rc = FlushFileBuffers(fd);
+
+    if (!rc) {
+	DWORD dwStatus = GetLastError();
+        if (dwStatus != 0)
+            return PJ_RETURN_OS_ERROR(dwStatus);
+    }
+
+    return PJ_SUCCESS;
+}
diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c
index b6fb19e..46b8e0e 100644
--- a/pjsip/src/pjsua-lib/pjsua_core.c
+++ b/pjsip/src/pjsua-lib/pjsua_core.c
@@ -290,6 +290,7 @@
     if (pjsua_var.log_file) {
 	pj_ssize_t size = len;
 	pj_file_write(pjsua_var.log_file, buffer, &size);
+	pj_file_flush(pjsua_var.log_file);
     }
 
     if (level <= (int)pjsua_var.log_cfg.console_level) {