ReactOS  0.4.14-dev-98-gb0d4763
sic_nls.c File Reference
#include <schily/mconfig.h>
#include <schily/stdio.h>
#include <schily/stdlib.h>
#include <schily/string.h>
#include <schily/libport.h>
#include <schily/unistd.h>
#include <schily/schily.h>
#include <schily/dirent.h>
#include <schily/siconv.h>
Include dependency graph for sic_nls.c:

Go to the source code of this file.

Macros

#define TAB_SIZE   (UINT8_MAX+1)
 
#define __CAN_TAB_SIZE__
 

Functions

LOCAL siconvt_t *insert_sic __PR ((siconvt_t *sip))
 
EXPORT siconvt_t *sic_open __PR ((char *name))
 
EXPORT const char *sic_base __PR ((void))
 
EXPORT int sic_list __PR ((FILE *f))
 
LOCAL void freetbl __PR ((UInt8_t **uni2cs))
 
LOCAL siconvt_tinsert_sic (siconvt_t *sip)
 
LOCAL int remove_sic (siconvt_t *sip)
 
EXPORT siconvt_tsic_open (char *charset)
 
EXPORT const charsic_base ()
 
EXPORT int sic_close (siconvt_t *sip)
 
EXPORT int sic_list (FILE *f)
 
LOCAL void freetbl (UInt8_t **uni2cs)
 
LOCAL FILEpfopen (char *name)
 
LOCAL siconvt_tcreate_sic (char *name)
 

Variables

static UConst char sccsid []
 
LOCAL UInt8_t nullpage [TAB_SIZE] = { 0 }
 
LOCAL charins_base
 
LOCAL siconvt_tglist = (siconvt_t *) NULL
 

Macro Definition Documentation

◆ __CAN_TAB_SIZE__

#define __CAN_TAB_SIZE__

Definition at line 41 of file sic_nls.c.

◆ TAB_SIZE

#define TAB_SIZE   (UINT8_MAX+1)

Definition at line 40 of file sic_nls.c.

Function Documentation

◆ __PR() [1/5]

LOCAL siconvt_t* insert_sic __PR ( (siconvt_t *sip)  )

◆ __PR() [2/5]

