Ik ben bezig een implementatie voor een watchlist te maken (inotify, ubuntu). Het coden gaat opzich lekker alleen ik krijg een hele rare error. Op het moment dat ik de 5e plek in mijn array probeer te vullen crasht het programma. Voor de rest werken de prekken prima, iemand een suggestie?
code:
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
| char **path_list;
int *wd_list;
int counter;
void addDirs(int fd, char* path)
{
printf("Counter: %d path: %s \n",counter,path);
struct dirent *entry;
DIR *dp;
int wd=0;
counter += 1;
dp = opendir(path);
wd = inotify_add_watch(fd, path, IN_CREATE | IN_DELETE | IN_MOVED_FROM | IN_MOVED_TO);
//path_list[counter] = path;
path_list[8] = "test";
while((entry = readdir(dp)))
{
if((entry->d_type == DT_DIR) && (strcmp(entry->d_name,".") != 0) && (strcmp(entry->d_name,"..") != 0))
{
char tmpDir[strlen(path) + strlen(entry->d_name)];
sprintf(tmpDir, "%s%s%s", path, "/", entry->d_name);
addDirs(fd, tmpDir);
}
}
closedir(dp);
}
int main(int argc, char ** argv)
{
int length, i = 0, both=0, lookup_table_size=0;
int fd,wd;
char buffer[EVENT_BUF_LEN];
char* directory1="/tmp";
char* directory2="/home/xxxx/Examples";
fd = inotify_init();
counter = 0;
lookup_table_size = countDirs(0, directory1) + countDirs(0, directory2);
wd_list =(int *) malloc(lookup_table_size);
path_list = (char **) malloc(lookup_table_size);
addDirs(fd,directory1);
addDirs(fd,directory2); |