libiconv-1.14-msvc

  • X5_331102
    了解作者
  • 4.7MB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-04-23 04:15
    上传日期
根据http://www.codeproject.com/Articles/302012/How-to-Build-libiconv-with-Microsoft-Visual-Studio的说明,制作的基于vs2008的libinconv,生成结果为dll。可以用于多个开源库的后续编译。。。
libiconv.rar
  • libiconv
  • Debug
  • libiconv.ilk
    345.3KB
  • libiconv.lib
    3.2KB
  • libiconv.pdb
    643KB
  • libiconv.dll
    1.1MB
  • libiconv.exp
    1.6KB
  • Release
  • libiconv.lib
    3.2KB
  • libiconv.pdb
    459KB
  • libiconv.dll
    897KB
  • libiconv.exp
    1.6KB
  • libiconv
  • Debug
  • iconv.obj
    1.3MB
  • vc90.pdb
    84KB
  • vc90.idb
    323KB
  • libiconv.res
    1.7KB
  • BuildLog.htm
    10.8KB
  • mt.dep
    65B
  • relocatable.obj
    1.6KB
  • localcharset.obj
    10.6KB
  • libiconv.dll.intermediate.manifest
    621B
  • Release
  • iconv.obj
    2.9MB
  • vc90.pdb
    84KB
  • vc90.idb
    307KB
  • libiconv.res
    1.7KB
  • BuildLog.htm
    10.6KB
  • mt.dep
    65B
  • relocatable.obj
    3.9KB
  • localcharset.obj
    23.7KB
  • libiconv.dll.intermediate.manifest
    616B
  • iconv.c
    16.4KB
  • libiconv.rc
    1.8KB
  • libiconv.vcproj
    4.1KB
  • relocatable.h
    3.1KB
  • relocatable.c
    15KB
  • localcharset.c
    17.6KB
  • localcharset.h
    1.8KB
  • libiconv.vcproj.Roy-PC.Roy.user
    1.4KB
  • include
  • iso8859_2.h
    4.6KB
  • ucs4swapped.h
    1.7KB
  • mulelao.h
    3.3KB
  • nextstep.h
    5.7KB
  • dec_hanyu.h
    3.1KB
  • mac_roman.h
    6.9KB
  • big5hkscs1999.h
    5.6KB
  • encodings_local.def
    1.2KB
  • mac_turkish.h
    6.8KB
  • cjk_variants.h
    247.9KB
  • utf32le.h
    1.6KB
  • cns11643_1.h
    50.8KB
  • aliases_sysosf1.h
    71.5KB
  • big5hkscs2001.h
    6.1KB
  • cp936ext.h
    3.4KB
  • atarist.h
    6.7KB
  • iso8859_1.h
    1.2KB
  • gb2312.h
    154.5KB
  • riscos1.h
    3.4KB
  • hp_roman8.h
    4.3KB
  • georgian_academy.h
    4KB
  • utf7.h
    10KB
  • cp1129.h
    5.1KB
  • aliases_aix_sysaix.h
    824B
  • gb18030uni.h
    11.9KB
  • rk1048.h
    5.9KB
  • cns11643_5.h
    74.3KB
  • canonical_local.h
    122B
  • cns11643_7.h
    57.1KB
  • cp858.h
    1.6KB
  • canonical_osf1_sysosf1.h
    124B
  • ucs4le.h
    1.4KB
  • iconv.h
    20KB
  • cp1133.h
    3.6KB
  • encodings.def
    37.6KB
  • cp864.h
    7.6KB
  • uhc_1.h
    82.4KB
  • cp1163.h
    1.8KB
  • big5hkscs2008.h
    6.8KB
  • ces_gbk.h
    1.7KB
  • hkscs2001.h
    32.9KB
  • canonical_sysaix.h
    6.5KB
  • cns11643_4b.h
    39.2KB
  • canonical_syshpux.h
    6.5KB
  • cp1046.h
    6.6KB
  • loop_unicode.h
    17.3KB
  • flags.h
    7.7KB
  • gb18030.h
    14.2KB
  • ces_big5.h
    1.9KB
  • cns11643.h
    1.5KB
  • iso2022_jp.h
    5.1KB
  • utf32.h
    2.9KB
  • iso8859_3.h
    4.6KB
  • encodings_osf1.def
    1.4KB
  • jisx0213.h
    275.2KB
  • utf16be.h
    2.3KB
  • gbkext2.h
    69.4KB
  • cp1124.h
    3.9KB
