Antwort auf den Beitrag "Re:Und automatische Verlinkung" posten:
Nickname:
Passwort:
Thema:
Nachricht:
>#include <stdio.h> >#include <stdlib.h> >#include <string.h> >#include <ctype.h> > >#include "cgitools.h" >#include "bretttools.h" > >/***********************************************************************************************************************/ > >void GetConfig(char*FileName,char*Key,char*Value,char*ADMIN_EMAIL) >{ > FILE* File; > char Line[2048]; > File=fopen(FileName,"rt"); > if (File==NULL) { > ConfigError(ADMIN_EMAIL); > exit(0); > } > strcpy(Value,""); > while (!feof(File)) { > fgets(Line,2047,File); > if ((strncmp(Line,Key,strlen(Key))==0)&&(Line[strlen(Key)]=='=')) > strcpy(Value,Line+strlen(Key)+1); > } > /* abschliessendes \n loeschen wenn vorhanden */ > if ((strlen(Value)>0)&&(Value[strlen(Value)-1]=='\n')) Value[strlen(Value)-1]='\0'; > fclose(File); >} > >/***********************************************************************************************************************/ > >unsigned long GetElementLength(char* Data,char* Name) >{ > char StringName[80]; > char *Temp; > > strcpy(StringName,Name); > strcat(StringName,"="); > Temp=strstr(Data,StringName); > if (Temp==NULL) return 0; > else return strcspn(Temp+strlen(StringName),"&"); >} > >/***********************************************************************************************************************/ > >void ReadElement(char* Daten,char* Name,char* Dest) >{ > unsigned long quelle,ziel; > int code,CodeTeil1,CodeTeil2; > char StringName[80]; > char *Temp; > unsigned long pos; > > strcpy(StringName,Name); > strcat(StringName,"="); > Temp=strstr(Daten,StringName); > if (Temp==NULL) return; > pos=strcspn(Temp+strlen(StringName),"&"); > strncpy(Dest,Temp+strlen(StringName),pos); > Dest[pos]='\0'; > > for(quelle=0,ziel=0;Dest[quelle]!='\0';++quelle,++ziel)?{ > switch (Dest[quelle]) { >? case '+': Dest[ziel]=' '; >? break; >? case '%': if (strncmp(Dest+quelle,"%0D%0A",6)==0){ > Dest[ziel]='\n'; >????? quelle+=5; >?????} >?????else{ >????? CodeTeil1=toupper(Dest[quelle+1]); >????? CodeTeil2=toupper(Dest[quelle+2]); >????? code=(CodeTeil1>='A'?(CodeTeil1-'A')+10:(CodeTeil1-'0')); >????? code*=16; >????? code+=(CodeTeil2>='A'?(CodeTeil2-'A')+10:(CodeTeil2-'0')); >????? if ((code<32)||(code>255)) code=32; >????? Dest[ziel]=(char)code; >????? quelle+=2; >?????}; >?????break; >? default: Dest[ziel]=Dest[quelle]; >?} > } > Dest[ziel]='\0'; >} > >/***********************************************************************************************************************/ > >void ElementToHTMLFile(char*Daten,FILE*Datei,int linkfilter,int quote,unsigned long int umbruch) >{ > unsigned long int quelle,linkadd,umbr=0; > int space=1,link=0; > > for(quelle=0;Daten[quelle];++quelle) >?{ > if (umbr<umbruch) umbr++; >? switch (Daten[quelle]) >? { >??case '\n':if (quote==1) fprintf(Datei,"\n>"); >????? else fprintf(Datei,"<BR>\n"); > umbr=0; >????? space=1; >????? break; >??case 'ü': fprintf(Datei,"ü");space=0;break; >??case 'Ü': fprintf(Datei,"Ü");space=0;break; >??case 'ö': fprintf(Datei,"ö");space=0;break; >??case 'Ö': fprintf(Datei,"Ö");space=0;break; >??case 'ä': fprintf(Datei,"ä");space=0;break; >??case 'Ä': fprintf(Datei,"Ä");space=0;break; >??case 'ß': fprintf(Datei,"ß");space=0;break; >??case '"': fprintf(Datei,""");space=0;break; >??case '<': fprintf(Datei,"<");space=0;break; >??case '>': fprintf(Datei,">");space=0; > if (umbr==1) umbr=0; >????? break; >??case ' ': if (link==1) >????? { >??????fprintf(Datei,"</A>] "); >??????link=0; >????? } >????? else >????? { >??????if ((space==0)||(quote==1)) /*falls noch kein " " vorher oder quotemodus*/ >?????? { > if ((umbr<umbruch)||(umbruch==0)) > { > space=1; > fprintf(Datei," "); > } > else > { > fprintf(Datei,"\n>"); > umbr=0; > } >?????? } >??????else fprintf(Datei," "); >????? } >????? break; >??case ']': if (link==1) fprintf(Datei,"</A>]"); >????? else fprintf(Datei,"]"); >????? link=0; >????? space=0; >????? break; >??case '[': if (link==1) fprintf(Datei,"</A>]"); >????? if ((linkfilter==1)&&((strncmp(Daten+quelle,"[http://",8)==0)||(strncmp(Daten+quelle,"[ftp://",7)==0)||(strncmp(Daten+quelle,"[www",4)==0))) >??????{ >?????? fprintf(Datei,"[<A HREF=\""); > if (strncmp(Daten+quelle,"[www",4)==0) fprintf(Datei,"http://"); /*falschen link berichtigen*/ >?????? for(linkadd=1;(Daten[quelle+linkadd]!='\0')&&(Daten[quelle+linkadd]!=']')&&(Daten[quelle+linkadd]!='[')&&(Daten[quelle+linkadd]!=' ');++linkadd) >???????{ >??????? if ((Daten[quelle+linkadd]!='>')&&(Daten[quelle+linkadd]!='<')&&(Daten[quelle+linkadd]!='"')&&(Daten[quelle+linkadd]!='\n')) fprintf(Datei,"%c",Daten[quelle+linkadd]); >???????} >?????? fprintf(Datei,"\" TARGET=\"_blank\" class=tlink>"); >?????? link=1; >??????} >????? else fprintf(Datei,"["); >????? space=0; >????? break; >?? default: if ((unsigned char)Daten[quelle]>128)?fprintf(Datei,"&#%03i;",(unsigned char)Daten[quelle]); >????? else fprintf(Datei,"%c",Daten[quelle]); >????? space=0; >? } > } > if (link==1) fprintf(Datei,"</A>]"); /*zur sicherheit falls der link am ende steht*/ >} > >/***********************************************************************************************************************/ > >void ElementToHTML(char*Daten) >{ > unsigned long int quelle; > int space=1; > > for(quelle=0;Daten[quelle];++quelle) >?{ >? switch (Daten[quelle]) >? { >??case '\n':printf("<BR>\n");space=1;break; >??case 'ü': printf("ü");space=0;break; >??case 'Ü': printf("Ü");space=0;break; >??case 'ö': printf("ö");space=0;break; >??case 'Ö': printf("Ö");space=0;break; >??case 'ä': printf("ä");space=0;break; >??case 'Ä': printf("Ä");space=0;break; >??case 'ß': printf("ß");space=0;break; >??case '"': printf(""");space=0;break; >??case '<': printf("<");space=0;break; >??case '>': printf(">");space=0;break; >??case ' ': if (space==0) >?????? { > space=1; > printf(" "); > } > else printf(" "); >????? break; >?? default: if ((unsigned char)Daten[quelle]>128)?printf("&#%03i;",(unsigned char)Daten[quelle]); >????? else printf("%c",Daten[quelle]); >????? space=0; >? } > } >}
mailbenachrichtigung?