Main Page | File List | Globals | Related Pages

log.c

Go to the documentation of this file.
00001 
00008 /*      $Id: log.c,v 1.6 2003/03/06 22:43:14 clavelei Exp clavelei $     */
00009 
00010 
00011 #include <PalmOS.h>
00012 //#include <PalmCompatibility.h>
00013 #include <stdarg.h>
00014 #include "log.h"
00015 #include "memo.h"
00016 
00017 #define SIZE_INC 1000
00018 
00019 static UInt32 ticks,
00020   secs;
00021 static Boolean LogOpened;
00022 
00023 /*  const */ char *EvtNames[] = {
00024     "nilEvent",
00025     "penDownEvent",
00026     "penUpEvent",
00027     "penMoveEvent",
00028     "keyDownEvent",
00029     "winEnterEvent",
00030     "winExitEvent",
00031     "ctlEnterEvent",
00032     "ctlExitEvent",
00033     "ctlSelectEvent",
00034     "ctlRepeatEvent",
00035     "lstEnterEvent",
00036     "lstSelectEvent",
00037     "lstExitEvent",
00038     "popSelectEvent",
00039     "fldEnterEvent",
00040     "fldHeightChangedEvent",
00041     "fldChangedEvent",
00042     "tblEnterEvent",
00043     "tblSelectEvent",
00044     "daySelectEvent",
00045     "menuEvent",
00046     "appStopEvent",
00047     "frmLoadEvent",
00048     "frmOpenEvent",
00049     "frmGotoEvent",
00050     "frmUpdateEvent",
00051     "frmSaveEvent",
00052     "frmCloseEvent",
00053     "frmTitleEnterEvent",
00054     "frmTitleSelectEvent",
00055     "tblExitEvent",
00056     "sclEnterEvent",
00057     "sclExitEvent",
00058     "sclRepeatEvent",
00059     "tsmFepModeEvent"  /* 35 */
00060 };
00061 
00062 
00063 int DebugIndentLevel;
00064 
00071 Err
00072 log_open ()
00073 {
00074     DateTimeType dt;
00075     static UInt32 dateformat,
00076       timeformat;
00077     char dates[longDateStrLength],
00078       times[timeStringLength],
00079       buf[128];
00080 
00081     if (LogOpened)
00082         return (0);
00083 
00084     dateformat = PrefGetPreference (prefDateFormat);
00085     timeformat = PrefGetPreference (prefTimeFormat);
00086     TimSecondsToDateTime (TimGetSeconds (), &dt);
00087     DateToAscii (dt.month, dt.day, dt.year /*   + 1904 */ , dateformat, dates);
00088     TimeToAscii (dt.hour, dt.minute, timeformat, times);
00089     StrPrintF (buf, "\\Log record of %s %s\n", dates, times);
00090     ticks = TimGetTicks ();
00091     secs = TimGetSeconds ();
00092 
00093     return (memo_open (buf));
00094 }
00095 
00096 
00103 void
00104 log_close ()
00105 {
00106     log_write ("Log closed");
00107     memo_close (NULL);
00108     LogOpened = 0;
00109 }
00110 
00111 
00118 void
00119 log_delete ()
00120 {
00121     memo_delete ();
00122 }
00123 
00124 
00133 void
00134 log_write (char *p)
00135 {
00136     char buf[96];
00137 
00138         if (p[0] != '\\')
00139         buf[0] = '\n';
00140     else
00141         buf[0] = ' ';
00142     //      StrIToA (buf + 1, TimGetTicks () - ticks);
00143     StrPrintF (buf + 1, "(%ld)%ld: ", TimGetSeconds () - secs, TimGetTicks () - ticks);
00144 
00145     memo_write (buf);
00146     memo_write (p);
00147 }
00148 
00149 
00159 void
00160 log_printf (Char* formatStr, ...)
00161 {
00162     va_list args;
00163     char buf[256];
00164     Int16 l = 0;
00165 
00166 #ifdef DEBUG
00167     if (DebugIndentLevel < 0)
00168         DebugIndentLevel = 0;
00169     else if (DebugIndentLevel > 20)
00170         DebugIndentLevel = 20;
00171     l = DebugIndentLevel;
00172     MemSet (buf, DebugIndentLevel, ' ');
00173 #endif
00174     va_start (args, formatStr);
00175     l = StrVPrintF (buf + l, formatStr, args);
00176     va_end (args);
00177     ErrFatalDisplayIf (l >= sizeof (buf), "log_printf overflow");
00178     log_write (buf);
00179 }

Generated on Sun Aug 29 11:00:40 2004 for GPilotS by doxygen 1.3.4