SHOW:
|
|
- or go back to the newest paste.
1 | void rtrim(char *str) | |
2 | { | |
3 | size_t n; | |
4 | n = strlen(str); | |
5 | while (n > 0 && isspace((unsigned char)str[n - 1])) { | |
6 | n--; | |
7 | } | |
8 | str[n] = '\0'; | |
9 | } | |
10 | ||
11 | typedef struct { | |
12 | char *user; | |
13 | char *topic; | |
14 | char *error; | |
15 | } topic_match; | |
16 | ||
17 | - | |
17 | + | |
18 | - | puts(pattern);*/ |
18 | + | |
19 | * mut vitun sprintf aiheuttaa virheitä (sen takia myös regcomp ei suostunu toimimaan!) | |
20 | * toimii mut mut ihan vitun vammasta paskaa | |
21 | * tää lukee topicit tekstitiedostosta jossa ne on tyyliin <käyttäjä>\t<topic>\n | |
22 | */ | |
23 | topic_match find_topic_match(char *search) { | |
24 | printf("search %s\n",search); | |
25 | regex_t regex; | |
26 | int reti; | |
27 | char *pattern = "(\\b|[!:.,])"; | |
28 | int total_len = 2*strlen(pattern)+strlen(search)+1; | |
29 | /* pitäs onnistua varmaan ilman malloccia sprintf:llä, mutta..*/ | |
30 | char *str = (char *)malloc(total_len); | |
31 | strcat(str,pattern); | |
32 | strcat(str,search); | |
33 | strcat(str,pattern); | |
34 | printf("str: %s\n",str); | |
35 | ||
36 | /*mitä helvetitä, kun pistin ton formatin ja searchin sprintf:llä char * tyyliseen muuttujaan nii regcomp ei onnistunu | |
37 | * vittu miten vammasta, nyt kuitenkin toimii*/ | |
38 | reti = regcomp(®ex,str,REG_EXTENDED); | |
39 | ||
40 | FILE *file; | |
41 | char line[300]; | |
42 | file = fopen("topicit.txt","r"); | |
43 | ||
44 | topic_match match; | |
45 | match.user=""; | |
46 | match.topic=""; | |
47 | ||
48 | while(fgets(line,300,file) != NULL) { | |
49 | rtrim(line); | |
50 | /* jos vikalla rivillä on vaan tyhjämerkkejä jostain syystä nii turha parsia useria ja topiccia */ | |
51 | if(strlen(line) == 0) { | |
52 | break; | |
53 | } | |
54 | ||
55 | char *user = strtok(line,"\t"); | |
56 | char *topic = strtok(NULL,"\t"); | |
57 | printf("topic: %s user: %s\n",topic,user); | |
58 | reti = regexec(®ex,topic,0,NULL,0); | |
59 | ||
60 | if(!reti) { | |
61 | match.user = user; | |
62 | match.topic = topic; | |
63 | match.error = ""; | |
64 | break; | |
65 | } | |
66 | } | |
67 | ||
68 | fclose(file); | |
69 | free(str); | |
70 | regfree(®ex); | |
71 | ||
72 | if(strlen(match.topic) == 0) { | |
73 | match.error = "not found!"; | |
74 | } | |
75 | ||
76 | return match; | |
77 | } |