Subversion Repositories Kolibri OS

Rev

Rev 6587 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1408 serge 1
 
1616 serge 2
#include 
5270 serge 3
#include 
1408 serge 4
5
 
6
typedef struct
7
{
8
  char sec;
9
  char min;
10
  char hour;
11
  char rsv;
12
}detime_t;
13
14
 
15
{
16
  char  day;
17
  char  month;
18
  short year;
19
}dedate_t;
20
21
 
22
{
23
  unsigned    attr;
24
  unsigned    flags;
25
  union
26
  {
27
     detime_t  ctime;
28
     unsigned  cr_time;
29
  };
30
  union
31
  {
32
     dedate_t  cdate;
33
     unsigned  cr_date;
34
  };
35
  union
36
  {
37
     detime_t  atime;
38
     unsigned  acc_time;
39
  };
40
  union
41
  {
42
     dedate_t  adate;
43
     unsigned  acc_date;
44
  };
45
  union
46
  {
47
     detime_t  mtime;
48
     unsigned  mod_time;
49
  };
50
  union
51
  {
52
     dedate_t  mdate;
53
     unsigned  mod_date;
54
  };
55
  unsigned    size;
56
  unsigned    size_high;
57
} FILEINFO;
58
59
 
60
61
 
6588 serge 62
int create_file(const char *path);
63
int set_file_size(const char *path, unsigned size);
64
int write_file(const char *path,const void *buff,
65
               unsigned offset,unsigned count,unsigned *writes);
66
67
 
68
 
1408 serge 69
{
70
  char *path;
71
  int  offset;
72
} dbgfile_t;
73
74
 
75
76
 
77
#define va_end(v)       __builtin_va_end(v)
78
#define va_arg(v,l)     __builtin_va_arg(v,l)
79
#define __va_copy(d,s)	__builtin_va_copy(d,s)
80
81
 
82
typedef __gnuc_va_list    va_list;
83
84
 
85
86
 
87
{
88
    FILEINFO info;
89
90
 
91
92
 
93
    {
94
        if(!create_file(path))
95
        {
96
            dbgfile.path = path;
97
            return true;
98
        }
99
        else return false;
100
    };
101
    set_file_size(path, 0);
102
    dbgfile.path   = path;
103
    dbgfile.offset = 0;
104
    return true;
105
};
106
107
 
108
109
 
1604 serge 110
 
1408 serge 111
{
112
    char  txtbuf[1024];
1870 serge 113
    int   len = 0;
1408 serge 114
115
 
116
117
 
118
    if (format)
119
        len = vsnprintf(txtbuf, 1024, format, ap);
1870 serge 120
    va_end(ap);
1408 serge 121
122
 
123
        SysMsgBoardStr(txtbuf);
124
125
 
126
}
127
128
 
129
 
130
{
131
    char      txtbuf[1024];
1870 serge 132
    unsigned  writes;
1408 serge 133
    int       len = 0;
134
135
 
136
137
 
138
    if (format)
139
      len = vsnprintf(txtbuf, 1024, format, ap);
1870 serge 140
    va_end(ap);
1408 serge 141
142
 
143
    {
144
        if( dbgfile.path)
4292 Serge 145
        {
146
/*  do not write into log file if interrupts disabled */
1604 serge 147
148
 
4292 Serge 149
            {
150
                write_file(dbgfile.path,txtbuf,dbgfile.offset,len,&writes);
151
                dbgfile.offset+=writes;
152
            };
153
        }
154
        else SysMsgBoardStr(txtbuf);
155
    };
1408 serge 156
    return len;
157
}
158