zeroc-ice 3.6.2 → 3.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. checksums.yaml +4 -4
  2. data/bin/slice2rb +0 -0
  3. data/ext/Slice.cpp +32 -39
  4. data/ext/ice/cpp/include/Ice/BasicStream.h +15 -4
  5. data/ext/ice/cpp/include/Ice/BuiltinSequences.h +2 -2
  6. data/ext/ice/cpp/include/Ice/Communicator.h +2 -2
  7. data/ext/ice/cpp/include/Ice/CommunicatorF.h +2 -2
  8. data/ext/ice/cpp/include/Ice/Connection.h +2 -2
  9. data/ext/ice/cpp/include/Ice/ConnectionF.h +2 -2
  10. data/ext/ice/cpp/include/Ice/Current.h +2 -2
  11. data/ext/ice/cpp/include/Ice/Endpoint.h +2 -2
  12. data/ext/ice/cpp/include/Ice/EndpointF.h +2 -2
  13. data/ext/ice/cpp/include/Ice/EndpointTypes.h +2 -2
  14. data/ext/ice/cpp/include/Ice/FacetMap.h +2 -2
  15. data/ext/ice/cpp/include/Ice/Identity.h +2 -2
  16. data/ext/ice/cpp/include/Ice/ImplicitContext.h +2 -2
  17. data/ext/ice/cpp/include/Ice/ImplicitContextF.h +2 -2
  18. data/ext/ice/cpp/include/Ice/Instrumentation.h +2 -2
  19. data/ext/ice/cpp/include/Ice/InstrumentationF.h +2 -2
  20. data/ext/ice/cpp/include/Ice/LocalException.h +2 -2
  21. data/ext/ice/cpp/include/Ice/Locator.h +2 -2
  22. data/ext/ice/cpp/include/Ice/LocatorF.h +2 -2
  23. data/ext/ice/cpp/include/Ice/Logger.h +2 -2
  24. data/ext/ice/cpp/include/Ice/LoggerF.h +2 -2
  25. data/ext/ice/cpp/include/Ice/Metrics.h +2 -2
  26. data/ext/ice/cpp/include/Ice/ObjectAdapter.h +2 -2
  27. data/ext/ice/cpp/include/Ice/ObjectAdapterF.h +2 -2
  28. data/ext/ice/cpp/include/Ice/ObjectFactory.h +2 -2
  29. data/ext/ice/cpp/include/Ice/ObjectFactoryF.h +2 -2
  30. data/ext/ice/cpp/include/Ice/Plugin.h +2 -2
  31. data/ext/ice/cpp/include/Ice/PluginF.h +2 -2
  32. data/ext/ice/cpp/include/Ice/Process.h +2 -2
  33. data/ext/ice/cpp/include/Ice/ProcessF.h +2 -2
  34. data/ext/ice/cpp/include/Ice/Properties.h +2 -2
  35. data/ext/ice/cpp/include/Ice/PropertiesAdmin.h +2 -2
  36. data/ext/ice/cpp/include/Ice/PropertiesF.h +2 -2
  37. data/ext/ice/cpp/include/Ice/RemoteLogger.h +2 -2
  38. data/ext/ice/cpp/include/Ice/Router.h +2 -2
  39. data/ext/ice/cpp/include/Ice/RouterF.h +2 -2
  40. data/ext/ice/cpp/include/Ice/ServantLocator.h +2 -2
  41. data/ext/ice/cpp/include/Ice/ServantLocatorF.h +2 -2
  42. data/ext/ice/cpp/include/Ice/SliceChecksumDict.h +2 -2
  43. data/ext/ice/cpp/include/Ice/SlicedData.h +6 -0
  44. data/ext/ice/cpp/include/Ice/Version.h +2 -2
  45. data/ext/ice/cpp/include/IceSSL/ConnectionInfo.h +2 -2
  46. data/ext/ice/cpp/include/IceSSL/EndpointInfo.h +2 -2
  47. data/ext/ice/cpp/include/IceUtil/Config.h +86 -26
  48. data/ext/ice/cpp/include/IceUtil/IconvStringConverter.h +1 -1
  49. data/ext/ice/cpp/include/IceUtil/Time.h +3 -2
  50. data/ext/ice/cpp/include/Slice/PythonUtil.h +1 -1
  51. data/ext/ice/cpp/include/Slice/RubyUtil.h +1 -1
  52. data/ext/ice/cpp/include/Slice/Util.h +5 -0
  53. data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +2 -2
  54. data/ext/ice/cpp/src/Ice/Communicator.cpp +2 -2
  55. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +2 -2
  56. data/ext/ice/cpp/src/Ice/Connection.cpp +2 -2
  57. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +2 -2
  58. data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +57 -42
  59. data/ext/ice/cpp/src/Ice/ConnectionFactory.h +2 -0
  60. data/ext/ice/cpp/src/Ice/Current.cpp +2 -2
  61. data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +9 -5
  62. data/ext/ice/cpp/src/Ice/Endpoint.cpp +2 -2
  63. data/ext/ice/cpp/src/Ice/EndpointF.cpp +2 -2
  64. data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +2 -2
  65. data/ext/ice/cpp/src/Ice/FacetMap.cpp +2 -2
  66. data/ext/ice/cpp/src/Ice/Identity.cpp +2 -2
  67. data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +2 -2
  68. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +2 -2
  69. data/ext/ice/cpp/src/Ice/Incoming.cpp +11 -4
  70. data/ext/ice/cpp/src/Ice/Instance.cpp +4 -2
  71. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +2 -2
  72. data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +2 -2
  73. data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +1 -3
  74. data/ext/ice/cpp/src/Ice/LocalException.cpp +2 -2
  75. data/ext/ice/cpp/src/Ice/Locator.cpp +2 -2
  76. data/ext/ice/cpp/src/Ice/LocatorF.cpp +2 -2
  77. data/ext/ice/cpp/src/Ice/Logger.cpp +2 -2
  78. data/ext/ice/cpp/src/Ice/LoggerF.cpp +2 -2
  79. data/ext/ice/cpp/src/Ice/LoggerI.cpp +94 -5
  80. data/ext/ice/cpp/src/Ice/LoggerI.h +7 -1
  81. data/ext/ice/cpp/src/Ice/Metrics.cpp +2 -2
  82. data/ext/ice/cpp/src/Ice/Network.cpp +23 -7
  83. data/ext/ice/cpp/src/Ice/Network.h +1 -1
  84. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +2 -2
  85. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +2 -2
  86. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +2 -2
  87. data/ext/ice/cpp/src/Ice/ObjectFactoryF.cpp +2 -2
  88. data/ext/ice/cpp/src/Ice/Plugin.cpp +2 -2
  89. data/ext/ice/cpp/src/Ice/PluginF.cpp +2 -2
  90. data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +5 -0
  91. data/ext/ice/cpp/src/Ice/Process.cpp +2 -2
  92. data/ext/ice/cpp/src/Ice/ProcessF.cpp +2 -2
  93. data/ext/ice/cpp/src/Ice/Properties.cpp +2 -2
  94. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +2 -2
  95. data/ext/ice/cpp/src/Ice/PropertiesF.cpp +2 -2
  96. data/ext/ice/cpp/src/Ice/PropertyNames.cpp +4 -3
  97. data/ext/ice/cpp/src/Ice/PropertyNames.h +1 -1
  98. data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +2 -2
  99. data/ext/ice/cpp/src/Ice/RetryQueue.cpp +1 -1
  100. data/ext/ice/cpp/src/Ice/Router.cpp +2 -2
  101. data/ext/ice/cpp/src/Ice/RouterF.cpp +2 -2
  102. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +2 -2
  103. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +2 -2
  104. data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +2 -2
  105. data/ext/ice/cpp/src/Ice/StreamSocket.cpp +19 -3
  106. data/ext/ice/cpp/src/Ice/Version.cpp +2 -2
  107. data/ext/ice/cpp/src/Ice/WSConnector.h +2 -2
  108. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +2 -2
  109. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +2 -2
  110. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +2 -2
  111. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +2 -2
  112. data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +2 -2
  113. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +2 -2
  114. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +54 -39
  115. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +5 -8
  116. data/ext/ice/cpp/src/IceSSL/Util.cpp +155 -4
  117. data/ext/ice/cpp/src/IceUtil/Cond.cpp +1 -1
  118. data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +8 -0
  119. data/ext/ice/cpp/src/IceUtil/FileUtil.h +18 -5
  120. data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +5 -5
  121. data/ext/ice/cpp/src/IceUtil/Time.cpp +25 -17
  122. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +5 -11
  123. data/ext/ice/cpp/src/Slice/Preprocessor.cpp +3 -3
  124. data/ext/ice/cpp/src/Slice/Python.cpp +14 -17
  125. data/ext/ice/cpp/src/Slice/PythonUtil.cpp +183 -48
  126. data/ext/ice/cpp/src/Slice/Ruby.cpp +6 -6
  127. data/ext/ice/cpp/src/Slice/RubyUtil.cpp +0 -10
  128. data/ext/ice/cpp/src/Slice/Util.cpp +28 -3
  129. data/ext/ice/mcpp/Makefile +10 -6
  130. data/ext/ice/mcpp/configed.H +3 -0
  131. data/ext/ice/mcpp/main.c +2 -2
  132. data/ext/ice/mcpp/mcpp.gyp +6 -0
  133. data/ext/ice/mcpp/support.c +1 -1
  134. data/ext/ice/mcpp/system.H +6 -1
  135. data/ext/ice/mcpp/system.c +52 -15
  136. data/ice.gemspec +1 -1
  137. data/lib/Glacier2/Metrics.rb +1 -1
  138. data/lib/Glacier2/PermissionsVerifier.rb +1 -1
  139. data/lib/Glacier2/PermissionsVerifierF.rb +1 -1
  140. data/lib/Glacier2/Router.rb +1 -1
  141. data/lib/Glacier2/RouterF.rb +1 -1
  142. data/lib/Glacier2/SSLInfo.rb +1 -1
  143. data/lib/Glacier2/Session.rb +1 -1
  144. data/lib/Ice/BuiltinSequences.rb +1 -1
  145. data/lib/Ice/Communicator.rb +1 -1
  146. data/lib/Ice/CommunicatorF.rb +1 -1
  147. data/lib/Ice/Connection.rb +1 -1
  148. data/lib/Ice/ConnectionF.rb +1 -1
  149. data/lib/Ice/Current.rb +1 -1
  150. data/lib/Ice/Endpoint.rb +1 -1
  151. data/lib/Ice/EndpointF.rb +1 -1
  152. data/lib/Ice/EndpointTypes.rb +1 -1
  153. data/lib/Ice/FacetMap.rb +1 -1
  154. data/lib/Ice/Identity.rb +1 -1
  155. data/lib/Ice/ImplicitContext.rb +1 -1
  156. data/lib/Ice/ImplicitContextF.rb +1 -1
  157. data/lib/Ice/Instrumentation.rb +1 -1
  158. data/lib/Ice/InstrumentationF.rb +1 -1
  159. data/lib/Ice/LocalException.rb +1 -1
  160. data/lib/Ice/Locator.rb +1 -1
  161. data/lib/Ice/LocatorF.rb +1 -1
  162. data/lib/Ice/Logger.rb +1 -1
  163. data/lib/Ice/LoggerF.rb +1 -1
  164. data/lib/Ice/Metrics.rb +1 -1
  165. data/lib/Ice/ObjectAdapterF.rb +1 -1
  166. data/lib/Ice/ObjectFactory.rb +1 -1
  167. data/lib/Ice/ObjectFactoryF.rb +1 -1
  168. data/lib/Ice/Plugin.rb +1 -1
  169. data/lib/Ice/PluginF.rb +1 -1
  170. data/lib/Ice/Process.rb +1 -1
  171. data/lib/Ice/ProcessF.rb +1 -1
  172. data/lib/Ice/Properties.rb +1 -1
  173. data/lib/Ice/PropertiesAdmin.rb +1 -1
  174. data/lib/Ice/PropertiesF.rb +1 -1
  175. data/lib/Ice/RemoteLogger.rb +1 -1
  176. data/lib/Ice/Router.rb +1 -1
  177. data/lib/Ice/RouterF.rb +1 -1
  178. data/lib/Ice/SliceChecksumDict.rb +1 -1
  179. data/lib/Ice/Version.rb +1 -1
  180. data/lib/IceBox/IceBox.rb +1 -1
  181. data/lib/IceGrid/Admin.rb +1 -1
  182. data/lib/IceGrid/Descriptor.rb +1 -1
  183. data/lib/IceGrid/Exception.rb +1 -1
  184. data/lib/IceGrid/FileParser.rb +1 -1
  185. data/lib/IceGrid/Locator.rb +1 -1
  186. data/lib/IceGrid/Observer.rb +1 -1
  187. data/lib/IceGrid/Query.rb +1 -1
  188. data/lib/IceGrid/Registry.rb +1 -1
  189. data/lib/IceGrid/Session.rb +1 -1
  190. data/lib/IceGrid/UserAccountMapper.rb +1 -1
  191. data/lib/IcePatch2/FileInfo.rb +1 -1
  192. data/lib/IcePatch2/FileServer.rb +1 -1
  193. data/lib/IceStorm/IceStorm.rb +1 -1
  194. data/lib/IceStorm/Metrics.rb +1 -1
  195. data/slice/Glacier2/PermissionsVerifier.ice +0 -3
  196. data/slice/Glacier2/Session.ice +2 -9
  197. data/slice/Ice/Communicator.ice +3 -3
  198. data/slice/Ice/ImplicitContext.ice +4 -5
  199. data/slice/Ice/Instrumentation.ice +26 -26
  200. data/slice/Ice/LocalException.ice +1 -1
  201. data/slice/Ice/Locator.ice +5 -3
  202. data/slice/Ice/Metrics.ice +1 -1
  203. data/slice/Ice/ObjectFactory.ice +0 -2
  204. data/slice/Ice/RemoteLogger.ice +32 -32
  205. data/slice/Ice/Router.ice +3 -0
  206. data/slice/IceGrid/Session.ice +5 -9
  207. data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +7 -7
  208. data/slice/IcePatch2/FileServer.ice +28 -34
  209. metadata +30 -30
