diff options
author | Dwayne Boone <dwayne@zeroc.com> | 2008-11-20 10:22:31 -0330 |
---|---|---|
committer | Dwayne Boone <dwayne@zeroc.com> | 2008-11-20 10:22:31 -0330 |
commit | aa4f3340e17e227a26659a75a8f60d24c2dd5323 (patch) | |
tree | c118d1d651d48f236c911d25f8a3f3b34320783f /cpp/src/slice2java | |
parent | Bug 3550 - slice compiler not able to open tmp file on Vista (diff) | |
download | ice-aa4f3340e17e227a26659a75a8f60d24c2dd5323.tar.bz2 ice-aa4f3340e17e227a26659a75a8f60d24c2dd5323.tar.xz ice-aa4f3340e17e227a26659a75a8f60d24c2dd5323.zip |
Refactored CtrlCHandler usage in slice compilers
Diffstat (limited to 'cpp/src/slice2java')
-rw-r--r-- | cpp/src/slice2java/.depend | 2 | ||||
-rw-r--r-- | cpp/src/slice2java/Main.cpp | 29 |
2 files changed, 25 insertions, 6 deletions
diff --git a/cpp/src/slice2java/.depend b/cpp/src/slice2java/.depend index 07a9fd98908..e140be10882 100644 --- a/cpp/src/slice2java/.depend +++ b/cpp/src/slice2java/.depend @@ -1,2 +1,2 @@ Gen$(OBJEXT): Gen.cpp $(includedir)/IceUtil/DisableWarnings.h ./Gen.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Slice/JavaUtil.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/Slice/Checksum.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Iterator.h -Main$(OBJEXT): Main.cpp $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/Slice/Preprocessor.h $(includedir)/Slice/SignalHandler.h ./Gen.h $(includedir)/Slice/Parser.h $(includedir)/Slice/JavaUtil.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/Slice/Checksum.h +Main$(OBJEXT): Main.cpp $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/Slice/Preprocessor.h ./Gen.h $(includedir)/Slice/Parser.h $(includedir)/Slice/JavaUtil.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/Slice/Checksum.h diff --git a/cpp/src/slice2java/Main.cpp b/cpp/src/slice2java/Main.cpp index bfee9cfce90..b65425350c6 100644 --- a/cpp/src/slice2java/Main.cpp +++ b/cpp/src/slice2java/Main.cpp @@ -9,8 +9,8 @@ #include <IceUtil/Options.h> #include <IceUtil/CtrlCHandler.h> +#include <IceUtil/StaticMutex.h> #include <Slice/Preprocessor.h> -#include <Slice/SignalHandler.h> #include <Gen.h> #ifdef __BCPLUSPLUS__ @@ -20,6 +20,17 @@ using namespace std; using namespace Slice; +static IceUtil::StaticMutex _mutex = ICE_STATIC_MUTEX_INITIALIZER; +static bool _interrupted = false; + +void +interruptedCallback(int signal) +{ + IceUtil::StaticMutex::Lock lock(_mutex); + + _interrupted = true; +} + void usage(const char* n) { @@ -175,12 +186,11 @@ main(int argc, char* argv[]) ChecksumMap checksums; + IceUtil::CtrlCHandler ctrlCHandler; + ctrlCHandler.setCallback(interruptedCallback); + for(i = args.begin(); i != args.end(); ++i) { - SignalHandler::clearCleanupFileList(); - IceUtil::CtrlCHandler ctrlCHandler; - ctrlCHandler.setCallback(SignalHandler::removeFilesOnInterrupt); - if(depend) { Preprocessor icecpp(argv[0], *i, cppArgs); @@ -259,6 +269,15 @@ main(int argc, char* argv[]) p->destroy(); } } + + { + IceUtil::StaticMutex::Lock lock(_mutex); + + if(_interrupted) + { + return EXIT_FAILURE; + } + } } if(!checksumClass.empty()) |