/* static char Copyright[] = "Copyright Yngvi Sigurjonsson (yngvi@hafro.is), 1993"; */ #include #include #include #include #include #include #include #include "ldt.h" #include "windows.h" #define ToUpper(c) toupper(c) #define ToLower(c) tolower(c) /* Funny to divide them between user and kernel. */ /* KERNEL.89 */ SEGPTR lstrcat( SEGPTR target, SEGPTR source ) { strcat( (char *)PTR_SEG_TO_LIN(target), (char *)PTR_SEG_TO_LIN(source) ); return target; } /* USER.430 */ INT lstrcmp(LPCSTR str1,LPCSTR str2) { return strcmp(str1,str2); } /* USER.471 */ INT lstrcmpi(LPCSTR str1,LPCSTR str2) { int i; i=0; while((toupper(str1[i])==toupper(str2[i]))&&(str1[i]!=0)) i++; return toupper(str1[i])-toupper(str2[i]); } /* KERNEL.88 */ SEGPTR lstrcpy( SEGPTR target, SEGPTR source ) { strcpy( (char *)PTR_SEG_TO_LIN(target), (char *)PTR_SEG_TO_LIN(source) ); return target; } /* KERNEL.353 */ SEGPTR lstrcpyn( SEGPTR target, SEGPTR source, WORD n ) { strncpy((char *)PTR_SEG_TO_LIN(target), (char *)PTR_SEG_TO_LIN(source), n); return target; } /* KERNEL.90 */ INT lstrlen(LPCSTR str) { return strlen(str); } /* IsCharAlpha USER 433 */ BOOL IsCharAlpha(char ch) { return isalpha(ch); /* This is probably not right for NLS */ } /* IsCharAlphanumeric USER 434 */ BOOL IsCharAlphanumeric(char ch) { return (ch<'0')?0:(ch<'9'); } /* IsCharUpper USER 435 */ BOOL IsCharUpper(char ch) { return isupper(ch); } /* IsCharLower USER 436 */ BOOL IsCharLower(char ch) { return islower(ch); } /*********************************************************************** * AnsiUpper (USER.431) */ /* 16-bit version */ SEGPTR WIN16_AnsiUpper( SEGPTR strOrChar ) { /* I am not sure if the locale stuff works with toupper, but then again I am not sure if the Linux libc locale stuffs works at all */ /* uppercase only one char if strOrChar < 0x10000 */ if (HIWORD(strOrChar)) { char *s = PTR_SEG_TO_LIN(strOrChar); while (*s) *s++ = ToUpper( *s ); return strOrChar; } else return (SEGPTR)ToUpper( (int)strOrChar ); } /* 32-bit version */ LPSTR AnsiUpper(LPSTR strOrChar) { char *s = strOrChar; /* I am not sure if the locale stuff works with toupper, but then again I am not sure if the Linux libc locale stuffs works at all */ while (*s) *s++ = ToUpper( *s ); return strOrChar; } /*********************************************************************** * AnsiUpperBuff (USER.437) */ UINT AnsiUpperBuff(LPSTR str,UINT len) { int i; len=(len==0)?65536:len; for(i=0;i