📄 errlog.c
字号:
}
sprintf(temp_string, "%02X", (unsigned char)dump_buffer[i]);
buffer[13+j*3] = temp_string[0];
buffer[13+j*3+1] = temp_string[1];
if ((unsigned char)dump_buffer[i] >= ' ')
buffer[62+j] = dump_buffer[i];
else
buffer[62+j] = '.';
j++;
}
if (j != 0)
{
buffer[78] = '\n'; buffer[79] = 0;
len = strlen(buffer);
write(filedes, buffer, len);
}
}
#ifndef DOS
/* unlock the file. */
flk.l_type = F_UNLCK;
flk.l_whence = 0;
flk.l_start = 0;
flk.l_len = 0;
flk.l_pid = 0;
flk.l_pid = getpid();
fcntl(filedes, F_SETLKW, &flk);
#endif
close(filedes);
return(0);
}
static int RemoteLog(int typ, char *message_string, int data_len)
{
char *ptr;
int len;
time_t timer;
struct tm *t;
int i;
int filedes;
char buffer[2048];
#ifndef DOS
struct flock flk;
#endif
char fn[MAX_FN_LEN];
if (buffer == NULL)
return -1;
strcpy(fn, path);
strcat(fn, ErrorLogFileName);
#ifdef DOS
filedes = open(fn, O_CREAT | O_TEXT | O_APPEND | O_WRONLY);
if (filedes == -1) return(errno);
#else
filedes = open(fn, O_CREAT | O_APPEND | O_WRONLY, PERM);
if (filedes == -1) return(-1);
fcntl(filedes, F_GETLK, &flk);
flk.l_type = F_WRLCK;
flk.l_whence = 0;
flk.l_start = 0;
flk.l_len = 0;
flk.l_pid = 0;
flk.l_pid = getpid();
fcntl(filedes, F_SETLKW, &flk);
#endif
timer = time(NULL);
t = localtime(&timer); t->tm_year += 1900; t->tm_mon ++;
SendToRemote(NetId, " ", 1);
sprintf(buffer, "PROCESS ID <%-40s> DATE <%04d-%02d-%02d>", IdStr, t->tm_year, t->tm_mon, t->tm_mday);
len = strlen(buffer);
SendToRemote(NetId, buffer, len);
sprintf(buffer, "MESSAGE TYPE <%-10s> MESSAGE LENGTH <%04d> TIME <%02d:%02d:%02d>", Message[typ], data_len, t->tm_hour, t->tm_min, t->tm_sec);
len = strlen(buffer);
SendToRemote(NetId, buffer, len);
memset(buffer, SEPARATOR_CHAR, 78); buffer[78] = '\n'; buffer[79] = 0;
SendToRemote(NetId, buffer, len);
ptr = message_string;
while (*message_string != 0)
{
if (*message_string == '\n')
{
*message_string = 0;
len = strlen(ptr);
i = 0;
if (len > MAX_REMOTE_LEN)
for (i=0; i<len/MAX_REMOTE_LEN; i++)
SendToRemote(NetId, &ptr[i*MAX_REMOTE_LEN], MAX_REMOTE_LEN);
if (len % MAX_REMOTE_LEN != 0)
SendToRemote(NetId, &ptr[i*MAX_REMOTE_LEN], len - i*MAX_REMOTE_LEN);
ptr = message_string+1;
}
message_string ++;
}
#ifndef DOS
/* unlock the file. */
flk.l_type = F_UNLCK;
flk.l_whence = 0;
flk.l_start = 0;
flk.l_len = 0;
flk.l_pid = 0;
flk.l_pid = getpid();
fcntl(filedes, F_SETLKW, &flk);
#endif
return(0);
}
static int ReadConfigFile(char *filename)
{
FILE *fp;
char temp_str[80];
int SectorFlag;
int i,j;
fp = fopen(filename, "rt");
if (fp==NULL) return(-1);
SectorFlag = 0;
while (!feof(fp))
{
fgets(temp_str, 80, fp);
if (feof(fp)) break;
strupr(temp_str);
for (i=0; i<MAX_SECTOR_NUM; i++)
if (strstr(temp_str, Sector[i]) != NULL)
{
SectorFlag = i;
break;
}
for (i=0; i<MAX_MESSAGE_TYPE_NUM; i++)
if (strstr(temp_str, Message[i]) != NULL)
{
TraceFlag[SectorFlag][i] = 0;
for (j=0; j<strlen(temp_str); j++)
if (isdigit(temp_str[j]))
TraceFlag[SectorFlag][i] = TraceFlag[SectorFlag][i] * 10 +
(temp_str[j] - '0');
break;
}
}
fclose(fp);
return(0);
}
/* UNIX use only function */
#ifndef DOS
static char *strupr(char *str)
{
int i;
for (i=0; i<strlen(str); i++)
str[i] = toupper(str[i]);
}
#endif
static int RemoteDupLog(int typ, char *error_string, char *dump_buffer, int data_len, int fmt)
{
char fn[MAX_FN_LEN];
int filedes;
char temp_string[10];
char *ptr;
int i, j;
int len;
struct tm *t;
time_t timer;
char buffer[2048];
int big = 0;
#ifndef DOS
struct flock flk;
#endif
if (buffer == NULL)
return -1;
timer = time(NULL);
t = localtime(&timer); t->tm_year += 1900; t->tm_mon ++;
strcpy(fn, path);
/* strcat(fn, ErrorLogFileName); */
strcat(fn, RemoteLockFileName);
#ifdef DOS
filedes = open(fn, O_CREAT | O_TEXT | O_APPEND | O_WRONLY);
if (filedes == -1) return(errno);
#else
filedes = open(fn, O_CREAT | O_APPEND | O_WRONLY, PERM);
if (filedes == -1) return(-1);
fcntl(filedes, F_GETLK, &flk);
flk.l_type = F_WRLCK;
flk.l_whence = 0;
flk.l_start = 0;
flk.l_len = 0;
flk.l_pid = 0;
flk.l_pid = getpid();
fcntl(filedes, F_SETLKW, &flk);
#endif
/* print the information title */
sprintf(buffer, "PROCESS ID <%-40s> DATE <%04d-%02d-%02d>\n", IdStr, t->tm_year, t->tm_mon, t->tm_mday);
len = strlen(buffer);
sprintf(buffer+len, "MESSAGE TYPE <%-10s> MESSAGE LENGTH <%04d> TIME <%02d:%02d:%02d>\n", Message[typ], data_len, t->tm_hour, t->tm_min, t->tm_sec);
len = strlen(buffer);
memset(buffer+len, SEPARATOR_CHAR, 77); buffer[len+77] = 0;
len = strlen(buffer);
SendToRemote(NetId, buffer, len+1);
if (fmt == 0)
{
ptr = error_string;
while (*error_string != 0)
{
if (*error_string == '\n')
{
*error_string = 0;
len = strlen(ptr);
i = 0;
if (len > MAX_REMOTE_LEN)
for (i=0; i<len/MAX_REMOTE_LEN; i++)
SendToRemote(NetId, &ptr[i*MAX_REMOTE_LEN], MAX_REMOTE_LEN);
if (len % MAX_REMOTE_LEN != 0)
SendToRemote(NetId, &ptr[i*MAX_REMOTE_LEN], len - i*MAX_REMOTE_LEN);
ptr = error_string+1;
}
error_string ++;
}
SendToRemote(NetId, "\n", 1);
}
else
{
int tmpLen;
char tmpBuf[2024];
/* print DUMP message */
sprintf(buffer, "DUMP of <%s>", error_string);
len = strlen(buffer);
SendToRemote(NetId, buffer, len+1);
/* write(filedes, buffer, len); */
strcpy(buffer, "\nDisplacement ----------------- Hex codes ------------------- ASCII value");
tmpLen = 0;
tmpBuf[0] = '\0';
for (i=0; i<data_len; i++)
{
if (i % 16 == 0)
{
j = 0; buffer[77] = '\n'; buffer[78] = 0;
len = strlen(buffer);
if (tmpLen < MAX_REMOTE_LEN-80)
{
strcat(tmpBuf, (char*)buffer);
tmpLen += len;
}
else
{
big = 1;
tmpBuf[tmpLen-1] = '\0';
SendToRemote(NetId, tmpBuf, tmpLen);
usleep(40000);
tmpLen = 0;
tmpBuf[0] = '\0';
strcat(tmpBuf, (char*)buffer);
tmpLen += len;
}
sprintf(buffer, "%04X(%04d) ", i, i);
memset(&buffer[10], ' ', 68);
}
sprintf(temp_string, "%02X", (unsigned char)dump_buffer[i]);
buffer[12+j*3] = temp_string[0];
buffer[12+j*3+1] = temp_string[1];
if ((unsigned char)dump_buffer[i] >= ' ')
buffer[61+j] = dump_buffer[i];
else
buffer[61+j] = '.';
j++;
}
if (j != 0)
{
strcat(tmpBuf, (char*)buffer);
strcat(tmpBuf, "\n\n");
len = strlen(tmpBuf);
if (big == 1 && len <= 512)
usleep(50000);
SendToRemote(NetId, tmpBuf, len+1);
if (len > 512)
usleep(50000);
/* write(filedes, buffer, len); */
}
else
SendToRemote(NetId, "\n\n", 3);
}
#ifndef DOS
/* unlock the file. */
flk.l_type = F_UNLCK;
flk.l_whence = 0;
flk.l_start = 0;
flk.l_len = 0;
flk.l_pid = 0;
flk.l_pid = getpid();
fcntl(filedes, F_SETLKW, &flk);
#endif
close(filedes);
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -