first cut of Object Notification API and tests
[cilux] / src / platform / kernelapi.c
index 993808e..e8e2854 100644 (file)
@@ -1462,7 +1462,7 @@ EXPORT void k_log_err(char* format, ...)
        va_list ap;
        va_start(ap, format);
        if(LOG_TO_STD){
-               VPRINTFERR(format,ap);
+               VPRINTFERR(format, ap);
                PRINTFERR("\n");
                FFLUSH(stderr);
        }
@@ -1475,14 +1475,47 @@ EXPORT void k_log_err(char* format, ...)
        va_end(ap);
 }
 
+EXPORT void k_assert(int t, char* format, ...)
+{
+    va_list ap;
+    va_start(ap, format);
+    if(!t){
+        if(LOG_TO_STD){
+            VPRINTFERR(format, ap);
+            PRINTFERR("\n");
+            FFLUSH(stderr);
+        }
+        else{
+            vsnprintf(logbuf, LOGBUFSIZE,format,ap);
+            *(logbuf+LOGBUFSIZE-2)='\n';
+            *(logbuf+LOGBUFSIZE-1)=0;
+            write_to_logfile_cern_style(logbuf,1);
+        }
+        k_log_err("Terminating Cilux");
+        k_log_err("---------------------");
+        EXIT(-1);
+    }
+    va_end(ap);
+}
+
 EXPORT void k_fatal(char* format, ...)
 {
        va_list ap;
        va_start(ap, format);
-       k_log_out(format, ap);
+       if(LOG_TO_STD){
+               VPRINTFERR(format, ap);
+               PRINTFERR("\n");
+               FFLUSH(stderr);
+       }
+       else{
+               vsnprintf(logbuf, LOGBUFSIZE,format,ap);
+               *(logbuf+LOGBUFSIZE-2)='\n';
+               *(logbuf+LOGBUFSIZE-1)=0;
+               write_to_logfile_cern_style(logbuf,1);
+       }
        va_end(ap);
-       k_log_out("Terminating Cilux");
-       k_log_out("---------------------");
+       k_log_err("Terminating Cilux");
+       k_log_err("---------------------");
        EXIT(1);
 }