char upcase(char letter) { switch(letter) { case '':return ''; /* ASCII 129 nach 154 */ case '':return ''; /* ASCII 130 nach 144 */ case '':return 'A'; /* ASCII 131 nach 65 */ case '':return ''; /* ASCII 132 nach 142 */ case '':return 'A'; /* ASCII 133 nach 65 */ case '':return ''; /* ASCII 134 nach 143 */ case '':return ''; /* ASCII 135 nach 128 */ case '':return 'E'; /* ASCII 136 nach 69 */ case '':return 'E'; /* ASCII 137 nach 69 */ case '':return 'E'; /* ASCII 138 nach 69 */ case '':return 'I'; /* ASCII 139 nach 73 */ case '':return 'I'; /* ASCII 140 nach 73 */ case '':return 'I'; /* ASCII 141 nach 73 */ case '':return ''; /* ASCII 145 nach 146 */ case '':return 'O'; /* ASCII 147 nach 79 */ case '':return ''; /* ASCII 148 nach 153 */ case '':return 'O'; /* ASCII 149 nach 153 */ case '':return 'U'; /* ASCII 150 nach 85 */ case '':return 'U'; /* ASCII 151 nach 85 */ case '':return 'Y'; /* ASCII 152 nach 89 */ case '':return 'A'; /* ASCII 160 nach 65 */ case '':return 'I'; /* ASCII 161 nach 73 */ case '':return 'O'; /* ASCII 162 nach 79 */ case '':return 'U'; /* ASCII 163 nach 85 */ case '':return ''; /* ASCII 164 nach 165 */ default: if(letter>='a' && letter<='z') return letter-('a'-'A'); return letter; } } char dncase(char letter) { switch(letter) { case '':return ''; case '':return ''; case '':return ''; default: if(letter>='A' && letter<='Z') return letter+('a'-'A'); return letter; } } void upstring(char *s) { for(;*s!=0; s++) *s=upcase(*s); } void dnstring(char *s) { for(;*s!=0; s++) *s=dncase(*s); } void num2str(dword num, char *str, byte letters) { byte i; char ch; str[letters]=0; for(i=0; i>8)) dword str2crc(const char *s) { dword crc=0xffffffff; while(*s!=0) crc=UPDC32(*(s++), crc); return crc^0xffffffff; } dword str2icrc(const char *s) { dword crc=0xffffffff; while(*s!=0) crc=UPDC32(dncase(*(s++)), crc); return crc^0xffffffff; } byte checkjoker(const char *mask, const char *filename, bool casei) { while(TRUE) { switch(*mask) { case '?': if(*filename==0) return FALSE; mask++; filename++; break; case '*': mask++; if(*mask==0) return TRUE; while(*filename!=0) { if(checkjoker(mask, filename, casei)) return TRUE; filename++; } return FALSE; default: if(casei) { if(upcase(*mask)!=upcase(*filename)) return FALSE; } else { if(*mask!=*filename) return FALSE; } if(*mask==0) return TRUE; mask++; filename++; break; } } } void stripendingblanks(char *s) { char *tptr; if(s[0]==0) return; tptr=s+strlen(s)-1; while((*tptr==' ' || *tptr=='\t') && tptr>=s) { *tptr=0; tptr--; } } void memsetw(void *s, word c, size_t n) { #ifdef __TURBOC__ asm mov bx, di asm les di, s asm mov ax, c asm mov cx, n asm cld asm rep stosw asm mov di, bx #else word *p; p=(word *)s; while((n--)!=0) *(p++)=c; #endif } void memcpyw(void *dest, const void *src, size_t n) { #ifdef __TURBOC__ asm push ds asm push si asm push di asm lds si, src asm les di, dest asm mov cx, n asm cld asm rep movsw asm pop di asm pop si asm pop ds #else memcpy(dest, src, n*2); #endif } int readconfigline(FILE *infile, char *line1, char *line2, word maxlen) { char tempstr[1000], *tptr, *tptr2; line1[0]=line2[0]=0; schleife: if(fgets(tempstr, 900, infile)==NULL) return 1; tptr=strchr(tempstr, '\n'); if(tptr!=NULL) *tptr=0; tptr=strchr(tempstr, '\r'); if(tptr!=NULL) *tptr=0; tptr=tempstr; while(*tptr==' ' || *tptr=='\t') tptr++; if(*tptr==0 || *tptr==';' || *tptr=='#') goto schleife; tptr2=tptr; while(*tptr2!=0 && *tptr2!='=' && *tptr2!=':') tptr2++; if(*tptr2==0) return 2; *(tptr2++)=0; while(*tptr2==' ' || *tptr2=='\t') tptr2++; strmaxcpy(line1, tptr, maxlen); strmaxcpy(line2, tptr2, maxlen); tptr=line1+strlen(line1); while(tptr>line1 && (*(tptr-1)==' ' || *(tptr-1)=='\t')) tptr--; *tptr=0; tptr=line2+strlen(line2); while(tptr>line2 && (*(tptr-1)==' ' || *(tptr-1)=='\t')) tptr--; *tptr=0; return 0; } bool filecopy(FILE *file, FILE *target, dword size) { dword buffersize, bytestocopy, bytestocopy2; long int bytesread; void *buffer; buffersize=64000l; if((buffer=malloc(buffersize))==NULL) return TRUE; bytestocopy=size; while(bytestocopy!=0) { bytestocopy2=bytestocopy>buffersize?buffersize:bytestocopy; bytesread=fread(buffer, 1, bytestocopy2, file); fwrite(buffer, 1, bytesread, target); bytestocopy-=bytesread; } free(buffer); return FALSE; } bool filecopy(int file, int target, dword size) { dword buffersize, bytestocopy, bytestocopy2; long int bytesread; void *buffer; buffersize=64000l; if((buffer=malloc(buffersize))==NULL) return TRUE; bytestocopy=size; while(bytestocopy!=0) { bytestocopy2=bytestocopy>buffersize?buffersize:bytestocopy; bytesread=read(file, buffer, bytestocopy2); if(bytesread<0) { free(buffer); return TRUE; } if(write(target, buffer, bytesread)!=bytesread) { free(buffer); return TRUE; } bytestocopy-=bytesread; } free(buffer); return FALSE; } byte decodehex(char hex) { if(isdigit(hex)) return hex-'0'; return tolower(hex)-'a'+10; } byte decodehex(char hex1, char hex2) { return (decodehex(hex1)<<4)|decodehex(hex2); }