Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(418)

Side by Side Diff: source/common/icuplug.cpp

Issue 845603002: Update ICU to 54.1 step 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/icu.git@master
Patch Set: remove unusued directories Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « source/common/icuplug.c ('k') | source/common/listformatter.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 ****************************************************************************** 2 ******************************************************************************
3 * 3 *
4 * Copyright (C) 2009-2012, International Business Machines 4 * Copyright (C) 2009-2014, International Business Machines
5 * Corporation and others. All Rights Reserved. 5 * Corporation and others. All Rights Reserved.
6 * 6 *
7 ****************************************************************************** 7 ******************************************************************************
8 * 8 *
9 * FILE NAME : icuplug.c 9 * FILE NAME : icuplug.c
10 * 10 *
11 * Date Name Description 11 * Date Name Description
12 * 10/29/2009 sl New. 12 * 10/29/2009 sl New.
13 ****************************************************************************** 13 ******************************************************************************
14 */ 14 */
15 15
16 #include "unicode/icuplug.h" 16 #include "unicode/icuplug.h"
17 #include "icuplugimp.h" 17 #include "icuplugimp.h"
18 #include "cstring.h" 18 #include "cstring.h"
19 #include "cmemory.h" 19 #include "cmemory.h"
20 #include "putilimp.h" 20 #include "putilimp.h"
21 #include "ucln.h" 21 #include "ucln.h"
22 #include <stdio.h> 22 #include <stdio.h>
23 #ifdef __MVS__ /* defined by z/OS compiler */ 23 #ifdef __MVS__ /* defined by z/OS compiler */
24 #define _POSIX_SOURCE 24 #define _POSIX_SOURCE
25 #include <cics.h> /* 12 Nov 2011 JAM iscics() function */ 25 #include <cics.h> /* 12 Nov 2011 JAM iscics() function */
26 #endif 26 #endif
27 #include "charstr.h"
28
29 using namespace icu;
27 30
28 #ifndef UPLUG_TRACE 31 #ifndef UPLUG_TRACE
29 #define UPLUG_TRACE 0 32 #define UPLUG_TRACE 0
30 #endif 33 #endif
31 34
32 #if UPLUG_TRACE 35 #if UPLUG_TRACE
33 #include <stdio.h> 36 #include <stdio.h>
34 #define DBG(x) fprintf(stderr, "%s:%d: ",__FILE__,__LINE__); fprintf x 37 #define DBG(x) fprintf(stderr, "%s:%d: ",__FILE__,__LINE__); fprintf x
35 #endif 38 #endif
36 39
(...skipping 655 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 DBG((stderr, " Done Loading Plugs. Level: %d\n", (int32_t)uplug_getCurrentLev el())); 695 DBG((stderr, " Done Loading Plugs. Level: %d\n", (int32_t)uplug_getCurrentLev el()));
693 #endif 696 #endif
694 } 697 }
695 698
696 /* Name of the plugin config file */ 699 /* Name of the plugin config file */
697 static char plugin_file[2048] = ""; 700 static char plugin_file[2048] = "";
698 #endif 701 #endif
699 702
700 U_INTERNAL const char* U_EXPORT2 703 U_INTERNAL const char* U_EXPORT2
701 uplug_getPluginFile() { 704 uplug_getPluginFile() {
702 #if U_ENABLE_DYLOAD 705 #if U_ENABLE_DYLOAD && !UCONFIG_NO_FILE_IO
703 return plugin_file; 706 return plugin_file;
704 #else 707 #else
705 return NULL; 708 return NULL;
706 #endif 709 #endif
707 } 710 }
708 711
709 712
710 U_CAPI void U_EXPORT2 713 U_CAPI void U_EXPORT2
711 uplug_init(UErrorCode *status) { 714 uplug_init(UErrorCode *status) {
712 #if !U_ENABLE_DYLOAD 715 #if !U_ENABLE_DYLOAD
713 (void)status; /* unused */ 716 (void)status; /* unused */
714 #else 717 #elif !UCONFIG_NO_FILE_IO
715 const char *plugin_dir; 718 CharString plugin_dir;
719 const char *env = getenv("ICU_PLUGINS");
716 720
717 if(U_FAILURE(*status)) return; 721 if(U_FAILURE(*status)) return;
718 plugin_dir = getenv("ICU_PLUGINS"); 722 if(env != NULL) {
723 plugin_dir.append(env, -1, *status);
724 }
725 if(U_FAILURE(*status)) return;
719 726
720 #if defined(DEFAULT_ICU_PLUGINS) 727 #if defined(DEFAULT_ICU_PLUGINS)
721 if(plugin_dir == NULL || !*plugin_dir) { 728 if(plugin_dir.isEmpty()) {
722 plugin_dir = DEFAULT_ICU_PLUGINS; 729 plugin_dir.append(DEFAULT_ICU_PLUGINS, -1, *status);
723 } 730 }
724 #endif 731 #endif
725 732
726 #if UPLUG_TRACE 733 #if UPLUG_TRACE
727 DBG((stderr, "ICU_PLUGINS=%s\n", plugin_dir)); 734 DBG((stderr, "ICU_PLUGINS=%s\n", plugin_dir.data()));
728 #endif 735 #endif
729 736
730 if(plugin_dir != NULL && *plugin_dir) { 737 if(!plugin_dir.isEmpty()) {
731 FILE *f; 738 FILE *f;
732 739
733 740 CharString pluginFile;
734 #ifdef OS390BATCH 741 #ifdef OS390BATCH
735 /* There are potentially a lot of ways to implement a plugin directory on OS390/ zOS */ 742 /* There are potentially a lot of ways to implement a plugin directory on OS390/ zOS */
736 /* Keeping in mind that unauthorized file access is logged, monitored, and enfor ced */ 743 /* Keeping in mind that unauthorized file access is logged, monitored, and enfor ced */
737 /* I've chosen to open a DDNAME if BATCH and leave it alone for (presumably) UNI X */ 744 /* I've chosen to open a DDNAME if BATCH and leave it alone for (presumably) UNI X */
738 /* System Services. Alternative techniques might be allocating a member in */ 745 /* System Services. Alternative techniques might be allocating a member in */
739 /* SYS1.PARMLIB or setting an environment variable "ICU_PLUGIN_PATH" (?). The */ 746 /* SYS1.PARMLIB or setting an environment variable "ICU_PLUGIN_PATH" (?). The */
740 /* DDNAME can be connected to a file in the HFS if need be. */ 747 /* DDNAME can be connected to a file in the HFS if need be. */
741 748
742 uprv_strncpy(plugin_file,"//DD:ICUPLUG", 2047); /* JAM 20 Oct 2011 */ 749 pluginFile.append("//DD:ICUPLUG", -1, *status); /* JAM 20 Oct 2011 */
743 #else 750 #else
744 uprv_strncpy(plugin_file, plugin_dir, 2047); 751 pluginFile.append(plugin_dir, *status);
745 uprv_strncat(plugin_file, U_FILE_SEP_STRING,2047); 752 pluginFile.append(U_FILE_SEP_STRING, -1, *status);
746 uprv_strncat(plugin_file, "icuplugins",2047); 753 pluginFile.append("icuplugins", -1, *status);
747 uprv_strncat(plugin_file, U_ICU_VERSION_SHORT ,2047); 754 pluginFile.append(U_ICU_VERSION_SHORT, -1, *status);
748 uprv_strncat(plugin_file, ".txt" ,2047); 755 pluginFile.append(".txt", -1, *status);
749 #endif 756 #endif
757
758 #if UPLUG_TRACE
759 DBG((stderr, "status=%s\n", u_errorName(*status)));
760 #endif
761
762 if(U_FAILURE(*status)) {
763 return;
764 }
765 if((size_t)pluginFile.length() > (sizeof(plugin_file)-1)) {
766 *status = U_BUFFER_OVERFLOW_ERROR;
767 #if UPLUG_TRACE
768 DBG((stderr, "status=%s\n", u_errorName(*status)));
769 #endif
770 return;
771 }
772
773 /* plugin_file is not used for processing - it is only used
774 so that uplug_getPluginFile() works (i.e. icuinfo)
775 */
776 uprv_strncpy(plugin_file, pluginFile.data(), sizeof(plugin_file));
750 777
751 #if UPLUG_TRACE 778 #if UPLUG_TRACE
752 DBG((stderr, "pluginfile= %s\n", plugin_file)); 779 DBG((stderr, "pluginfile= %s len %d/%d\n", plugin_file, (int)strlen(plugin_f ile), (int)sizeof(plugin_file)));
753 #endif 780 #endif
754 781
755 #ifdef __MVS__ 782 #ifdef __MVS__
756 if (iscics()) /* 12 Nov 2011 JAM */ 783 if (iscics()) /* 12 Nov 2011 JAM */
757 { 784 {
758 f = NULL; 785 f = NULL;
759 } 786 }
760 else 787 else
761 #endif 788 #endif
762 { 789 {
763 f = fopen(plugin_file, "r"); 790 f = fopen(pluginFile.data(), "r");
764 } 791 }
765 792
766 if(f != NULL) { 793 if(f != NULL) {
767 char linebuf[1024]; 794 char linebuf[1024];
768 char *p, *libName=NULL, *symName=NULL, *config=NULL; 795 char *p, *libName=NULL, *symName=NULL, *config=NULL;
769 int32_t line = 0; 796 int32_t line = 0;
770 797
771 798
772 while(fgets(linebuf,1023,f)) { 799 while(fgets(linebuf,1023,f)) {
773 line++; 800 line++;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
834 } else { 861 } else {
835 #if UPLUG_TRACE 862 #if UPLUG_TRACE
836 DBG((stderr, "Can't open plugin file %s\n", plugin_file)); 863 DBG((stderr, "Can't open plugin file %s\n", plugin_file));
837 #endif 864 #endif
838 } 865 }
839 } 866 }
840 uplug_loadWaitingPlugs(status); 867 uplug_loadWaitingPlugs(status);
841 #endif /* U_ENABLE_DYLOAD */ 868 #endif /* U_ENABLE_DYLOAD */
842 ucln_registerCleanup(UCLN_UPLUG, uplug_cleanup); 869 ucln_registerCleanup(UCLN_UPLUG, uplug_cleanup);
843 } 870 }
OLDNEW
« no previous file with comments | « source/common/icuplug.c ('k') | source/common/listformatter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698