summaryrefslogtreecommitdiff
path: root/test/test.c
blob: 2bf547696a74eccd878cf9532faedc2bede98861 (plain)
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;
}