Changeset 3694 for trunk/src


Ignore:
Timestamp:
Jun 12, 2000, 4:59:38 PM (25 years ago)
Author:
phaller
Message:

.

Location:
trunk/src/kernel32
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/KERNEL32.CPP

    r3690 r3694  
    1 /* $Id: KERNEL32.CPP,v 1.45 2000-06-12 12:20:04 phaller Exp $ */
     1/* $Id: KERNEL32.CPP,v 1.46 2000-06-12 14:59:38 phaller Exp $ */
    22
    33/*
     
    2929#include <stdlib.h>
    3030#include <string.h>
     31#include <ctype.h>
    3132
    3233#include "misc.h"
     
    183184//******************************************************************************
    184185//******************************************************************************
    185 BOOL WIN32API GetStringTypeW(DWORD fdwInfoType, LPCWSTR lpSrcStr, int cchSrc, LPWORD lpCharType)
    186 {
    187  int i;
     186
     187static const unsigned char CT_CType2_LUT[] = {
     188  C2_NOTAPPLICABLE, /*   -   0 */
     189  C2_NOTAPPLICABLE, /*   -   1 */
     190  C2_NOTAPPLICABLE, /*   -   2 */
     191  C2_NOTAPPLICABLE, /*   -   3 */
     192  C2_NOTAPPLICABLE, /*   -   4 */
     193  C2_NOTAPPLICABLE, /*   -   5 */
     194  C2_NOTAPPLICABLE, /*   -   6 */
     195  C2_NOTAPPLICABLE, /*   -   7 */
     196  C2_NOTAPPLICABLE, /*   -   8 */
     197  C2_SEGMENTSEPARATOR, /*   -   9 */
     198  C2_NOTAPPLICABLE, /*   -  10 */
     199  C2_NOTAPPLICABLE, /*   -  11 */
     200  C2_NOTAPPLICABLE, /*   -  12 */
     201  C2_NOTAPPLICABLE, /*   -  13 */
     202  C2_NOTAPPLICABLE, /*   -  14 */
     203  C2_NOTAPPLICABLE, /*   -  15 */
     204  C2_NOTAPPLICABLE, /*   -  16 */
     205  C2_NOTAPPLICABLE, /*   -  17 */
     206  C2_NOTAPPLICABLE, /*   -  18 */
     207  C2_NOTAPPLICABLE, /*   -  19 */
     208  C2_NOTAPPLICABLE, /*   -  20 */
     209  C2_NOTAPPLICABLE, /*   -  21 */
     210  C2_NOTAPPLICABLE, /*   -  22 */
     211  C2_NOTAPPLICABLE, /*   -  23 */
     212  C2_NOTAPPLICABLE, /*   -  24 */
     213  C2_NOTAPPLICABLE, /*   -  25 */
     214  C2_NOTAPPLICABLE, /*   -  26 */
     215  C2_NOTAPPLICABLE, /*   -  27 */
     216  C2_NOTAPPLICABLE, /*   -  28 */
     217  C2_NOTAPPLICABLE, /*   -  29 */
     218  C2_NOTAPPLICABLE, /*   -  30 */
     219  C2_NOTAPPLICABLE, /*   -  31 */
     220  C2_WHITESPACE, /*   -  32 */
     221  C2_OTHERNEUTRAL, /* ! -  33 */
     222  C2_OTHERNEUTRAL, /* " -  34 */ /* " */
     223  C2_EUROPETERMINATOR, /* # -  35 */
     224  C2_EUROPETERMINATOR, /* $ -  36 */
     225  C2_EUROPETERMINATOR, /* % -  37 */
     226  C2_LEFTTORIGHT, /* & -  38 */
     227  C2_OTHERNEUTRAL, /* ' -  39 */
     228  C2_OTHERNEUTRAL, /* ( -  40 */
     229  C2_OTHERNEUTRAL, /* ) -  41 */
     230  C2_OTHERNEUTRAL, /* * -  42 */
     231  C2_EUROPETERMINATOR, /* + -  43 */
     232  C2_COMMONSEPARATOR, /* , -  44 */
     233  C2_EUROPETERMINATOR, /* - -  45 */
     234  C2_EUROPESEPARATOR, /* . -  46 */
     235  C2_EUROPESEPARATOR, /* / -  47 */
     236  C2_EUROPENUMBER, /* 0 -  48 */
     237  C2_EUROPENUMBER, /* 1 -  49 */
     238  C2_EUROPENUMBER, /* 2 -  50 */
     239  C2_EUROPENUMBER, /* 3 -  51 */
     240  C2_EUROPENUMBER, /* 4 -  52 */
     241  C2_EUROPENUMBER, /* 5 -  53 */
     242  C2_EUROPENUMBER, /* 6 -  54 */
     243  C2_EUROPENUMBER, /* 7 -  55 */
     244  C2_EUROPENUMBER, /* 8 -  56 */
     245  C2_EUROPENUMBER, /* 9 -  57 */
     246  C2_COMMONSEPARATOR, /* : -  58 */
     247  C2_OTHERNEUTRAL, /* ; -  59 */
     248  C2_OTHERNEUTRAL, /* < -  60 */
     249  C2_OTHERNEUTRAL, /* = -  61 */
     250  C2_OTHERNEUTRAL, /* > -  62 */
     251  C2_OTHERNEUTRAL, /* ? -  63 */
     252  C2_LEFTTORIGHT, /* @ -  64 */
     253  C2_LEFTTORIGHT, /* A -  65 */
     254  C2_LEFTTORIGHT, /* B -  66 */
     255  C2_LEFTTORIGHT, /* C -  67 */
     256  C2_LEFTTORIGHT, /* D -  68 */
     257  C2_LEFTTORIGHT, /* E -  69 */
     258  C2_LEFTTORIGHT, /* F -  70 */
     259  C2_LEFTTORIGHT, /* G -  71 */
     260  C2_LEFTTORIGHT, /* H -  72 */
     261  C2_LEFTTORIGHT, /* I -  73 */
     262  C2_LEFTTORIGHT, /* J -  74 */
     263  C2_LEFTTORIGHT, /* K -  75 */
     264  C2_LEFTTORIGHT, /* L -  76 */
     265  C2_LEFTTORIGHT, /* M -  77 */
     266  C2_LEFTTORIGHT, /* N -  78 */
     267  C2_LEFTTORIGHT, /* O -  79 */
     268  C2_LEFTTORIGHT, /* P -  80 */
     269  C2_LEFTTORIGHT, /* Q -  81 */
     270  C2_LEFTTORIGHT, /* R -  82 */
     271  C2_LEFTTORIGHT, /* S -  83 */
     272  C2_LEFTTORIGHT, /* T -  84 */
     273  C2_LEFTTORIGHT, /* U -  85 */
     274  C2_LEFTTORIGHT, /* V -  86 */
     275  C2_LEFTTORIGHT, /* W -  87 */
     276  C2_LEFTTORIGHT, /* X -  88 */
     277  C2_LEFTTORIGHT, /* Y -  89 */
     278  C2_LEFTTORIGHT, /* Z -  90 */
     279  C2_OTHERNEUTRAL, /* [ -  91 */
     280  C2_OTHERNEUTRAL, /* \ -  92 */
     281  C2_OTHERNEUTRAL, /* ] -  93 */
     282  C2_OTHERNEUTRAL, /* ^ -  94 */
     283  C2_OTHERNEUTRAL, /* _ -  95 */
     284  C2_OTHERNEUTRAL, /* ` -  96 */
     285  C2_LEFTTORIGHT, /* a -  97 */
     286  C2_LEFTTORIGHT, /* b -  98 */
     287  C2_LEFTTORIGHT, /* c -  99 */
     288  C2_LEFTTORIGHT, /* d - 100 */
     289  C2_LEFTTORIGHT, /* e - 101 */
     290  C2_LEFTTORIGHT, /* f - 102 */
     291  C2_LEFTTORIGHT, /* g - 103 */
     292  C2_LEFTTORIGHT, /* h - 104 */
     293  C2_LEFTTORIGHT, /* i - 105 */
     294  C2_LEFTTORIGHT, /* j - 106 */
     295  C2_LEFTTORIGHT, /* k - 107 */
     296  C2_LEFTTORIGHT, /* l - 108 */
     297  C2_LEFTTORIGHT, /* m - 109 */
     298  C2_LEFTTORIGHT, /* n - 110 */
     299  C2_LEFTTORIGHT, /* o - 111 */
     300  C2_LEFTTORIGHT, /* p - 112 */
     301  C2_LEFTTORIGHT, /* q - 113 */
     302  C2_LEFTTORIGHT, /* r - 114 */
     303  C2_LEFTTORIGHT, /* s - 115 */
     304  C2_LEFTTORIGHT, /* t - 116 */
     305  C2_LEFTTORIGHT, /* u - 117 */
     306  C2_LEFTTORIGHT, /* v - 118 */
     307  C2_LEFTTORIGHT, /* w - 119 */
     308  C2_LEFTTORIGHT, /* x - 120 */
     309  C2_LEFTTORIGHT, /* y - 121 */
     310  C2_LEFTTORIGHT, /* z - 122 */
     311  C2_OTHERNEUTRAL, /* { - 123 */
     312  C2_OTHERNEUTRAL, /* | - 124 */
     313  C2_OTHERNEUTRAL, /* } - 125 */
     314  C2_OTHERNEUTRAL, /* ~ - 126 */
     315  C2_NOTAPPLICABLE, /*  - 127 */
     316  C2_NOTAPPLICABLE, /* € - 128 */
     317  C2_NOTAPPLICABLE, /*  - 129 */
     318  C2_OTHERNEUTRAL, /* ‚ - 130 */
     319  C2_LEFTTORIGHT, /* ƒ - 131 */
     320  C2_OTHERNEUTRAL, /* „ - 132 */
     321  C2_OTHERNEUTRAL, /*
     322 - 133 */
     323  C2_OTHERNEUTRAL, /* † - 134 */
     324  C2_OTHERNEUTRAL, /* ‡ - 135 */
     325  C2_LEFTTORIGHT, /* ˆ - 136 */
     326  C2_EUROPETERMINATOR, /* ‰ - 137 */
     327  C2_LEFTTORIGHT, /* Š - 138 */
     328  C2_OTHERNEUTRAL, /* ‹ - 139 */
     329  C2_LEFTTORIGHT, /* Œ - 140 */
     330  C2_NOTAPPLICABLE, /*  - 141 */
     331  C2_NOTAPPLICABLE, /* Ž - 142 */
     332  C2_NOTAPPLICABLE, /*  - 143 */
     333  C2_NOTAPPLICABLE, /*  - 144 */
     334  C2_OTHERNEUTRAL, /* ‘ - 145 */
     335  C2_OTHERNEUTRAL, /* ’ - 146 */
     336  C2_OTHERNEUTRAL, /* “ - 147 */
     337  C2_OTHERNEUTRAL, /* ” - 148 */
     338  C2_OTHERNEUTRAL, /* • - 149 */
     339  C2_OTHERNEUTRAL, /* – - 150 */
     340  C2_OTHERNEUTRAL, /* — - 151 */
     341  C2_LEFTTORIGHT, /* ˜ - 152 */
     342  C2_OTHERNEUTRAL, /* ™ - 153 */
     343  C2_LEFTTORIGHT, /* š - 154 */
     344  C2_OTHERNEUTRAL, /* › - 155 */
     345  C2_LEFTTORIGHT, /* œ - 156 */
     346  C2_NOTAPPLICABLE, /*  - 157 */
     347  C2_NOTAPPLICABLE, /* ž - 158 */
     348  C2_LEFTTORIGHT, /* Ÿ - 159 */
     349  C2_WHITESPACE, /*   - 160 */
     350  C2_OTHERNEUTRAL, /* ¡ - 161 */
     351  C2_EUROPETERMINATOR, /* ¢ - 162 */
     352  C2_EUROPETERMINATOR, /* £ - 163 */
     353  C2_EUROPETERMINATOR, /* € - 164 */
     354  C2_EUROPETERMINATOR, /* ¥ - 165 */
     355  C2_OTHERNEUTRAL, /* Š - 166 */
     356  C2_OTHERNEUTRAL, /* § - 167 */
     357  C2_OTHERNEUTRAL, /* š - 168 */
     358  C2_OTHERNEUTRAL, /* © - 169 */
     359  C2_OTHERNEUTRAL, /* ª - 170 */
     360  C2_OTHERNEUTRAL, /* « - 171 */
     361  C2_OTHERNEUTRAL, /* ¬ - 172 */
     362  C2_OTHERNEUTRAL, /* ­ - 173 */
     363  C2_OTHERNEUTRAL, /* ® - 174 */
     364  C2_OTHERNEUTRAL, /* ¯ - 175 */
     365  C2_EUROPETERMINATOR, /* ° - 176 */
     366  C2_EUROPETERMINATOR, /* ± - 177 */
     367  C2_EUROPENUMBER, /* ² - 178 */
     368  C2_EUROPENUMBER, /* ³ - 179 */
     369  C2_OTHERNEUTRAL, /* Ž - 180 */
     370  C2_OTHERNEUTRAL, /* µ - 181 */
     371  C2_OTHERNEUTRAL, /* ¶ - 182 */
     372  C2_OTHERNEUTRAL, /* · - 183 */
     373  C2_OTHERNEUTRAL, /* ž - 184 */
     374  C2_EUROPENUMBER, /* ¹ - 185 */
     375  C2_OTHERNEUTRAL, /* º - 186 */
     376  C2_OTHERNEUTRAL, /* » - 187 */
     377  C2_OTHERNEUTRAL, /* Œ - 188 */
     378  C2_OTHERNEUTRAL, /* œ - 189 */
     379  C2_OTHERNEUTRAL, /* Ÿ - 190 */
     380  C2_OTHERNEUTRAL, /* ¿ - 191 */
     381  C2_LEFTTORIGHT, /* À - 192 */
     382  C2_LEFTTORIGHT, /* Á - 193 */
     383  C2_LEFTTORIGHT, /* Â - 194 */
     384  C2_LEFTTORIGHT, /* Ã - 195 */
     385  C2_LEFTTORIGHT, /* Ä - 196 */
     386  C2_LEFTTORIGHT, /* Å - 197 */
     387  C2_LEFTTORIGHT, /* Æ - 198 */
     388  C2_LEFTTORIGHT, /* Ç - 199 */
     389  C2_LEFTTORIGHT, /* È - 200 */
     390  C2_LEFTTORIGHT, /* É - 201 */
     391  C2_LEFTTORIGHT, /* Ê - 202 */
     392  C2_LEFTTORIGHT, /* Ë - 203 */
     393  C2_LEFTTORIGHT, /* Ì - 204 */
     394  C2_LEFTTORIGHT, /* Í - 205 */
     395  C2_LEFTTORIGHT, /* Î - 206 */
     396  C2_LEFTTORIGHT, /* Ï - 207 */
     397  C2_LEFTTORIGHT, /* Ð - 208 */
     398  C2_LEFTTORIGHT, /* Ñ - 209 */
     399  C2_LEFTTORIGHT, /* Ò - 210 */
     400  C2_LEFTTORIGHT, /* Ó - 211 */
     401  C2_LEFTTORIGHT, /* Ô - 212 */
     402  C2_LEFTTORIGHT, /* Õ - 213 */
     403  C2_LEFTTORIGHT, /* Ö - 214 */
     404  C2_OTHERNEUTRAL, /* × - 215 */
     405  C2_LEFTTORIGHT, /* Ø - 216 */
     406  C2_LEFTTORIGHT, /* Ù - 217 */
     407  C2_LEFTTORIGHT, /* Ú - 218 */
     408  C2_LEFTTORIGHT, /* Û - 219 */
     409  C2_LEFTTORIGHT, /* Ü - 220 */
     410  C2_LEFTTORIGHT, /* Ý - 221 */
     411  C2_LEFTTORIGHT, /* Þ - 222 */
     412  C2_LEFTTORIGHT, /* ß - 223 */
     413  C2_LEFTTORIGHT, /* à - 224 */
     414  C2_LEFTTORIGHT, /* á - 225 */
     415  C2_LEFTTORIGHT, /* â - 226 */
     416  C2_LEFTTORIGHT, /* ã - 227 */
     417  C2_LEFTTORIGHT, /* ä - 228 */
     418  C2_LEFTTORIGHT, /* å - 229 */
     419  C2_LEFTTORIGHT, /* æ - 230 */
     420  C2_LEFTTORIGHT, /* ç - 231 */
     421  C2_LEFTTORIGHT, /* è - 232 */
     422  C2_LEFTTORIGHT, /* é - 233 */
     423  C2_LEFTTORIGHT, /* ê - 234 */
     424  C2_LEFTTORIGHT, /* ë - 235 */
     425  C2_LEFTTORIGHT, /* ì - 236 */
     426  C2_LEFTTORIGHT, /* í - 237 */
     427  C2_LEFTTORIGHT, /* î - 238 */
     428  C2_LEFTTORIGHT, /* ï - 239 */
     429  C2_LEFTTORIGHT, /* ð - 240 */
     430  C2_LEFTTORIGHT, /* ñ - 241 */
     431  C2_LEFTTORIGHT, /* ò - 242 */
     432  C2_LEFTTORIGHT, /* ó - 243 */
     433  C2_LEFTTORIGHT, /* ô - 244 */
     434  C2_LEFTTORIGHT, /* õ - 245 */
     435  C2_LEFTTORIGHT, /* ö - 246 */
     436  C2_OTHERNEUTRAL, /* ÷ - 247 */
     437  C2_LEFTTORIGHT, /* ø - 248 */
     438  C2_LEFTTORIGHT, /* ù - 249 */
     439  C2_LEFTTORIGHT, /* ú - 250 */
     440  C2_LEFTTORIGHT, /* û - 251 */
     441  C2_LEFTTORIGHT, /* ü - 252 */
     442  C2_LEFTTORIGHT, /* ý - 253 */
     443  C2_LEFTTORIGHT, /* þ - 254 */
     444  C2_LEFTTORIGHT /* ÿ - 255 */
     445};
     446
     447const WORD OLE2NLS_CT_CType3_LUT[] = {
     448  0x0000, /*   -   0 */
     449  0x0000, /*   -   1 */
     450  0x0000, /*   -   2 */
     451  0x0000, /*   -   3 */
     452  0x0000, /*   -   4 */
     453  0x0000, /*   -   5 */
     454  0x0000, /*   -   6 */
     455  0x0000, /*   -   7 */
     456  0x0000, /*   -   8 */
     457  0x0008, /*   -   9 */
     458  0x0008, /*   -  10 */
     459  0x0008, /*   -  11 */
     460  0x0008, /*   -  12 */
     461  0x0008, /*   -  13 */
     462  0x0000, /*   -  14 */
     463  0x0000, /*   -  15 */
     464  0x0000, /*   -  16 */
     465  0x0000, /*   -  17 */
     466  0x0000, /*   -  18 */
     467  0x0000, /*   -  19 */
     468  0x0000, /*   -  20 */
     469  0x0000, /*   -  21 */
     470  0x0000, /*   -  22 */
     471  0x0000, /*   -  23 */
     472  0x0000, /*   -  24 */
     473  0x0000, /*   -  25 */
     474  0x0000, /*   -  26 */
     475  0x0000, /*   -  27 */
     476  0x0000, /*   -  28 */
     477  0x0000, /*   -  29 */
     478  0x0000, /*   -  30 */
     479  0x0000, /*   -  31 */
     480  0x0048, /*   -  32 */
     481  0x0048, /* ! -  33 */
     482  0x0448, /* " -  34 */ /* " */
     483  0x0048, /* # -  35 */
     484  0x0448, /* $ -  36 */
     485  0x0048, /* % -  37 */
     486  0x0048, /* & -  38 */
     487  0x0440, /* ' -  39 */
     488  0x0048, /* ( -  40 */
     489  0x0048, /* ) -  41 */
     490  0x0048, /* * -  42 */
     491  0x0048, /* + -  43 */
     492  0x0048, /* , -  44 */
     493  0x0440, /* - -  45 */
     494  0x0048, /* . -  46 */
     495  0x0448, /* / -  47 */
     496  0x0040, /* 0 -  48 */
     497  0x0040, /* 1 -  49 */
     498  0x0040, /* 2 -  50 */
     499  0x0040, /* 3 -  51 */
     500  0x0040, /* 4 -  52 */
     501  0x0040, /* 5 -  53 */
     502  0x0040, /* 6 -  54 */
     503  0x0040, /* 7 -  55 */
     504  0x0040, /* 8 -  56 */
     505  0x0040, /* 9 -  57 */
     506  0x0048, /* : -  58 */
     507  0x0048, /* ; -  59 */
     508  0x0048, /* < -  60 */
     509  0x0448, /* = -  61 */
     510  0x0048, /* > -  62 */
     511  0x0048, /* ? -  63 */
     512  0x0448, /* @ -  64 */
     513  0x8040, /* A -  65 */
     514  0x8040, /* B -  66 */
     515  0x8040, /* C -  67 */
     516  0x8040, /* D -  68 */
     517  0x8040, /* E -  69 */
     518  0x8040, /* F -  70 */
     519  0x8040, /* G -  71 */
     520  0x8040, /* H -  72 */
     521  0x8040, /* I -  73 */
     522  0x8040, /* J -  74 */
     523  0x8040, /* K -  75 */
     524  0x8040, /* L -  76 */
     525  0x8040, /* M -  77 */
     526  0x8040, /* N -  78 */
     527  0x8040, /* O -  79 */
     528  0x8040, /* P -  80 */
     529  0x8040, /* Q -  81 */
     530  0x8040, /* R -  82 */
     531  0x8040, /* S -  83 */
     532  0x8040, /* T -  84 */
     533  0x8040, /* U -  85 */
     534  0x8040, /* V -  86 */
     535  0x8040, /* W -  87 */
     536  0x8040, /* X -  88 */
     537  0x8040, /* Y -  89 */
     538  0x8040, /* Z -  90 */
     539  0x0048, /* [ -  91 */
     540  0x0448, /* \ -  92 */
     541  0x0048, /* ] -  93 */
     542  0x0448, /* ^ -  94 */
     543  0x0448, /* _ -  95 */
     544  0x0448, /* ` -  96 */
     545  0x8040, /* a -  97 */
     546  0x8040, /* b -  98 */
     547  0x8040, /* c -  99 */
     548  0x8040, /* d - 100 */
     549  0x8040, /* e - 101 */
     550  0x8040, /* f - 102 */
     551  0x8040, /* g - 103 */
     552  0x8040, /* h - 104 */
     553  0x8040, /* i - 105 */
     554  0x8040, /* j - 106 */
     555  0x8040, /* k - 107 */
     556  0x8040, /* l - 108 */
     557  0x8040, /* m - 109 */
     558  0x8040, /* n - 110 */
     559  0x8040, /* o - 111 */
     560  0x8040, /* p - 112 */
     561  0x8040, /* q - 113 */
     562  0x8040, /* r - 114 */
     563  0x8040, /* s - 115 */
     564  0x8040, /* t - 116 */
     565  0x8040, /* u - 117 */
     566  0x8040, /* v - 118 */
     567  0x8040, /* w - 119 */
     568  0x8040, /* x - 120 */
     569  0x8040, /* y - 121 */
     570  0x8040, /* z - 122 */
     571  0x0048, /* { - 123 */
     572  0x0048, /* | - 124 */
     573  0x0048, /* } - 125 */
     574  0x0448, /* ~ - 126 */
     575  0x0000, /*  - 127 */
     576  0x0000, /* € - 128 */
     577  0x0000, /*  - 129 */
     578  0x0008, /* ‚ - 130 */
     579  0x8000, /* ƒ - 131 */
     580  0x0008, /* „ - 132 */
     581  0x0008, /*
     582 - 133 */
     583  0x0008, /* † - 134 */
     584  0x0008, /* ‡ - 135 */
     585  0x0001, /* ˆ - 136 */
     586  0x0008, /* ‰ - 137 */
     587  0x8003, /* Š - 138 */
     588  0x0008, /* ‹ - 139 */
     589  0x8000, /* Œ - 140 */
     590  0x0000, /*  - 141 */
     591  0x0000, /* Ž - 142 */
     592  0x0000, /*  - 143 */
     593  0x0000, /*  - 144 */
     594  0x0088, /* ‘ - 145 */
     595  0x0088, /* ’ - 146 */
     596  0x0088, /* “ - 147 */
     597  0x0088, /* ” - 148 */
     598  0x0008, /* • - 149 */
     599  0x0400, /* – - 150 */
     600  0x0400, /* — - 151 */
     601  0x0408, /* ˜ - 152 */
     602  0x0000, /* ™ - 153 */
     603  0x8003, /* š - 154 */
     604  0x0008, /* › - 155 */
     605  0x8000, /* œ - 156 */
     606  0x0000, /*  - 157 */
     607  0x0000, /* ž - 158 */
     608  0x8003, /* Ÿ - 159 */
     609  0x0008, /*   - 160 */
     610  0x0008, /* ¡ - 161 */
     611  0x0048, /* ¢ - 162 */
     612  0x0048, /* £ - 163 */
     613  0x0008, /* € - 164 */
     614  0x0048, /* ¥ - 165 */
     615  0x0048, /* Š - 166 */
     616  0x0008, /* § - 167 */
     617  0x0408, /* š - 168 */
     618  0x0008, /* © - 169 */
     619  0x0400, /* ª - 170 */
     620  0x0008, /* « - 171 */
     621  0x0048, /* ¬ - 172 */
     622  0x0408, /* ­ - 173 */
     623  0x0008, /* ® - 174 */
     624  0x0448, /* ¯ - 175 */
     625  0x0008, /* ° - 176 */
     626  0x0008, /* ± - 177 */
     627  0x0000, /* ² - 178 */
     628  0x0000, /* ³ - 179 */
     629  0x0408, /* Ž - 180 */
     630  0x0008, /* µ - 181 */
     631  0x0008, /* ¶ - 182 */
     632  0x0008, /* · - 183 */
     633  0x0408, /* ž - 184 */
     634  0x0000, /* ¹ - 185 */
     635  0x0400, /* º - 186 */
     636  0x0008, /* » - 187 */
     637  0x0000, /* Œ - 188 */
     638  0x0000, /* œ - 189 */
     639  0x0000, /* Ÿ - 190 */
     640  0x0008, /* ¿ - 191 */
     641  0x8003, /* À - 192 */
     642  0x8003, /* Á - 193 */
     643  0x8003, /* Â - 194 */
     644  0x8003, /* Ã - 195 */
     645  0x8003, /* Ä - 196 */
     646  0x8003, /* Å - 197 */
     647  0x8000, /* Æ - 198 */
     648  0x8003, /* Ç - 199 */
     649  0x8003, /* È - 200 */
     650  0x8003, /* É - 201 */
     651  0x8003, /* Ê - 202 */
     652  0x8003, /* Ë - 203 */
     653  0x8003, /* Ì - 204 */
     654  0x8003, /* Í - 205 */
     655  0x8003, /* Î - 206 */
     656  0x8003, /* Ï - 207 */
     657  0x8000, /* Ð - 208 */
     658  0x8003, /* Ñ - 209 */
     659  0x8003, /* Ò - 210 */
     660  0x8003, /* Ó - 211 */
     661  0x8003, /* Ô - 212 */
     662  0x8003, /* Õ - 213 */
     663  0x8003, /* Ö - 214 */
     664  0x0008, /* × - 215 */
     665  0x8003, /* Ø - 216 */
     666  0x8003, /* Ù - 217 */
     667  0x8003, /* Ú - 218 */
     668  0x8003, /* Û - 219 */
     669  0x8003, /* Ü - 220 */
     670  0x8003, /* Ý - 221 */
     671  0x8000, /* Þ - 222 */
     672  0x8000, /* ß - 223 */
     673  0x8003, /* à - 224 */
     674  0x8003, /* á - 225 */
     675  0x8003, /* â - 226 */
     676  0x8003, /* ã - 227 */
     677  0x8003, /* ä - 228 */
     678  0x8003, /* å - 229 */
     679  0x8000, /* æ - 230 */
     680  0x8003, /* ç - 231 */
     681  0x8003, /* è - 232 */
     682  0x8003, /* é - 233 */
     683  0x8003, /* ê - 234 */
     684  0x8003, /* ë - 235 */
     685  0x8003, /* ì - 236 */
     686  0x8003, /* í - 237 */
     687  0x8003, /* î - 238 */
     688  0x8003, /* ï - 239 */
     689  0x8000, /* ð - 240 */
     690  0x8003, /* ñ - 241 */
     691  0x8003, /* ò - 242 */
     692  0x8003, /* ó - 243 */
     693  0x8003, /* ô - 244 */
     694  0x8003, /* õ - 245 */
     695  0x8003, /* ö - 246 */
     696  0x0008, /* ÷ - 247 */
     697  0x8003, /* ø - 248 */
     698  0x8003, /* ù - 249 */
     699  0x8003, /* ú - 250 */
     700  0x8003, /* û - 251 */
     701  0x8003, /* ü - 252 */
     702  0x8003, /* ý - 253 */
     703  0x8000, /* þ - 254 */
     704  0x8003  /* ÿ - 255 */
     705};
     706
     707
     708
     709ODINFUNCTION4(BOOL,    GetStringTypeW,
     710              DWORD,   dwInfoType,
     711              LPCWSTR, lpSrcStr,
     712              int,     cchSrc,
     713              LPWORD,  lpCharType)
     714{
     715  return GetStringTypeExW(0,
     716                          dwInfoType,
     717                          lpSrcStr,
     718                          cchSrc,
     719                          lpCharType);
     720}
     721
     722
     723ODINFUNCTION5(BOOL,    GetStringTypeExW,
     724              LCID,    locale,
     725              DWORD,   dwInfoType,
     726              LPCWSTR, lpSrcStr,
     727              int,     cchSrc,
     728              LPWORD,  lpCharType)
     729{
     730  int i;
    188731
    189732  dprintf(("KERNEL32:  GetStringTypeW, not properly implemented\n"));
    190   if((DWORD)lpSrcStr == (DWORD)lpCharType || !lpSrcStr || !lpCharType) {
    191         O32_SetLastError(ERROR_INVALID_PARAMETER);
    192         return(FALSE);
     733  if((DWORD)lpSrcStr == (DWORD)lpCharType ||
     734     !lpSrcStr ||
     735     !lpCharType)
     736  {
     737    O32_SetLastError(ERROR_INVALID_PARAMETER);
     738    return(FALSE);
    193739  }
     740 
    194741  if(cchSrc == -1)
    195         cchSrc = UniStrlen((UniChar*)lpSrcStr);
    196 
    197   memset(lpCharType, 0, cchSrc*sizeof(WORD));
    198   switch(fdwInfoType) {
    199         case CT_CTYPE1:
    200                 for(i=0;i<cchSrc;i++) {
    201                         if(lpSrcStr[i] >= (WCHAR)'a' && lpSrcStr[i] <= (WCHAR)'z')
    202                                 lpCharType[i] |= C1_LOWER | C1_ALPHA;
    203                         else
    204                         if(lpSrcStr[i] >= (WCHAR)'A' && lpSrcStr[i] <= (WCHAR)'A')
    205                                 lpCharType[i] |= C1_UPPER | C1_ALPHA;
    206                         else
    207                         if(lpSrcStr[i] >= (WCHAR)'0' && lpSrcStr[i] <= (WCHAR)'9')
    208                                 lpCharType[i] |= C1_DIGIT;
    209                         else
    210                         if(lpSrcStr[i] >= (WCHAR)' ')
    211                                 lpCharType[i] |= C1_SPACE;
    212                 }
    213                 break;
    214         case CT_CTYPE2:
    215         case CT_CTYPE3: //not supported right now
    216                 break;
     742    cchSrc = UniStrlen((UniChar*)lpSrcStr);
     743
     744  switch(dwInfoType)
     745  {
     746    case CT_CTYPE1:
     747      for(i=0;i<cchSrc;i++)
     748      {
     749        lpCharType[i] = 0;
     750        if (isdigit(lpSrcStr[i])) lpCharType[i]|=C1_DIGIT;
     751        if (isalpha(lpSrcStr[i])) lpCharType[i]|=C1_ALPHA;
     752        if (islower(lpSrcStr[i])) lpCharType[i]|=C1_LOWER;
     753        if (isupper(lpSrcStr[i])) lpCharType[i]|=C1_UPPER;
     754        if (isspace(lpSrcStr[i])) lpCharType[i]|=C1_SPACE;
     755        if (ispunct(lpSrcStr[i])) lpCharType[i]|=C1_PUNCT;
     756        if (iscntrl(lpSrcStr[i])) lpCharType[i]|=C1_CNTRL;
     757        if ( (lpSrcStr[i] == ' ') ||
     758             (lpSrcStr[i] == '\t') )
     759           lpCharType[i]|=C1_BLANK;
     760      }
     761      return TRUE;
     762      break;
     763   
     764    case CT_CTYPE2:
     765    case CT_CTYPE3: //not supported right now
     766      return FALSE;
     767      break;
    217768  }
    218   return(TRUE);
    219 }
     769 
     770  return FALSE;
     771}
     772
    220773//******************************************************************************
    221774//NOTE: This has one parameter more than the W version! (@#$@#$)
    222775//******************************************************************************
    223 BOOL WIN32API GetStringTypeA(LCID Locale, DWORD fdwInfoType, LPCSTR lpSrcStr, int cchSrc, LPWORD lpCharType)
    224 {
    225  int i;
    226 
    227   dprintf(("KERNEL32:  GetStringTypeA, not properly implemented\n"));
    228   if(lpSrcStr == (LPCSTR)lpCharType || !lpSrcStr || !lpCharType) {
    229         O32_SetLastError(ERROR_INVALID_PARAMETER);
    230         return(FALSE);
     776ODINFUNCTION5(BOOL,    GetStringTypeA,
     777              LCID,    locale,
     778              DWORD,   dwInfoType,
     779              LPCSTR,  lpSrcStr,
     780              int,     cchSrc,
     781              LPWORD,  lpCharType)
     782{
     783  return GetStringTypeExA(locale,
     784                          dwInfoType,
     785                          lpSrcStr,
     786                          cchSrc,
     787                          lpCharType);
     788}
     789
     790/******************************************************************************
     791*GetStringTypeExA[KERNEL32.397]
     792*
     793* FIXME: Ignores the locale.
     794*/
     795ODINFUNCTION5(BOOL,    GetStringTypeExA,
     796              LCID,    locale,
     797              DWORD,   dwInfoType,
     798              LPCSTR,  src,
     799              INT,     cchSrc,
     800              LPWORD,  chartype)
     801{
     802  int i;
     803 
     804  if ((src==NULL) ||
     805      (chartype==NULL) ||
     806      (src==(LPSTR)chartype))
     807  {
     808    SetLastError(ERROR_INVALID_PARAMETER);
     809    return FALSE;
    231810  }
    232   if(cchSrc == -1)
    233         cchSrc = strlen(lpSrcStr);
    234 
    235   memset(lpCharType, 0, cchSrc*sizeof(WORD));
    236   switch(fdwInfoType) {
    237         case CT_CTYPE1:
    238                 for(i=0;i<cchSrc;i++) {
    239                         if(lpSrcStr[i] >= 'a' && lpSrcStr[i] <= 'z')
    240                                 lpCharType[i] |= C1_LOWER | C1_ALPHA;
    241                         else
    242                         if(lpSrcStr[i] >= 'A' && lpSrcStr[i] <= 'A')
    243                                 lpCharType[i] |= C1_UPPER | C1_ALPHA;
    244                         else
    245                         if(lpSrcStr[i] >= '0' && lpSrcStr[i] <= '9')
    246                                 lpCharType[i] |= C1_DIGIT;
    247                         else
    248                         if(lpSrcStr[i] >= ' ')
    249                                 lpCharType[i] |= C1_SPACE;
    250                 }
    251                 break;
    252         case CT_CTYPE2:
    253         case CT_CTYPE3: //not supported right now
    254                 break;
     811 
     812  if (cchSrc==-1)
     813    cchSrc=lstrlenA(src)+1;
     814 
     815  switch (dwInfoType)
     816  {
     817    case CT_CTYPE1:
     818      for (i=0;i<cchSrc;i++)
     819      {
     820        chartype[i] = 0;
     821        if (isdigit(src[i])) chartype[i]|=C1_DIGIT;
     822        if (isalpha(src[i])) chartype[i]|=C1_ALPHA;
     823        if (islower(src[i])) chartype[i]|=C1_LOWER;
     824        if (isupper(src[i])) chartype[i]|=C1_UPPER;
     825        if (isspace(src[i])) chartype[i]|=C1_SPACE;
     826        if (ispunct(src[i])) chartype[i]|=C1_PUNCT;
     827        if (iscntrl(src[i])) chartype[i]|=C1_CNTRL;
     828        /* FIXME: isblank() is a GNU extension */
     829        /*if (isblank(src[i])) chartype[i]|=C1_BLANK; */
     830        if ((src[i] == ' ') || (src[i] == '\t')) chartype[i]|=C1_BLANK;
     831        /* C1_XDIGIT */
     832      }
     833      return TRUE;
     834 
     835    case CT_CTYPE2:
     836      for (i=0;i<cchSrc;i++)
     837      {
     838        chartype[i]=(WORD)CT_CType2_LUT[i];
     839      }
     840      return TRUE;
     841 
     842    case CT_CTYPE3:
     843      for (i=0;i<cchSrc;i++)
     844      {
     845        chartype[i]=OLE2NLS_CT_CType3_LUT[i];
     846      }
     847      return TRUE;
     848     
     849    default:
     850      dprintf(("Unknown dwInfoType:%ld\n",
     851               dwInfoType));
     852      return FALSE;
    255853  }
    256   return(TRUE);
    257 }
    258 //******************************************************************************
    259 //******************************************************************************
    260 BOOL WIN32API GetStringTypeExW(LCID Locale, DWORD fdwInfoType, LPCWSTR lpSrcStr, int cchSrc, LPWORD lpCharType)
    261 {
    262   dprintf(("KERNEL32:  GetStringTypeExW, not properly implemented\n"));
    263   return(GetStringTypeW(fdwInfoType, lpSrcStr, cchSrc, lpCharType));
    264 }
    265 //******************************************************************************
    266 //******************************************************************************
    267 BOOL WIN32API GetStringTypeExA(LCID Locale, DWORD fdwInfoType, LPCSTR lpSrcStr, int cchSrc, LPWORD lpCharType)
    268 {
    269   dprintf(("KERNEL32:  GetStringTypeExA, not properly implemented\n"));
    270   return(GetStringTypeA(Locale, fdwInfoType, lpSrcStr, cchSrc, lpCharType));
    271 }
     854}
     855
     856
    272857//******************************************************************************
    273858VOID WIN32API GlobalMemoryStatus( MEMORYSTATUS *arg1)
  • trunk/src/kernel32/directory.cpp

    r3693 r3694  
    1 /* $Id: directory.cpp,v 1.24 2000-06-12 13:03:00 phaller Exp $ */
     1/* $Id: directory.cpp,v 1.25 2000-06-12 14:59:37 phaller Exp $ */
    22
    33/*
     
    4343
    4444ODINDEBUGCHANNEL(KERNEL32-DIRECTORY)
     45
     46
     47/*****************************************************************************
     48 * Local Prototypes                                                          *
     49 *****************************************************************************/
    4550
    4651
     
    224229 
    225230  // cut off trailing backslashes
    226   if (lpstrDirectory[len - 1] == '\\')
     231  if ( (lpstrDirectory[len - 1] == '\\') ||
     232       (lpstrDirectory[len - 1] == '/') )
    227233  {
    228234    lstrcpynA(szBuffer,
     
    236242            lpstrDirectory));
    237243 
    238   return(O32_CreateDirectory(szBuffer,
     244  // PH Note 2000/06/12:
     245  // Creation of an existing directory is NO ERROR it seems.
     246  DWORD dwAttr = GetFileAttributesA(lpstrDirectory);
     247  if (dwAttr != -1)
     248    if (dwAttr & FILE_ATTRIBUTE_DIRECTORY)
     249    {
     250      SetLastError(ERROR_SUCCESS);
     251      return TRUE;
     252    }
     253 
     254  return(O32_CreateDirectory(lpstrDirectory,
    239255                             arg2));
    240256}
     
    407423 
    408424  // cut off trailing backslashes
    409   if (lpstrDirectory[len - 1] == '\\')
     425  if ( (lpstrDirectory[len - 1] == '\\') ||
     426       (lpstrDirectory[len - 1] == '/') )
    410427  {
    411428    lstrcpynA(szBuffer,
Note: See TracChangeset for help on using the changeset viewer.