1 static char Copyright
[] = "Copyright Yngvi Sigurjonsson (yngvi@hafro.is), 1993";
11 #include "prototypes.h"
16 /* Funny to divide them between user and kernel. */
19 LPSTR
lstrcat(LPSTR target
,LPCSTR source
)
22 fprintf(stderr
,"lstrcat(%s,%s)\n",target
,source
);
24 return strcat(target
,source
);
28 INT
lstrcmp(LPCSTR str1
,LPCSTR str2
)
30 return strcmp(str1
,str2
);
34 INT
lstrcmpi(LPCSTR str1
,LPCSTR str2
)
38 while((toupper(str1
[i
])==toupper(str2
[i
]))&&(str1
[i
]!=0))
40 return toupper(str1
[i
])-toupper(str2
[i
]);
44 LPSTR
lstrcpy(LPSTR target
,LPCSTR source
)
46 return strcpy(target
,source
);
50 LPSTR
lstrcpyn(LPSTR target
,LPCSTR source
,int n
)
52 return strncpy(target
,source
,n
);
56 INT
lstrlen(LPCSTR str
)
61 /* AnsiUpper USER.431 */
62 char FAR
* AnsiUpper(char FAR
* strOrChar
)
64 /* I am not sure if the locale stuff works with toupper, but then again
65 I am not sure if the Linux libc locale stuffs works at all */
66 if((int)strOrChar
<256)
67 return (char FAR
*) toupper((int)strOrChar
);
70 for(i
=0;(i
<65536)&&strOrChar
[i
];i
++)
71 strOrChar
[i
]=toupper(strOrChar
[i
]);
76 /* AnsiLower USER.432 */
77 char FAR
* AnsiLower(char FAR
* strOrChar
)
79 /* I am not sure if the locale stuff works with tolower, but then again
80 I am not sure if the Linux libc locale stuffs works at all */
81 if((int)strOrChar
<256)
82 return (char FAR
*)tolower((int)strOrChar
);
85 for(i
=0;(i
<65536)&&strOrChar
[i
];i
++)
86 strOrChar
[i
]=tolower(strOrChar
[i
]);
91 /* AnsiUpperBuff USER.437 */
92 UINT
AnsiUpperBuff(LPSTR str
,UINT len
)
95 len
=(len
==0)?65536:len
;
98 str
[i
]=toupper(str
[i
]);
102 /* AnsiLowerBuff USER.438 */
103 UINT
AnsiLowerBuff(LPSTR str
,UINT len
)
106 len
=(len
==0)?65536:len
;
110 str
[i
]=tolower(str
[i
]);
115 /* AnsiNext USER.472 */
116 LPSTR
AnsiNext(LPSTR current
)
118 return (*current
)?current
+1:current
;
121 /* AnsiPrev USER.473 */
122 char FAR
* AnsiPrev(/*const*/ char FAR
* start
,char FAR
* current
)
124 return (current
==start
)?start
:current
-1;
127 /* IsCharAlpha USER 433 */
128 BOOL
IsCharAlpha(char ch
)
130 return isalpha(ch
); /* This is probably not right for NLS */
132 /* IsCharAlphanumeric USER 434 */
133 BOOL
IsCharAlphanumeric(char ch
)
135 return (ch
<'0')?0:(ch
<'9');
138 /* IsCharUpper USER 435 */
139 BOOL
IsCharUpper(char ch
)
144 /* IsCharUpper USER 436 */
145 BOOL
IsCharLower(char ch
)
150 static char Oem2Ansi
[256];
151 static char Ansi2Oem
[256];
153 void InitOemAnsiTranslations(void)
155 static int inited
=0; /* should called called in some init function*/
158 if(transfile
=open("oem2ansi.trl",O_RDONLY
)){
159 read(transfile
,Oem2Ansi
,256);
162 else { /* sets up passive translations if it does not find the file */
163 for(i
=0;i
<256;i
++) /* Needs some fixing */
166 if(transfile
=open("ansi2oem.trl",O_RDONLY
)){
167 read(transfile
,Ansi2Oem
,256);
170 else { /* sets up passive translations if it does not find the file */
171 for(i
=0;i
<256;i
++) /* Needs some fixing */
177 /* AnsiToOem Keyboard.5 */
178 INT
AnsiToOem(LPSTR lpAnsiStr
, LPSTR lpOemStr
) /* why is this int ??? */
180 InitOemAnsiTranslations(); /* should called called in some init function*/
182 *lpOemStr
++=Ansi2Oem
[*lpAnsiStr
++];
187 /* OemToAnsi Keyboard.6 */
188 BOOL
OemToAnsi(LPSTR lpOemStr
, LPSTR lpAnsiStr
) /* why is this BOOL ???? */
190 InitOemAnsiTranslations(); /* should called called in some init function*/
192 *lpAnsiStr
++=Oem2Ansi
[*lpOemStr
++];
197 /* AnsiToOemBuff Keyboard.134 */
198 void AnsiToOemBuff(LPSTR lpAnsiStr
, LPSTR lpOemStr
, INT nLength
)
201 InitOemAnsiTranslations(); /* should called called in some init function*/
202 for(i
=0;i
<nLength
;i
++)
203 lpOemStr
[i
]=Ansi2Oem
[lpAnsiStr
[i
]];
206 /* OemToAnsi Keyboard.135 */
207 void OemToAnsiBuff(LPSTR lpOemStr
, LPSTR lpAnsiStr
, INT nLength
)
210 InitOemAnsiTranslations(); /* should called called in some init function*/
211 for(i
=0;i
<nLength
;i
++)
212 lpAnsiStr
[i
]=Oem2Ansi
[lpOemStr
[i
]];