View difference between Paste ID: nEyzPY9d and SgJJnKDm
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(&regex,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(&regex,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(&regex);
71
    
72
    if(strlen(match.topic) == 0) {
73
        match.error = "not found!"; 
74
    }
75
76
    return match;
77
}