36 #define TRAN_LOG_MAX_COUNT 1000 37 #define LOG_TOP_RES_FILE_TRAN "log_top.t" 46 static int log_top (FILE * fp,
char *filename,
long start_offset,
long end_offset);
62 long start_offset, end_offset;
66 for (i = arg_start; i <
argc; i++)
69 fprintf (stdout,
"%s\n", filename);
72 fp = fopen (filename,
"rb");
74 fp = fopen (filename,
"r");
78 fprintf (stderr,
"%s[%s]\n", strerror (errno), filename);
83 start_offset = end_offset = -1;
86 error =
log_top (fp, filename, start_offset, end_offset);
100 log_top (FILE * fp,
char *filename,
long start_offset,
long end_offset)
108 char fileinfo_str[1024];
113 start_date[0] =
'\0';
117 if (str_buf ==
NULL || linebuf_tstr ==
NULL)
119 fprintf (stderr,
"malloc error\n");
123 if (start_offset != -1)
125 fseek (fp, start_offset, SEEK_SET);
130 if (end_offset != -1)
132 if (ftell (fp) > end_offset)
138 if (
ut_get_line (fp, linebuf_tstr, &linebuf, &lineno) <= 0)
146 fprintf (stderr,
"invaild version of log file\n");
156 if (strncmp (linebuf + 23,
"END OF LOG", 10) == 0)
162 if (start_date[0] ==
'\0')
164 strcpy (start_date, cur_date);
169 if (linebuf[0] !=
'\n')
171 sprintf (fileinfo_str,
"%s:%d\n", filename, lineno);
180 if (strncmp (msg_p,
"***", 3) == 0)
184 if (sscanf (msg_p + 3 + 1,
"%*s %*s %f", &runtime) == 1)
196 info_add (&tmpinfo, start_date, cur_date);
200 start_date[0] =
'\0';
225 fprintf (stderr,
"%s\n", strerror (errno));
235 for (i--; i >= 0; i--)
238 fprintf (fp_t,
"-----------------------------------------------------\n");
240 fprintf (fp_t,
"%s\n", temp[i].
logstr);
270 info_arr[
i] = info_arr[i / 2];
298 info_arr[parent] = info_arr[child];
302 info_arr[parent] = temp;
#define CAS_LOG_BEGIN_WITH_YEAR
static int info_delete(T_LOG_INFO *info)
int t_string_add(T_STRING *t_str, char *str, int str_len)
char * get_msg_start_ptr(char *linebuf)
static int info_arr_max_size
void t_string_free(T_STRING *t_str)
static T_LOG_INFO info_arr[TRAN_LOG_MAX_COUNT+1]
static int info_add(T_LOG_INFO *info, char *start_date, char *end_date)
#define LOG_TOP_RES_FILE_TRAN
#define TRAN_LOG_MAX_COUNT
#define CAS_LOG_BEGIN_WITH_MONTH
char * t_string_str(T_STRING *t_str)
int is_cas_log(char *str)
#define GET_CUR_DATE_STR(BUF, LINEBUF)
static int log_top(FILE *fp, char *filename, long start_offset, long end_offset)
static void error(const char *msg)
static void print_result(void)
T_STRING * t_string_make(int init_size)
char * strdup(const char *str)
int check_log_time(char *start_date, char *end_date)
int log_top_tran(int argc, char *argv[], int arg_start)
int get_file_offset(char *filename, long *start_offset, long *end_offset)
void t_string_clear(T_STRING *t_str)
int ut_get_line(FILE *fp, T_STRING *t_str, char **out_str, int *lineno)