]> git.sesse.net Git - vlc/blobdiff - src/interface/intf_msg.c
. should compile & run on Solaris with ./configure --disable-dsp
[vlc] / src / interface / intf_msg.c
index adea21ee71f9fcdb779a6614cf7f9d3ab78a3420..dcb5b92ea29a917bfba461f6f8e36e8e6fc8a726 100644 (file)
@@ -93,17 +93,15 @@ typedef struct intf_msg_s
 
 #ifdef DEBUG_LOG
     /* Log file */
-    int                     i_log_file;                          /* log file */
+    FILE *                  p_log_file;                          /* log file */
 #endif
 
-//#if 0
 #if !defined(INTF_MSG_QUEUE) && !defined(DEBUG_LOG)
     /* If neither messages queue, neither log file is used, then the structure
      * is empty. However, empty structures are not allowed in C. Therefore, a
      * dummy integer is used to fill it. */
     int                     i_dummy;                        /* unused filler */
 #endif
-//    int                     i_warning_level;
 } intf_msg_t;
 
 /*****************************************************************************
@@ -152,14 +150,7 @@ p_intf_msg_t intf_MsgCreate( void )
         /* Log file initialization - on failure, file pointer will be null,
          * and no log will be issued, but this is not considered as an
          * error */
-        p_msg->i_log_file = open( DEBUG_LOG, O_CREAT | O_TRUNC |
-#ifndef SYS_BSD
-                                  O_SYNC |
-#else
-                                  O_ASYNC |
-#endif /* SYS_BSD */
-                                  O_WRONLY, 0666 );
-
+        p_msg->p_log_file = fopen( DEBUG_LOG, "w" );
 #endif
     }
     return( p_msg );
@@ -178,9 +169,9 @@ void intf_MsgDestroy( void )
 
 #ifdef DEBUG_LOG
     /* Close log file if any */
-    if( p_main->p_msg->i_log_file >= 0 )
+    if( p_main->p_msg->p_log_file != NULL )
     {
-        close( p_main->p_msg->i_log_file );
+        fclose( p_main->p_msg->p_log_file );
     }
 #endif
 
