summaryrefslogtreecommitdiff
path: root/test/test_dir.c
blob: af90842b5d70d1b3ad68ec1ca148d003d5bda1cc (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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#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[])
{
    DIR *dirp;
    struct dirent *dp;
    char *vdir = argv[1];
    char *vfile_ori = (char *)malloc(30);
    memcpy(vfile_ori,vdir,strlen(vdir));
    strcat(vfile_ori, "/");
    char *vfile = (char *)malloc(30);
    //strcat(vdir,".dir");
    dirp = opendir(vdir);
    struct stat info;
    
    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;
    while ((dp = readdir(dirp)) != NULL) 
    {
            memcpy(vfile,vfile_ori,30);
            strncat(vfile, dp->d_name, strlen(dp->d_name));//strcat(vfile,dp->d_name);//vfile = dp->d_name;//fileinfo->name;//&((fileinfo->name)[0]);//argv[1];// "0003.dat";
            
            stat(vfile, &info);
            if(S_ISDIR(info.st_mode))
                continue;
            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", 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", 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);

    free(vfile);
    free(vfile_ori);
    
    return ret;
}