#include "../commonheaders.h" #include "gpgw.h" // escape sequence type struct escapesequence { char *sequence; char *code; }; // supported escape sequences struct escapesequence escsequence[]= { {"\\n", "\n"}, {"\\r", "\r"}, {"\\t", "\t"} }; // number of supported escape sequences int escsequencecount=sizeof(escsequence)/sizeof(struct escapesequence); void replace(char *atext, const char *apattern, const char *areplacement) { char *pos, *last; long textsize; long patternsize; long replacementsize; pos=atext; patternsize = (long)strlen(apattern); replacementsize = (long)strlen(areplacement); do { // textstelle suchen last=pos; pos=strstr(pos, apattern); // etwas gefunden? if(pos==NULL) break; // laenge des textes ermitteln textsize = (long)strlen(last); // platz schaffen memmove(pos+replacementsize, pos+patternsize, textsize-((pos-last)+patternsize)+1); // ersetzen strncpy(pos, areplacement, replacementsize); pos+=replacementsize; } while(pos!=NULL); } char *getNextPart(char *aresult, char *atext, const char *aseparator) { char *pos; strcpy(aresult, ""); pos=strstr(atext, aseparator); if(pos!=NULL) { strncat(aresult, atext, pos-atext); pos+=strlen(aseparator); } else strcpy(aresult, atext); return pos; } void getLastPart(char *aresult, char *atext) { strcpy(aresult, atext); } void appendText(char **abuffer, const char *atext, int atextsize) { size_t size; if (*abuffer==NULL) size=0; else size = strlen(*abuffer); size++; // abschliessende 0 if(atextsize==0) atextsize = (int)strlen(atext); size+=atextsize; *abuffer=(char *)realloc(*abuffer, size); strncat(*abuffer, atext, atextsize); } BOOL existsFile(const char *afilename) { int attr; if(strlen(afilename)==0) return FALSE; attr = GetFileAttributes(afilename); return ( (attr!=-1) && ((attr&FILE_ATTRIBUTE_DIRECTORY)==0)); } BOOL existsPath(const char *apathname) { int attr; if(strlen(apathname)==0) return FALSE; attr = GetFileAttributes(apathname); return ( (attr!=-1) && (attr&FILE_ATTRIBUTE_DIRECTORY) ); } BOOL writeToFile(char *afilename, const char *atext) { FILE *handle; size_t written; size_t length; getTemporaryFileName(afilename); handle=fopen(afilename, "wb"); if(handle==NULL) { LogMessage("--- ", "write to file", "\n"); LogMessage("filename:\n", afilename, "\n"); return FALSE; } length=strlen(atext); written=fwrite(atext, sizeof(char), length, handle); if(written!=length) return FALSE; fclose(handle); return TRUE; } BOOL readFromFile(char *aresult, const char *afilename) { FILE *handle; size_t filesize; size_t read; handle=fopen(afilename, "rb"); if(handle==NULL) { LogMessage("--- ", "read from file", "\n"); LogMessage("filename:\n", afilename, "\n"); return FALSE; } fseek(handle, 0, SEEK_END); filesize=ftell(handle); fseek(handle, 0, SEEK_SET); read=fread(aresult, sizeof(char), filesize, handle); if(read!=filesize) return FALSE; fclose(handle); return TRUE; } void getTemporaryFileName(char *aresult) { GetTempFileName(temporarydirectory,"gpg",0,aresult); } void quoteEscapeSequences(char *atext) { int i; for(i=0; i