00001
00008
00009
00010
00011 #include <PalmOS.h>
00012
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 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"
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 , 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
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 }