1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
#include "vdefine.h"
#define SIZE_BUFF 16*16*16*16*16*16*16*16-1//6*16*16*16*16*16
#include <dirent.h>
#include <sys/stat.h>
#include <unistd.h>
typedef struct buff_inf_h
{
char *buff;
size_t size;
}buff_inf;
buff_inf *buff_get(char *vfile) {
buff_inf *buff_inf_h = (buff_inf *)malloc(sizeof(buff_inf));
FILE *fr = NULL;
char *buff_ori = (char *)malloc(sizeof(char *)*SIZE_BUFF);//CH
char *buff = buff_ori;//CH
memset(buff, 0, sizeof(buff));
if ((fr = fopen(vfile, "rb")) == NULL)
{
perror("fopen error:");
buff_inf_h->buff = NULL;
buff_inf_h->size = 0;
return buff_inf_h;//-1;
}
size_t i = 0;//unsigned int i = 0;//size_t i = 0;
//int j = 0;
while (!feof(fr))
{
fread(buff, 1, 1, fr);
buff += 1;
i++;
}
buff_inf_h->buff = (char *)malloc(sizeof(char *) * (i-2));
memcpy(buff_inf_h->buff, buff - i, i-2);
buff_inf_h->size = i - 2;
//buff_inf_h.buff = buff - i;
//buff_inf_h.size = i;
free(buff_ori);//CH--free(buff - i);//?
buff_ori = NULL;
fclose(fr);
return buff_inf_h;
}
int main(int argc, char *argv[])
{
char *vfile = argv[1];
buff_inf *buff_inf_h;
//CH--char *buff;// = (char *)malloc(sizeof(char *)*size);//;
int ret;
int ret_sig = atoi(argv[2]);
int sig_show_all = atoi(argv[3]);
int sig_choose_all = atoi(argv[4]);
size_t size;
buff_inf_h = buff_get(vfile);
if (buff_inf_h->size == 0)
{
printf("read file failed.\n");
return -1;
}
if (sig_choose_all == 0)
{
int divide_h = 10;
int divide_s = 0;
int divide_e = 1;
size = (buff_inf_h->size / divide_h)*(divide_e - divide_s);
//CH--buff = (char *)malloc(sizeof(char *)*size);
//CH--memcpy(buff, buff_inf_h->buff + (buff_inf_h->size / divide_h)*divide_s, size);
//printf("buff_whole is %p.\n", buff_inf_h->buff);
//printf("buff_inf_h.size/divide_h is %x.\n", buff_inf_h->size / divide_h);
//printf("buff starts from(>=) %p.\n", buff);
//printf("buff ends at(<) %p.\n", buff + size - 1);//+size
ret = AV_container_identify(buff_inf_h->buff + (buff_inf_h->size / divide_h)*divide_s, size);;//CCH--ret = AV_container_identify(buff, size);//CH--(const char *)?
//CH--free(buff);
//CH--buff = NULL;
//printf("define : %d.\n", ret);
//printf("size of whole buff is %d.\n", buff_inf_h->size);//size - 1
//printf("size of chosen buff is %d.\n", size);
}
else
ret = AV_container_identify(buff_inf_h->buff, buff_inf_h->size);
if (sig_show_all == 0)
{
if (ret != ret_sig)
{
printf("-----------------data of [%s] is kind of [%d].\n",vfile,ret);// dp->d_name, ret);
//printf("define : %d.\n", ret);
printf("size of whole buff is %d.\n", buff_inf_h->size);
if (sig_choose_all == 0)
printf("size of chosen buff is %d.\n", size);
}
}
else
{
printf("-----------------data of [%s] is kind of [%d].\n", vfile, ret);// dp->d_name, ret);
printf("size of whole buff is %d.\n", buff_inf_h->size);
if (sig_choose_all == 0)
printf("size of chosen buff is %d.\n", size);
}
free(buff_inf_h->buff);//CH--
buff_inf_h->buff = NULL;//CH--
free(buff_inf_h);//CH--
buff_inf_h = NULL;//CH--
/*
free(buff);
free(buff_inf_h->buff);
buff_inf_h = NULL;
free(buff_inf_h);
return ret;
*/
//CH--free(buff_inf_h->buff);
//CH--buff_inf_h = NULL;
//CH--free(buff_inf_h);
return ret;
}
|