EXPORT siconvt_t* sic_open __PR ( (char *name )

◆ __PR() [3/5]

EXPORT const char* sic_base __PR ( (void )

◆ __PR() [4/5]

EXPORT int sic_list __PR ( (FILE *f )

◆ __PR() [5/5]

LOCAL void freetbl __PR ( (UInt8_t **uni2cs)  )

◆ create_sic()

LOCAL siconvt_t* create_sic ( char name)

Definition at line 312 of file sic_nls.c.

314 {
315  UInt16_t *cs2uni = NULL;
316  UInt8_t **uni2cs = NULL;
317  siconvt_t *sip;
318  char line[1024];
319  FILE *f;
320  unsigned ch;
321  unsigned uni;
322  int i;
323  int numtrans = 0;
324 
325  if (name == NULL || *name == '\0')
326  return ((siconvt_t *)NULL);
327 
328 #ifdef USE_ICONV
329  /*
330  * Explicitly search for an iconv based translation
331  */
332  if (strncmp("iconv:", name, 6) == 0) {
333  return (create_iconv_sic(name));
334  }
335 #else
336  if (strncmp("iconv:", name, 6) == 0) {
337  return ((siconvt_t *)NULL);
338  }
339 #endif
340 
341  if ((f = pfopen(name)) == (FILE *)NULL) {
342  if (strcmp(name, "default") == 0) {
343  if ((cs2uni = (UInt16_t *)
344  malloc(sizeof (UInt16_t) * TAB_SIZE)) == NULL) {
345  return ((siconvt_t *)NULL);
346  }
347  /*
348  * Set up a 1:1 translation table like ISO-8859-1
349  */
350  for (i = 0; i < TAB_SIZE; i++)
351  cs2uni[i] = i;
352  goto do_reverse;
353  }
354 #ifdef USE_ICONV
355  return (create_iconv_sic(name));
356 #else
357  return ((siconvt_t *)NULL);
358 #endif
359  }
360 
361  if ((cs2uni = (UInt16_t *)
362  malloc(sizeof (UInt16_t) * TAB_SIZE)) == NULL) {
363  fclose(f);
364  return ((siconvt_t *)NULL);
365  }
366 
367  /*
368  * Set up mapping base.
369  * Always map the control characters 0x00 .. 0x1F
370  */
371  for (i = 0; i < 32; i++)
372  cs2uni[i] = i;
373 
374  for (i = 32; i < TAB_SIZE; i++)
375  cs2uni[i] = '\0'; /* nul marks an illegal character */
376 
377  cs2uni[0x7f] = 0x7F; /* Always map DELETE character 0x7F */
378 
379  while (fgets(line, sizeof (line), f) != NULL) {
380  char *p;
381 
382  if ((p = strchr(line, '#')) != NULL)
383  *p = '\0';
384 
385  if (sscanf(line, "%x%x", &ch, &uni) == 2) {
386  /*
387  * Only accept exactly two values in the right range.
388  */
389  if (ch > 0xFF || uni > 0xFFFF)
390  continue;
391 
392  cs2uni[ch] = uni; /* Set up unicode translation */
393  numtrans++;
394  }
395  }
396  fclose(f);
397 
398  if (numtrans == 0) { /* No valid translations found */
399  free(cs2uni);
400  return ((siconvt_t *)NULL);
401  }
402 
403 do_reverse:
404  if ((uni2cs = (UInt8_t **)
405  malloc(sizeof (unsigned char *) * TAB_SIZE)) == NULL) {
406  free(cs2uni);
407  return ((siconvt_t *)NULL);
408  }
409  for (i = 0; i < TAB_SIZE; i++) /* Map all pages to the nullpage */
410  uni2cs[i] = nullpage;
411 
412  /*
413  * Create a reversed table from the forward table read from the file.
414  */
415  for (i = 0; i < TAB_SIZE; i++) {
416  UInt8_t high;
417  UInt8_t low;
418  UInt8_t *page;
419 
420  uni = cs2uni[i];
421  high = (uni >> 8) & 0xFF;
422  low = uni & 0xFF;
423  page = uni2cs[high];
424 
425  if (page == nullpage) {
426  int j;
427 
428  /*
429  * Do not write to the nullpage but replace it by
430  * new and specific memory.
431  */
432  if ((page = (UInt8_t *) malloc(TAB_SIZE)) == NULL) {
433  free(cs2uni);
434  freetbl(uni2cs);
435  return ((siconvt_t *)NULL);
436  }
437  for (j = 0; j < TAB_SIZE; j++)
438  page[j] = '\0';
439  uni2cs[high] = page;
440  }
441  page[low] = i; /* Set up the reverse translation */
442  }
443 
444  if ((sip = (siconvt_t *)malloc(sizeof (siconvt_t))) == NULL) {
445  free(cs2uni);
446  freetbl(uni2cs);
447  return ((siconvt_t *)NULL);
448  }
449 
450  sip->sic_name = strdup(name);
451  sip->sic_uni2cs = uni2cs;
452  sip->sic_cs2uni = cs2uni;
453  sip->sic_cd2uni = NULL;
454  sip->sic_uni2cd = NULL;
455  sip->sic_alt = NULL;
456  sip->sic_next = NULL;
457  sip->sic_refcnt = 1;
458 
459  return (insert_sic(sip));
460 }
#define TAB_SIZE
Definition: sic_nls.c:40
#define free
Definition: debug_ros.c:5
unsigned char UInt8_t
Definition: stdint.h:322
iconv_t sic_cd2uni
Definition: siconv.h:42
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
_Check_return_ _CRTIMP char *__cdecl strdup(_In_opt_z_ const char *_Src)
smooth NULL
Definition: ftsmooth.c:416
Definition: parser.c:48
Definition: module.h:566
_Check_return_ _CRTIMP int __cdecl sscanf(_In_z_ const char *_Src, _In_z_ _Scanf_format_string_ const char *_Format,...)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
GLfloat f
Definition: glext.h:7540
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
Definition: utclib.c:534
int sic_refcnt
Definition: siconv.h:46
siconvt_t * sic_next
Definition: siconv.h:45
_Check_return_opt_ _CRTIMP int __cdecl fclose(_Inout_ FILE *_File)
_Check_return_opt_ _CRTIMP char *__cdecl fgets(_Out_writes_z_(_MaxCount) char *_Buf, _In_ int _MaxCount, _Inout_ FILE *_File)
#define f
Definition: ke_i.h:83
iconv_t sic_uni2cd
Definition: siconv.h:43
char * sic_name
Definition: siconv.h:39
char * strchr(const char *String, int ch)
Definition: utclib.c:501
siconvt_t * sic_alt
Definition: siconv.h:44
Definition: name.c:36
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
UInt16_t * sic_cs2uni
Definition: siconv.h:40
UInt8_t ** sic_uni2cs
Definition: siconv.h:41
LOCAL UInt8_t nullpage[TAB_SIZE]
Definition: sic_nls.c:72
#define malloc
Definition: debug_ros.c:4
LOCAL FILE * pfopen(char *name)
Definition: sic_nls.c:286
GLfloat GLfloat p
Definition: glext.h:8902
LOCAL void freetbl(UInt8_t **uni2cs)
Definition: sic_nls.c:268
LOCAL siconvt_t * insert_sic(siconvt_t *sip)
Definition: sic_nls.c:98

Referenced by sic_open().

◆ freetbl()

LOCAL void freetbl ( UInt8_t **  uni2cs)

Definition at line 268 of file sic_nls.c.

270 {
271  int i;
272 
273  for (i = 0; i < TAB_SIZE; i++) {
274  if (uni2cs[i] != nullpage) {
275  free(uni2cs[i]);
276  }
277  }
278  free(uni2cs);
279 }
#define TAB_SIZE
Definition: sic_nls.c:40
#define free
Definition: debug_ros.c:5
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
LOCAL UInt8_t nullpage[TAB_SIZE]
Definition: sic_nls.c:72

Referenced by create_sic(), and sic_close().

◆ insert_sic()

LOCAL siconvt_t* insert_sic ( siconvt_t sip)

Definition at line 98 of file sic_nls.c.

100 {
101  siconvt_t **sp = &glist;
102 
103  if (sip == (siconvt_t *)NULL) /* No table arg */
104  return ((siconvt_t *)NULL);
105  if (sip->sic_next) /* Already in list */
106  return (sip);
107 
108  while (*sp) {
109  if (sip == *sp) { /* Already in list */
110  return (sip);
111  }
112  sp = &(*sp)->sic_next;
113  }
114  sip->sic_next = glist;
115  glist = sip;
116  return (sip);
117 }
LOCAL siconvt_t * glist
Definition: sic_nls.c:92
smooth NULL
Definition: ftsmooth.c:416
siconvt_t * sic_next
Definition: siconv.h:45
static const WCHAR sp[]
Definition: suminfo.c:288

Referenced by create_sic().

◆ pfopen()

LOCAL FILE* pfopen ( char name)

Definition at line 286 of file sic_nls.c.

288 {
289  char path[1024];
290  char *p;
291 
292  if (strchr(name, '/'))
293  return (fopen(name, "r"));
294 
295  if (ins_base == NULL)
296  (void) sic_base();
297 
298  p = ins_base;
299  if (p != NULL) {
300  snprintf(path, sizeof (path), "%s%s", p, name);
301  return (fopen(path, "r"));
302  }
303  snprintf(path, sizeof (path), "%s/lib/siconv/%s", INS_BASE, name);
304  return (fopen(path, "r"));
305 }
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:49
#define snprintf
Definition: wintirpc.h:48
smooth NULL
Definition: ftsmooth.c:416
EXPORT const char * sic_base()
Definition: sic_nls.c:186
LOCAL char * ins_base
Definition: sic_nls.c:73
_Check_return_ _CRTIMP FILE *__cdecl fopen(_In_z_ const char *_Filename, _In_z_ const char *_Mode)
Definition: services.c:325
char * strchr(const char *String, int ch)
Definition: utclib.c:501
Definition: name.c:36
GLfloat GLfloat p
Definition: glext.h:8902

Referenced by create_sic().

◆ remove_sic()

LOCAL int remove_sic ( siconvt_t sip)

Definition at line 123 of file sic_nls.c.

125 {
126  siconvt_t **sp = &glist;
127 
128  while (*sp) {
129 #ifdef USE_ICONV
130  if (strcmp(sip->sic_name, (*sp)->sic_name) == 0) {
131  siconvt_t *sap = *sp;
132 
133  if (sip == *sp) {
134  *sp = sip->sic_next;
135  return (0);
136  }
137  while (sap->sic_alt != NULL) {
138  if (sap->sic_alt == sip) {
139  sap->sic_alt = sip->sic_alt;
140  sip->sic_name = NULL; /* No free() */
141  return (0);
142  }
143  sap = sap->sic_alt;
144  }
145  }
146 #endif
147  if (sip == *sp) {
148  *sp = sip->sic_next;
149  return (0);
150  }
151  sp = &(*sp)->sic_next;
152  }
153  return (-1);
154 }
LOCAL siconvt_t * glist
Definition: sic_nls.c:92
smooth NULL
Definition: ftsmooth.c:416
siconvt_t * sic_next
Definition: siconv.h:45
char * sic_name
Definition: siconv.h:39
siconvt_t * sic_alt
Definition: siconv.h:44
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
static const WCHAR sp[]
Definition: suminfo.c:288

Referenced by sic_close().

◆ sic_base()

EXPORT const char* sic_base ( )

Definition at line 186 of file sic_nls.c.

187 {
188  if (ins_base == NULL) {
189  ins_base = searchfileinpath("lib/siconv/iso8859-1", R_OK,
191  if (ins_base != NULL) {
192  int len = strlen(ins_base);
193 
194  ins_base[len - 9] = '\0';
195  }
196  }
197  return (ins_base);
198 }
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
#define SIP_PLAIN_FILE
Definition: schily.h:429
#define R_OK
Definition: io.h:171
smooth NULL
Definition: ftsmooth.c:416
EXPORT char * searchfileinpath(char *name, int mode, int file_mode, char *path)
Definition: searchinpath.c:68
GLenum GLsizei len
Definition: glext.h:6722
LOCAL char * ins_base
Definition: sic_nls.c:73

Referenced by list_locales(), pfopen(), and sic_list().

◆ sic_close()

EXPORT int sic_close ( siconvt_t sip)

Definition at line 204 of file sic_nls.c.

206 {
207  if (remove_sic(sip) < 0)
208  return (-1);
209 
210  if (--sip->sic_refcnt > 0)
211  return (0);
212 
213  if (sip->sic_name)
214  free(sip->sic_name);
215  if (sip->sic_uni2cs)
216  freetbl(sip->sic_uni2cs);
217  if (sip->sic_cs2uni)
218  free(sip->sic_cs2uni);
219 #ifdef USE_ICONV
220  if (sip->sic_cd2uni)
221  iconv_close(sip->sic_cd2uni);
222  if (sip->sic_uni2cd)
223  iconv_close(sip->sic_uni2cd);
224 #endif
225 
226  return (0);
227 }
#define free
Definition: debug_ros.c:5
iconv_t sic_cd2uni
Definition: siconv.h:42
LOCAL int remove_sic(siconvt_t *sip)
Definition: sic_nls.c:123
int sic_refcnt
Definition: siconv.h:46
iconv_t sic_uni2cd
Definition: siconv.h:43
char * sic_name
Definition: siconv.h:39
UInt16_t * sic_cs2uni
Definition: siconv.h:40
UInt8_t ** sic_uni2cs
Definition: siconv.h:41
int iconv_close(iconv_t cd)
Definition: win_iconv.c:756
LOCAL void freetbl(UInt8_t **uni2cs)
Definition: sic_nls.c:268

◆ sic_list()

EXPORT int sic_list ( FILE f)

Definition at line 233 of file sic_nls.c.

235 {
236  char path[1024];
237  DIR *d;
238  struct dirent *dp;
239  int i = 0;
240 
241  if (ins_base == NULL)
242  (void) sic_base();
243 
244  if (ins_base != NULL)
245  snprintf(path, sizeof (path), "%s", ins_base);
246  else
247  snprintf(path, sizeof (path), "%s/lib/siconv/", INS_BASE);
248  if ((d = opendir(path)) == NULL)
249  return (-1);
250 
251  while ((dp = readdir(d)) != NULL) {
252  if (dp->d_name[0] == '.') {
253  if (dp->d_name[1] == '\0')
254  continue;
255  if (dp->d_name[1] == '.' && dp->d_name[2] == '\0')
256  continue;
257  }
258  fprintf(f, "%s\n", dp->d_name);
259  i++;
260  }
261  return (i);
262 }
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:49
#define snprintf
Definition: wintirpc.h:48
Definition: fatfs.h:198
DIR *__cdecl opendir(const char *)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
Definition: dirent.h:39
smooth NULL
Definition: ftsmooth.c:416
char * d_name
Definition: dirent.h:29
EXPORT const char * sic_base()
Definition: sic_nls.c:186
GLfloat f
Definition: glext.h:7540
#define d
Definition: ke_i.h:81
LOCAL char * ins_base
Definition: sic_nls.c:73
struct dirent *__cdecl readdir(DIR *)
Definition: services.c:325

Referenced by list_locales().

◆ sic_open()

EXPORT siconvt_t* sic_open ( char charset)

Definition at line 160 of file sic_nls.c.

162 {
163  siconvt_t *sip = glist;
164 
165  if (charset == NULL || *charset == '\0')
166  return ((siconvt_t *)NULL);
167 
168  while (sip) {
169  if (strcmp(sip->sic_name, charset) == 0) {
170 #ifdef USE_ICONV
171  if (sip->sic_cd2uni != 0)
172  return (dup_iconv_sic(sip));
173 #endif
174  sip->sic_refcnt++;
175  return (sip);
176  }
177  sip = sip->sic_next;
178  }
179  return (create_sic(charset));
180 }
CFF_Charset charset
Definition: cffcmap.c:138
LOCAL siconvt_t * glist
Definition: sic_nls.c:92
iconv_t sic_cd2uni
Definition: siconv.h:42
smooth NULL
Definition: ftsmooth.c:416
int sic_refcnt
Definition: siconv.h:46
siconvt_t * sic_next
Definition: siconv.h:45
char * sic_name
Definition: siconv.h:39
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
LOCAL siconvt_t * create_sic(char *name)
Definition: sic_nls.c:312

Referenced by main().

Variable Documentation

◆ glist

◆ ins_base

LOCAL char* ins_base

Definition at line 73 of file sic_nls.c.

Referenced by list_locales(), pfopen(), sic_base(), and sic_list().

◆ nullpage

LOCAL UInt8_t nullpage[TAB_SIZE] = { 0 }

Definition at line 72 of file sic_nls.c.

Referenced by create_sic(), and freetbl().

◆ sccsid

UConst char sccsid[]
static
Initial value:
=
"@(#)sic_nls.c 1.18 14/01/15 Copyright 2007-2014 J. Schilling"

Definition at line 4 of file sic_nls.c.