1 static char Copyright
[] = "Copyright Yngvi Sigurjonsson (yngvi@hafro.is), 1993";
10 #include "prototypes.h"
15 /* Funny to divide them between user and kernel. */
18 LPSTR
lstrcat(LPSTR target
,LPCSTR source
)
20 fprintf(stderr
,"lstrcat(%s,%s)\n",target
,source
);
21 return strcat(target
,source
);
25 int lstrcmp(LPCSTR str1
,LPCSTR str2
)
27 return strcmp(str1
,str2
);
31 int lstrcmpi(LPCSTR str1
,LPCSTR str2
)
35 while((toupper(str1
[i
])==toupper(str2
[i
]))&&(str1
[i
]!=0))
37 return toupper(str1
[i
])-toupper(str2
[i
]);
41 LPSTR
lstrcpy(LPSTR target
,LPCSTR source
)
43 return strcpy(target
,source
);
47 LPSTR
lstrcpyn(LPSTR target
,LPCSTR source
,int n
)
49 return strncpy(target
,source
,n
);
53 int lstrlen(LPCSTR str
)
58 /* AnsiUpper USER.431 */
59 char FAR
* AnsiUpper(char FAR
* strOrChar
)
61 /* I am not sure if the locale stuff works with toupper, but then again
62 I am not sure if the Linux libc locale stuffs works at all */
63 if((int)strOrChar
<256)
64 return (char FAR
*) toupper((int)strOrChar
);
67 for(i
=0;(i
<65536)&&strOrChar
[i
];i
++)
68 strOrChar
[i
]=toupper(strOrChar
[i
]);
73 /* AnsiLower USER.432 */
74 char FAR
* AnsiLower(char FAR
* strOrChar
)
76 /* I am not sure if the locale stuff works with tolower, but then again
77 I am not sure if the Linux libc locale stuffs works at all */
78 if((int)strOrChar
<256)
79 return (char FAR
*)tolower((int)strOrChar
);
82 for(i
=0;(i
<65536)&&strOrChar
[i
];i
++)
83 strOrChar
[i
]=tolower(strOrChar
[i
]);
88 /* AnsiUpperBuff USER.437 */
89 UINT
AnsiUpperBuff(LPSTR str
,UINT len
)
92 len
=(len
==0)?65536:len
;
95 str
[i
]=toupper(str
[i
]);
99 /* AnsiLowerBuff USER.438 */
100 UINT
AnsiLowerBuff(LPSTR str
,UINT len
)
103 len
=(len
==0)?65536:len
;
107 str
[i
]=tolower(str
[i
]);
112 /* AnsiNext USER.472 */
113 LPSTR
AnsiNext(LPSTR current
)
115 return (*current
)?current
+1:current
;
118 /* AnsiPrev USER.473 */
119 char FAR
* AnsiPrev(/*const*/ char FAR
* start
,char FAR
* current
)
121 return (current
==start
)?start
:current
-1;
124 /* IsCharAlpha USER 433 */
125 BOOL
IsCharAlpha(char ch
)
127 return isalpha(ch
); /* This is probably not right for NLS */
129 /* IsCharAlphanumeric USER 434 */
130 BOOL
IsCharAlphanumeric(char ch
)
132 return (ch
<'0')?0:(ch
<'9');
135 /* IsCharUpper USER 435 */
136 BOOL
IsCharUpper(char ch
)
141 /* IsCharUpper USER 436 */
142 BOOL
IsCharLower(char ch
)
147 static char Oem2Ansi
[256];
148 static char Ansi2Oem
[256];
150 void InitOemAnsiTranslations()
152 static int inited
=0; /* should called called in some init function*/
155 if(transfile
=open("oem2ansi.trl",O_RDONLY
)){
156 read(transfile
,Oem2Ansi
,256);
159 else { /* sets up passive translations if it does not find the file */
160 for(i
=0;i
<256;i
++) /* Needs some fixing */
163 if(transfile
=open("ansi2oem.trl",O_RDONLY
)){
164 read(transfile
,Ansi2Oem
,256);
167 else { /* sets up passive translations if it does not find the file */
168 for(i
=0;i
<256;i
++) /* Needs some fixing */
174 /* AnsiToOem Keyboard.5 */
175 int AnsiToOem(LPSTR lpAnsiStr
, LPSTR lpOemStr
) /* why is this int ??? */
177 InitOemAnsiTranslations(); /* should called called in some init function*/
179 *lpOemStr
++=Ansi2Oem
[*lpAnsiStr
++];
184 /* OemToAnsi Keyboard.6 */
185 BOOL
OemToAnsi(LPSTR lpOemStr
, LPSTR lpAnsiStr
) /* why is this BOOL ???? */
187 InitOemAnsiTranslations(); /* should called called in some init function*/
189 *lpAnsiStr
++=Oem2Ansi
[*lpOemStr
++];
194 /* AnsiToOemBuff Keyboard.134 */
195 void AnsiToOemBuff(LPSTR lpAnsiStr
, LPSTR lpOemStr
, int nLength
)
198 InitOemAnsiTranslations(); /* should called called in some init function*/
199 for(i
=0;i
<nLength
;i
++)
200 lpOemStr
[i
]=Ansi2Oem
[lpAnsiStr
[i
]];
203 /* OemToAnsi Keyboard.135 */
204 void OemToAnsiBuff(LPSTR lpOemStr
, LPSTR lpAnsiStr
, int nLength
)
207 InitOemAnsiTranslations(); /* should called called in some init function*/
208 for(i
=0;i
<nLength
;i
++)
209 lpAnsiStr
[i
]=Oem2Ansi
[lpOemStr
[i
]];