| Thema: |
|
||
| Autor: | Transistor | ||
| Datum: | 04.12.24 19:11 | ||
| Antwort auf: | Re:Erinnerungen - unvollständig von Transistor | ||
#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; ? } } } |
|||
| < antworten > | |||