summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-03-16 09:25:47 +0000
committerBenny Prijono <bennylp@teluu.com>2007-03-16 09:25:47 +0000
commitc3e7dec3d321f76e4172fb8e8b24f72981c9fda0 (patch)
tree6f573a2cb63c2ecdf7a2db89eb7a10a65611d5ac
parent3a61aaf35ae933d2f62877d7fca5a9a4ee1ecb56 (diff)
Implemented ticket #185: Added pj_file_flush() to file I/O API to flush file buffers
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1074 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjlib/include/pj/file_io.h10
-rw-r--r--pjlib/src/pj/config.c2
-rw-r--r--pjlib/src/pj/file_io_ansi.c10
-rw-r--r--pjlib/src/pj/file_io_win32.c14
-rw-r--r--pjsip/src/pjsua-lib/pjsua_core.c1
5 files changed, 36 insertions, 1 deletions
diff --git a/pjlib/include/pj/file_io.h b/pjlib/include/pj/file_io.h
index c5d9ac6c..0442103c 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_setpos(pj_oshandle_t fd,
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 66e72fab..75ab36f3 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 a2425818..6d340ce1 100644
--- a/pjlib/src/pj/file_io_ansi.c
+++ b/pjlib/src/pj/file_io_ansi.c
@@ -154,4 +154,14 @@ PJ_DEF(pj_status_t) pj_file_getpos( pj_oshandle_t fd,
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 2497be68..27848497 100644
--- a/pjlib/src/pj/file_io_win32.c
+++ b/pjlib/src/pj/file_io_win32.c
@@ -204,3 +204,17 @@ PJ_DEF(pj_status_t) pj_file_getpos( pj_oshandle_t fd,
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 b6fb19e8..46b8e0e5 100644
--- a/pjsip/src/pjsua-lib/pjsua_core.c
+++ b/pjsip/src/pjsua-lib/pjsua_core.c
@@ -290,6 +290,7 @@ static void log_writer(int level, const char *buffer, int len)
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) {