@@ -392,17 +383,18 @@ static void QueueMsg( intf_msg_t *p_msg, int i_type, char *psz_format, va_list a
     /*
      * Convert message to string
      */
-#ifdef SYS_BEOS
+#ifdef HAVE_VASPRINTF
+    vasprintf( &psz_str, psz_format, ap );
+#else
     psz_str = (char*) malloc( strlen(psz_format) + INTF_MAX_MSG_SIZE );
     vsprintf( psz_str, psz_format, ap );
-#else
-    vasprintf( &psz_str, psz_format, ap );
 #endif
     if( psz_str == NULL )
     {
         fprintf(stderr, "warning: can't store following message (%s): ",
                 strerror(errno) );
         vfprintf(stderr, psz_format, ap );
+        fprintf(stderr, "\n" );
         exit( errno );
     }
 
@@ -423,6 +415,9 @@ static void QueueMsg( intf_msg_t *p_msg, int i_type, char *psz_format, va_list a
      */
     p_msg_item->i_type =     i_type;
     p_msg_item->psz_msg =    psz_str;
+#ifdef DEBUG    
+    p_msg_item->date =         mdate();
+#endif
 
 #ifdef INTF_MSG_QUEUE /*......................................... queue mode */
     vlc_mutex_unlock( &p_msg->lock );                      /* give lock back */
@@ -453,11 +448,11 @@ static void QueueDbgMsg(intf_msg_t *p_msg, char *psz_file, char *psz_function,
     /*
      * Convert message to string
      */
-#ifdef SYS_BEOS
+#ifdef HAVE_VASPRINTF
+    vasprintf( &psz_str, psz_format, ap );
+#else
     psz_str = (char*) malloc( INTF_MAX_MSG_SIZE );
     vsprintf( psz_str, psz_format, ap );
-#else
-    vasprintf( &psz_str, psz_format, ap );
 #endif
     if( psz_str == NULL )
     {
@@ -465,6 +460,7 @@ static void QueueDbgMsg(intf_msg_t *p_msg, char *psz_file, char *psz_function,
                 strerror(errno) );
         fprintf(stderr, INTF_MSG_DBG_FORMAT, psz_file, psz_function, i_line );
         vfprintf(stderr, psz_format, ap );
+        fprintf(stderr, "\n" );
         exit( errno );
     }
 
@@ -472,9 +468,7 @@ static void QueueDbgMsg(intf_msg_t *p_msg, char *psz_file, char *psz_function,
     vlc_mutex_lock( &p_msg->lock );                              /* get lock */
     if( p_msg->i_count == INTF_MSG_QSIZE )          /* flush queue if needed */
     {
-#ifdef DEBUG               /* in debug mode, queue overflow causes a warning */
         fprintf(stderr, "warning: message queue overflow\n" );
-#endif
         FlushLockedMsg( p_msg );
     }
     p_msg_item = p_msg->msg + p_msg->i_count++;            /* select message */
@@ -547,7 +541,10 @@ static void PrintMsg( intf_msg_item_t *p_msg )
         break;
 
     case INTF_MSG_WARN:                                   /* Warning message */
-        asprintf( &psz_msg, "%s", p_msg->psz_msg );
+        mstrtime( psz_date, p_msg->date );
+        asprintf( &psz_msg, "(%s) %s",
+                  psz_date, p_msg->psz_msg );
+
         break;
         
     case INTF_MSG_INTF:                                /* interface messages */
@@ -576,14 +573,14 @@ static void PrintMsg( intf_msg_item_t *p_msg )
     switch( p_msg->i_type )
     {
     case INTF_MSG_STD:                                  /* standard messages */
-        fprintf( stdout, psz_msg );
+        fprintf( stdout, "%s\n", psz_msg );
         break;
     case INTF_MSG_ERR:                                     /* error messages */
     case INTF_MSG_WARN:
 #ifndef DEBUG_LOG_ONLY
     case INTF_MSG_DBG:                                 /* debugging messages */
 #endif
-        fprintf( stderr, psz_msg );
+        fprintf( stderr, "%s\n", psz_msg );
         break;
     case INTF_MSG_INTF:                                /* interface messages */
         intf_ConsolePrint( p_main->p_intf->p_console, psz_msg );
@@ -592,9 +589,10 @@ static void PrintMsg( intf_msg_item_t *p_msg )
 
 #ifdef DEBUG_LOG
     /* Append all messages to log file */
-    if( p_main->p_msg->i_log_file >= 0 )
+    if( p_main->p_msg->p_log_file != NULL )
     {
-        write( p_main->p_msg->i_log_file, psz_msg, strlen( psz_msg ) );
+        fwrite( psz_msg, strlen( psz_msg ), 1, p_main->p_msg->p_log_file );
+        fwrite( "\n", 1, 1, p_main->p_msg->p_log_file );
     }
 #endif
 
@@ -613,11 +611,11 @@ static void PrintMsg( intf_msg_item_t *p_msg )
     {
     case INTF_MSG_STD:                                  /* standard messages */
     case INTF_MSG_DBG:                                     /* debug messages */
-        fprintf( stdout, p_msg->psz_msg );
+        fprintf( stdout, "%s\n", p_msg->psz_msg );
         break;
     case INTF_MSG_ERR:                                     /* error messages */
     case INTF_MSG_WARN:
-        fprintf( stderr, p_msg->psz_msg );                /* warning message */
+        fprintf( stderr, "%s\n", p_msg->psz_msg );        /* warning message */
         break;
     case INTF_MSG_INTF:                                /* interface messages */
         intf_ConsolePrint( p_main->p_intf->p_console, p_msg->psz_msg );
@@ -626,3 +624,4 @@ static void PrintMsg( intf_msg_item_t *p_msg )
 }
 
 #endif
+