summaryrefslogtreecommitdiff
path: root/ws2a/testhtmlreplace.c
blob: 28b3419255f06a6d0a3f7ca00f83b12a09444499 (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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdint.h>

char* replaceHTML(char* str){
  //printf("Replaceing:%s\n",str);
  char* nstr = malloc((sizeof(char)*strlen(str)) + 1);
  if(nstr == NULL){
    printf("%s%c%c\n","Content-Type:text/html;charset=iso-8859-1",13,10);
    printf("Failed to allocate memory!\n");
  }

  int strp = 0;
  int nstrp = 0;
  while(str[strp] != '\0'){
    //printf("Strp=%d nstrp=%d\n",strp,nstrp);
    if(str[strp] == '+'){
      nstr[nstrp] = ' ';
      strp++;
      nstrp++;
    }else if(str[strp] == '%'){
      //printf("Hit encodeing!\n");
      int hex = 0;
      sscanf(str+strp,"%%%2x",&hex);
      //printf("Was:%c(%d)\n",(char)hex,hex);
      if(hex == 0x0D){
        strp+=3;
        continue;
      }
      if(hex == 0x0A){
        nstr[nstrp] = '\\';
        nstr[nstrp+1] = 'n';
        nstrp+=2;
        strp+=3;
        continue;
      }
      nstr[nstrp] = (char)hex;
      nstrp++;
      strp+=3;
    }else if(str[strp] == '\n'){
      nstr[nstrp] = '\\';
      nstr[nstrp+1] = 'n';
      nstrp+=2;
      strp++;
    }else{
      nstr[nstrp] = str[strp];
      nstrp++;
      strp++;
    }
  }
  nstr[nstrp] = '\0';
  //printf("Done, str is now:%s\n",nstr);
  return nstr;
}

char* useridhash(char* str){
  char* hash = malloc(sizeof(char)*20);
  int i = (int)str[0];
  int len = strlen(str);
  int tloop = i*20;
  unsigned int hashp = 0;
  unsigned int strp = 0;
  i = 0;
  while(i < tloop){
    //printf("i:%d hashp:%u strp:%u tloop:%d\n",i,hashp,strp,tloop);
    char tchar = str[strp%len];
    hash[hashp%20] += str[strp%len];
    hashp+=(int)tchar;
    strp+=(int)(hashp*hashp);
    i++;
  }
  i = 0;
  //printf("Before characterizeing the hash, it was: %s\n",hash);
  while(i < 20){
    //printf("Normalizeing %c(%u) as %c(%u)\n",hash[i],(unsigned int)hash[i],(hash[i] % 92) + 32,(hash[i] % 92) + 32);
    unsigned int hashnum = hash[i];
    unsigned int modedhashnum = hashnum % 92;
    //printf("hashnum was %u, after mod it is:%u\n",hashnum,modedhashnum);
    hash[i] = modedhashnum + 32;
    i++;
  }
  //printf("Resulting hash was:%s\n",hash);
  return hash;
}

int main(){
  char teststring[] = "This+is+a+test\nWith\nSome\nNewlines";
  printf("Original:%s\n",teststring);
  char* parsed = replaceHTML(teststring);
  printf("%s\n",parsed);

  char teststring2[] = "This%0D%0Ais+another%0D%0Atest";
  printf("Original:%s\n",teststring2);
  char* parsed2 = replaceHTML(teststring2);
  printf("%s\n",parsed2);

  char teststring3[]  = "This%0D%0AIs%0D%0AAnother%0D%0AMulti%0D%0ALine%0D%0AComment";
  printf("Original:%s\n",teststring3);
  char* parsed3 = replaceHTML(teststring3);
  printf("%s\n",parsed3);
  return 0;
}