内容介绍
/* Determine a canonical name for the current locale's character encoding. Copyright (C) 2000-2006, 2008-2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* Written by Bruno Haible <bruno@clisp.org>. */ #include <config.h> /* Specification. */ #include "localcharset.h" #include <fcntl.h> #include <stddef.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #if defined __APPLE__ && defined __MACH__ && HAVE_LANGINFO_CODESET # define DARWIN7 /* Darwin 7 or newer, i.e. MacOS X 10.3 or newer */ #endif #if defined _WIN32 || defined __WIN32__ # define WIN32_NATIVE #endif #if defined __EMX__ /* Assume EMX program runs on OS/2, even if compiled under DOS. */ # ifndef OS2 # define OS2 # endif #endif #if !defined WIN32_NATIVE # include <unistd.h> # if HAVE_LANGINFO_CODESET # include <langinfo.h> # else # if 0 /* see comment below */ # include <locale.h> # endif # endif # ifdef __CYGWIN__ # define WIN32_LEAN_AND_MEAN # include <windows.h> # endif #elif defined WIN32_NATIVE # define WIN32_LEAN_AND_MEAN # include <windows.h> #endif #if defined OS2 # define INCL_DOS # include <os2.h> #endif #if ENABLE_RELOCATABLE # include "relocatable.h" #else # define relocate(pathname) (pathname) #endif ///* Get LIBDIR. */ //#ifndef LIBDIR //# include "configmake.h" //#endif /* Define O_NOFOLLOW to 0 on platforms where it does not exist. */ #ifndef O_NOFOLLOW # define O_NOFOLLOW 0 #endif #if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ /* Win32, Cygwin, OS/2, DOS */ # define ISSLASH(C) ((C) == '/' || (C) == '\\') #endif #ifndef DIRECTORY_SEPARATOR # define DIRECTORY_SEPARATOR '/' #endif #ifndef ISSLASH # define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR) #endif #if HAVE_DECL_GETC_UNLOCKED # undef getc # define getc getc_unlocked #endif /* The following static variable is declared 'volatile' to avoid a possible multithread problem in the function get_charset_aliases. If we are running in a threaded environment, and if two threads initialize 'charset_aliases' simultaneously, both will produce the same value, and everything will be ok if the two assignments to 'charset_aliases' are atomic. But I don't know what will happen if the two assignments mix. */ #if __STDC__ != 1 # define volatile /* empty */ #endif /* Pointer to the contents of the charset.alias file, if it has already been read, else NULL. Its format is: ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0' */ static const char * volatile charset_aliases; /* Return a pointer to the contents of the charset.alias file. */ static const char * get_charset_aliases (void) { const char *cp; cp = charset_aliases; if (cp == NULL) { #if !(defined DARWIN7 || defined VMS || defined WIN32_NATIVE || defined __CYGWIN__) const char *dir; const char *base = "charset.alias"; char *file_name; /* Make it possible to override the charset.alias location. This is necessary for running the testsuite before "make install". */ dir = getenv ("CHARSETALIASDIR"); if (dir == NULL || dir[0] == '\0') dir = relocate (LIBDIR); /* Concatenate dir and base into freshly allocated file_name. */ { size_t dir_len = strlen (dir); size_t base_len = strlen (base); int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1])); file_name = (char *) malloc (dir_len + add_slash + base_len + 1); if (file_name != NULL) { memcpy (file_name, dir, dir_len); if (add_slash) file_name[dir_len] = DIRECTORY_SEPARATOR; memcpy (file_name + dir_len + add_slash, base, base_len + 1); } } if (file_name == NULL) /* Out of memory. Treat the file as empty. */ cp = ""; else { int fd; /* Open the file. Reject symbolic links on platforms that support O_NOFOLLOW. This is a security feature. Without it, an attacker could retrieve parts of the contents (namely, the tail of the first line that starts with "* ") of an arbitrary file by placing a symbolic link to that file under the name "charset.alias" in some writable directory and defining the environment variable CHARSETALIASDIR to point to that directory. */ fd = open (file_name, O_RDONLY | (HAVE_WORKING_O_NOFOLLOW ? O_NOFOLLOW : 0)); if (fd < 0) /* File not found. Treat it as empty. */ cp = ""; else { FILE *fp; fp = fdopen (fd, "r"); if (fp == NULL) { /* Out of memory. Treat the file as empty. */ close (fd); cp = ""; } else { /* Parse the file's contents. */ char *res_ptr = NULL; size_t res_size = 0; for (;;) { int c; char buf1[50+1]; char buf2[50+1]; size_t l1, l2; char *old_res_ptr; c = getc (fp); if (c == EOF) break; if (c == '\n' || c == ' ' || c == '\t') continue; if (c == '#') { /* Skip comment, to end of line. */ do c = getc (fp); while (!(c == EOF || c == '\n')); if (c == EOF) break; continue; } ungetc (c, fp); if (fscanf (fp, "%50s %50s", buf1, buf2) < 2) break; l1 = strlen (buf1); l2 = strlen (buf2); old_res_ptr = res_ptr; if (res_size == 0) { res_size = l1 + 1 + l2 + 1; res_ptr = (char *) malloc (res_size + 1); } else { res_size += l1 + 1 + l2 + 1; res_ptr = (char *) realloc (res_ptr, res_size + 1); } if (res_ptr == NULL) { /* Out of memory. */ res_size = 0; free (old_res_ptr); break; } strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1); strcpy (res_ptr + res_size - (l2 + 1), buf2); } fclose (fp); if (res_size == 0) cp = ""; else { *(res_ptr + res_size) = '\0'; cp = res_ptr; }
评论
    相关推荐