@@ -56,10 +56,10 @@ interruptedCallback(int /*signal*/)
56
56
  }
57
57
 
58
58
  void
59
- usage(const char* n)
59
+ usage(const string& n)
60
60
  {
61
61
  getErrorStream() << "Usage: " << n << " [options] slice-files...\n";
62
- getErrorStream() <<
62
+ getErrorStream() <<
63
63
  "Options:\n"
64
64
  "-h, --help Show this message.\n"
65
65
  "-v, --version Display the Ice version.\n"
@@ -83,7 +83,7 @@ usage(const char* n)
83
83
  }
84
84
 
85
85
  int
86
- Slice::Ruby::compile(int argc, char* argv[])
86
+ Slice::Ruby::compile(const vector<string>& argv)
87
87
  {
88
88
  IceUtilInternal::Options opts;
89
89
  opts.addOpt("h", "help");
@@ -101,11 +101,11 @@ Slice::Ruby::compile(int argc, char* argv[])
101
101
  opts.addOpt("", "underscore");
102
102
  opts.addOpt("", "all");
103
103
  opts.addOpt("", "checksum");
104
-
104
+
105
105
  vector<string> args;
106
106
  try
107
107
  {
108
- args = opts.parse(argc, const_cast<const char**>(argv));
108
+ args = opts.parse(argv);
109
109
  }
110
110
  catch(const IceUtilInternal::BadOptException& e)
111
111
  {
@@ -222,7 +222,7 @@ Slice::Ruby::compile(int argc, char* argv[])
222
222
  return EXIT_FAILURE;
223
223
  }
224
224
 
225
- if(!icecpp->printMakefileDependencies(out.os(), depend ? Preprocessor::Ruby : Preprocessor::SliceXML, includePaths,
225
+ if(!icecpp->printMakefileDependencies(out.os(), depend ? Preprocessor::Ruby : Preprocessor::SliceXML, includePaths,
226
226
  "-D__SLICE2RB__"))
227
227
  {
228
228
  out.cleanup();
@@ -245,17 +245,7 @@ Slice::Ruby::CodeVisitor::visitClassDefStart(const ClassDefPtr& p)
245
245
  //
246
246
  ClassList allBases = p->allBases();
247
247
  StringList ids;
248
- #if defined(__IBMCPP__) && defined(NDEBUG)
249
- //
250
- // VisualAge C++ 6.0 does not see that ClassDef is a Contained,
251
- // when inlining is on. The code below issues a warning: better
252
- // than an error!
253
- //
254
- transform(allBases.begin(), allBases.end(), back_inserter(ids),
255
- IceUtil::constMemFun<string,ClassDef>(&Contained::scoped));
256
- #else
257
248
  transform(allBases.begin(), allBases.end(), back_inserter(ids), IceUtil::constMemFun(&Contained::scoped));
258
- #endif
259
249
  StringList other;
260
250
  other.push_back(scoped);
261
251
  other.push_back("::Ice::Object");
@@ -10,6 +10,7 @@
10
10
  #include <Slice/Util.h>
11
11
  #include <IceUtil/FileUtil.h>
12
12
  #include <IceUtil/StringUtil.h>
13
+ #include <IceUtil/StringConverter.h>
13
14
  #include <climits>
14
15
 
15
16
  #ifndef _MSC_VER
@@ -172,11 +173,11 @@ Slice::changeInclude(const string& path, const vector<string>& includePaths)
172
173
  {
173
174
  paths.push_back(canonicalPath);
174
175
  }
175
-
176
+
176
177
  for(vector<string>::const_iterator i = paths.begin(); i != paths.end(); ++i)
177
178
  {
178
179
  for(vector<string>::const_iterator j = includePaths.begin(); j != includePaths.end(); ++j)
179
- {
180
+ {
180
181
  if(i->compare(0, j->length(), *j) == 0)
181
182
  {
182
183
  string s = i->substr(j->length() + 1); // + 1 for the '/'
@@ -186,7 +187,7 @@ Slice::changeInclude(const string& path, const vector<string>& includePaths)
186
187
  }
187
188
  }
188
189
  }
189
-
190
+
190
191
  //
191
192
  // If the path has been already shortened no need to test
192
193
  // with canonical path.
@@ -430,3 +431,27 @@ Slice::DependOutputUtil::os()
430
431
  {
431
432
  return _file.empty() ? cout : _os;
432
433
  }
434
+
435
+ #ifdef _WIN32
436
+ vector<string>
437
+ Slice::argvToArgs(int argc, wchar_t* argv[])
438
+ {
439
+ vector<string> args;
440
+ for(int i = 0; i < argc; i++)
441
+ {
442
+ args.push_back(IceUtil::wstringToString(argv[i]));
443
+ }
444
+ return args;
445
+ }
446
+ #else
447
+ vector<string>
448
+ Slice::argvToArgs(int argc, char* argv[])
449
+ {
450
+ vector<string> args;
451
+ for(int i = 0; i < argc; i++)
452
+ {
453
+ args.push_back(argv[i]);
454
+ }
455
+ return args;
456
+ }
457
+ #endif
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # **********************************************************************
6
6
 
7
- PREFIX = /opt/mcpp-2.7.2
7
+ PREFIX ?= /opt/mcpp-2.7.2
8
8
 
9
9
  CFLAGS += -O -w
10
10
 
@@ -18,9 +18,9 @@ ifeq ($(UNAME),Darwin)
18
18
  endif
19
19
 
20
20
  ifeq ($(UNAME),Linux)
21
- CFLAGS += -fPIC
21
+ CFLAGS += -fPIC
22
22
 
23
- ifeq ($(MACHINE),i686)
23
+ ifeq ($(MACHINE),i686)
24
24
  CFLAGS += -m32
25
25
 
26
26
  #
@@ -29,7 +29,7 @@ ifeq ($(UNAME),Linux)
29
29
  ifeq ($(shell test -d /usr/lib/i386-linux-gnu && echo 0),0)
30
30
  LIBDIR = lib/i386-linux-gnu
31
31
  endif
32
- else
32
+ else
33
33
  #
34
34
  # Ubuntu.
35
35
  #
@@ -43,14 +43,18 @@ ifeq ($(UNAME),Linux)
43
43
  ifeq ($(shell test -d /usr/lib64 && echo 0),0)
44
44
  LIBDIR = lib64
45
45
  endif
46
- endif
46
+ endif
47
+ endif
48
+
49
+ ifeq ($(UNAME),AIX)
50
+ CC ?= xlc_r
47
51
  endif
48
52
 
49
53
  #
50
54
  # The default C compiler (cc) is undefined with MinGW
51
55
  #
52
56
  ifneq ($(findstring MINGW,$(UNAME)),)
53
- CC = gcc
57
+ CC ?= gcc
54
58
  endif
55
59
 
56
60
  OBJS = directive.o eval.o expand.o main.o mbchar.o support.o system.o
@@ -193,6 +193,9 @@
193
193
  #define _POSIX_C_SOURCE_defined 1
194
194
  #endif
195
195
  #include "limits.h"
196
+ #ifdef _AIX
197
+ #include "sys/stat.h"
198
+ #endif
196
199
  #undef _POSIX_
197
200
  #undef _POSIX_SOURCE
198
201
  #ifdef _POSIX_C_SOURCE_defined
@@ -307,7 +307,7 @@ int mcpp_lib_main
307
307
 
308
308
  /* Open input file, "-" means stdin. */
309
309
  if (in_file != NULL && ! str_eq( in_file, "-")) {
310
- if ((fp_in = fopen( in_file, "r")) == NULL) {
310
+ if ((fp_in = mcpp_fopen( in_file, "r")) == NULL) {
311
311
  mcpp_fprintf( ERR, "Can't open input file \"%s\".\n", in_file);
312
312
  errors++;
313
313
  goto fatal_error_exit;
@@ -317,7 +317,7 @@ int mcpp_lib_main
317
317
  }
318
318
  /* Open output file, "-" means stdout. */
319
319
  if (out_file != NULL && ! str_eq( out_file, "-")) {
320
- if ((fp_out = fopen( out_file, "w")) == NULL) {
320
+ if ((fp_out = mcpp_fopen( out_file, "w")) == NULL) {
321
321
  mcpp_fprintf( ERR, "Can't open output file \"%s\".\n", out_file);
322
322
  errors++;
323
323
  goto fatal_error_exit;
@@ -55,6 +55,12 @@
55
55
  '-fPIC',
56
56
  '-w'
57
57
  ]
58
+ }],
59
+ ['OS=="win"', {
60
+ 'defines' : [
61
+ '_WIN32_WINNT=0x600',
62
+ 'WIN32_LEAN_AND_MEAN'
63
+ ]
58
64
  }]
59
65
  ]
60
66
  }
@@ -1033,7 +1033,7 @@ int get_ch( void)
1033
1033
  cur_fullname = infile->full_fname;
1034
1034
  cur_fname = infile->real_fname; /* Restore current fname*/
1035
1035
  if (infile->pos != 0L) { /* Includer was closed */
1036
- infile->fp = fopen( cur_fullname, "r");
1036
+ infile->fp = mcpp_fopen( cur_fullname, "r");
1037
1037
  fseek( infile->fp, infile->pos, SEEK_SET);
1038
1038
  } /* Re-open the includer and restore the file-position */
1039
1039
  len = (int) (infile->bptr - infile->buffer);
@@ -70,7 +70,7 @@
70
70
  */
71
71
 
72
72
  /*
73
- * The variable 'mcpp_mode' specifies the mode of preprocessing as one of
73
+ * The variable 'mcpp_mode' specifies the mode of preprocessing as one of
74
74
  * OLD_PREP, KR, STD, or POST_STD.
75
75
  * Those modes have many differences each other --
76
76
  * i.e. handling of translation phases; handling of some
@@ -371,3 +371,8 @@ typedef long expr_t;
371
371
  */
372
372
  #define CPLUS 1 /* 199711L for C++ Standard */
373
373
 
374
+
375
+ //
376
+ // helper methods to open files using UNICODE paths
377
+ //
378
+ FILE* mcpp_fopen(const char *filename, const char *mode);
@@ -36,6 +36,7 @@
36
36
  * 1. specify the constants in "configed.H" or "noconfig.H",
37
37
  * 2. append the system-dependent routines in this file.
38
38
  */
39
+
39
40
  #include "system.H"
40
41
  #include "internal.H"
41
42
 
@@ -414,9 +415,9 @@ opt_search: ;
414
415
  set_sys_dirs( set_cplus_dir);
415
416
 
416
417
  if (mkdep_mf) { /* -MF overrides -MD */
417
- mkdep_fp = fopen( mkdep_mf, "w");
418
+ mkdep_fp = mcpp_fopen( mkdep_mf, "w");
418
419
  } else if (mkdep_md) {
419
- mkdep_fp = fopen( mkdep_md, "w");
420
+ mkdep_fp = mcpp_fopen( mkdep_md, "w");
420
421
  }
421
422
  if (mkdep_mq) /* -MQ overrides -MT */
422
423
  mkdep_target = mkdep_mq;
@@ -580,7 +581,7 @@ static void def_a_macro(
580
581
  skip_nl(); /* Clear the appended <newline> */
581
582
  }
582
583
 
583
- static void chk_opts(
584
+ static void chk_opts(
584
585
  int sflag, /* Flag of Standard or post-Standard mode */
585
586
  int trad /* -traditional (GCC only) */
586
587
  )
@@ -835,7 +836,7 @@ static void set_sys_dirs(
835
836
  set_a_dir( "/usr/local/include");
836
837
  #endif
837
838
 
838
- #ifdef C_INCLUDE_DIR1
839
+ #ifdef C_INCLUDE_DIR1
839
840
  set_a_dir( C_INCLUDE_DIR1);
840
841
  #endif
841
842
  #ifdef C_INCLUDE_DIR2
@@ -882,7 +883,7 @@ static void set_a_dir(
882
883
  incdir = (const char **) xrealloc( (void *) incdir
883
884
  , sizeof (char *) * max_inc * 2);
884
885
  incend = &incdir[ max_inc];
885
- max_inc *= 2;
886
+ max_inc *= 2;
886
887
  }
887
888
 
888
889
  if (dirname == NULL)
@@ -1140,7 +1141,7 @@ static char * norm_path(
1140
1141
  } else { /* Impossible */
1141
1142
  break;
1142
1143
  }
1143
- } else { /* Impossible */
1144
+ } else { /* Impossible */
1144
1145
  break;
1145
1146
  }
1146
1147
  }
@@ -1348,7 +1349,7 @@ void put_depend(
1348
1349
  }
1349
1350
 
1350
1351
  static char * md_init(
1351
- const char * filename, /* The source file name */
1352
+ const char * filename, /* The source file name */
1352
1353
  char * output /* Output to dependency file */
1353
1354
  )
1354
1355
  /*
@@ -1379,7 +1380,7 @@ static char * md_init(
1379
1380
  if (! mkdep_fp) { /* Unless already opened by -MF, -MD, -MMD options */
1380
1381
  if (mkdep & MD_FILE) {
1381
1382
  strcpy( cp, "d");
1382
- mkdep_fp = fopen( prefix, "w");
1383
+ mkdep_fp = mcpp_fopen(prefix, "w");
1383
1384
  } else {
1384
1385
  mkdep_fp = fp_out; /* Output dependency line to normal output */
1385
1386
  no_output++; /* Without normal output */
@@ -1617,7 +1618,7 @@ static int has_directory(
1617
1618
  )
1618
1619
  /*
1619
1620
  * If a directory is found in the 'source' filename string (i.e. "includer"),
1620
- * the directory part of the string is copied to 'directory' and
1621
+ * the directory part of the string is copied to 'directory' and
1621
1622
  * has_directory() returns TRUE.
1622
1623
  * Else, nothing is copied and it returns FALSE.
1623
1624
  */
@@ -1734,10 +1735,10 @@ static int open_file(
1734
1735
  return FALSE;
1735
1736
  if (included( fullname)) /* Once included */
1736
1737
  goto true;
1737
-
1738
+
1738
1739
  if ((max_open != 0 && max_open <= include_nest)
1739
1740
  /* Exceed the known limit of open files */
1740
- || ((fp = fopen( fullname, "r")) == NULL && errno == EMFILE)) {
1741
+ || ((fp = mcpp_fopen( fullname, "r")) == NULL && errno == EMFILE)) {
1741
1742
  /* Reached the limit for the first time */
1742
1743
  if (mcpp_debug & PATH) {
1743
1744
  #if HOST_COMPILER == BORLANDC
@@ -1757,14 +1758,14 @@ static int open_file(
1757
1758
  file->pos = ftell( file->fp);
1758
1759
  fclose( file->fp);
1759
1760
  /* In case of failure, re-open the includer */
1760
- if ((fp = fopen( fullname, "r")) == NULL) {
1761
- file->fp = fopen( cur_fullname, "r");
1761
+ if ((fp = mcpp_fopen( fullname, "r")) == NULL) {
1762
+ file->fp = mcpp_fopen( cur_fullname, "r");
1762
1763
  fseek( file->fp, file->pos, SEEK_SET);
1763
1764
  goto false;
1764
1765
  }
1765
1766
  if (max_open == 0) /* Remember the limit of the system */
1766
1767
  max_open = include_nest;
1767
- } else if (fp == NULL) /* No read permission */
1768
+ } else if (fp == NULL) /* No read permission */
1768
1769
  goto false;
1769
1770
  /* Truncate buffer of the includer to save memory */
1770
1771
  len = (int) (file->bptr - file->buffer);
@@ -1821,7 +1822,7 @@ void add_file(
1821
1822
  FILEINFO * file;
1822
1823
  const char * too_many_include_nest =
1823
1824
  "More than %.0s%ld nesting of #include"; /* _F_ _W4_ */
1824
-
1825
+
1825
1826
  //
1826
1827
  // When encoding is UTF-8, skip BOM if present.
1827
1828
  //
@@ -2698,3 +2699,39 @@ void clear_filelist( void)
2698
2699
  free( (void *) fnamelist);
2699
2700
  free( (void *) once_list);
2700
2701
  }
2702
+
2703
+ #ifdef _WIN32
2704
+ # include <Windows.h>
2705
+ #endif
2706
+
2707
+ FILE* mcpp_fopen(const char* filename, const char* mode)
2708
+ {
2709
+ #ifdef _WIN32
2710
+ FILE* f = 0;
2711
+ if(filename && mode)
2712
+ {
2713
+ int wfilenameLength = strlen(filename) + 1;
2714
+ wchar_t* wfilename = malloc(wfilenameLength * sizeof(wchar_t));
2715
+ if(wfilename)
2716
+ {
2717
+ if(MultiByteToWideChar(CP_UTF8, 0, filename, -1, wfilename, wfilenameLength))
2718
+ {
2719
+ int wmodeLength = strlen(mode) + 1;
2720
+ wchar_t* wmode = malloc(wmodeLength * sizeof(wchar_t));
2721
+ if(wmode)
2722
+ {
2723
+ if(MultiByteToWideChar(CP_UTF8, 0, mode, -1, wmode, wmodeLength))
2724
+ {
2725
+ _wfopen_s(&f, wfilename, wmode);
2726
+ }
2727
+ free(wmode);
2728
+ }
2729
+ }
2730
+ free(wfilename);
2731
+ }
2732
+ }
2733
+ return f;
2734
+ #else
2735
+ return fopen(filename, mode);
2736
+ #endif
2737
+ }
@@ -9,7 +9,7 @@
9
9
 
10
10
  Gem::Specification.new do |s|
11
11
  s.name = 'zeroc-ice'
12
- s.version = '3.6.2'
12
+ s.version = '3.6.3'
13
13
  s.summary = "ZeroC Ice for Ruby"
14
14
  s.description = <<-eos
15
15
  The Internet Communications Engine (Ice) provides a robust, proven
@@ -8,7 +8,7 @@
8
8
  #
9
9
  # **********************************************************************
10
10
  #
11
- # Ice version 3.6.2
11
+ # Ice version 3.6.3
12
12
  #
13
13
  # <auto-generated>
14
14
  #
@@ -8,7 +8,7 @@
8
8
  #
9
9
  # **********************************************************************
10
10
  #
11
- # Ice version 3.6.2
11
+ # Ice version 3.6.3
12
12
  #
13
13
  # <auto-generated>
14
14
  #
@@ -8,7 +8,7 @@
8
8
  #
9
9
  # **********************************************************************
10
10
  #
11
- # Ice version 3.6.2
11
+ # Ice version 3.6.3
12
12
  #
13
13
  # <auto-generated>
14
14
  #
@@ -8,7 +8,7 @@
8
8
  #
9
9
  # **********************************************************************
10
10
  #
11
- # Ice version 3.6.2
11
+ # Ice version 3.6.3
12
12
  #
13
13
  # <auto-generated>
14
14
  #