diff options
author | Matthew Newhook <matthew@zeroc.com> | 2007-08-24 14:41:39 +0800 |
---|---|---|
committer | Matthew Newhook <matthew@zeroc.com> | 2007-08-24 14:41:39 +0800 |
commit | 9ff48829c8669fbef8c7ca6a9b8bab99c77db2f9 (patch) | |
tree | 7fa0a0406be0386a8314b2e8c742f29bf127b70d /cpp/demo/book/lifecycle/Parser.cpp | |
parent | Merge branch 'bug1319' (diff) | |
download | ice-9ff48829c8669fbef8c7ca6a9b8bab99c77db2f9.tar.bz2 ice-9ff48829c8669fbef8c7ca6a9b8bab99c77db2f9.tar.xz ice-9ff48829c8669fbef8c7ca6a9b8bab99c77db2f9.zip |
Squashed commit of the following:
commit d74cec9e6c77e70b33883f517b1bb6f97b2ffa5e
Author: Matthew Newhook <matthew@zeroc.com>
Date: Fri Aug 24 14:33:06 2007 +0800
updates.
commit 643b31f979a00ea5397206ca59f20bb58c62660e
Author: Matthew Newhook <matthew@zeroc.com>
Date: Fri Aug 24 14:32:35 2007 +0800
added some .gitignore rules.
commit 1510d38798976753b435f32308e79acd9fcd2722
Author: Matthew Newhook <matthew@zeroc.com>
Date: Fri Aug 24 14:05:10 2007 +0800
removed bogus use of 127.0.0.1
commit 3c91e89b01af20a0dacfdbc1fbeca1c67c796656
Author: Matthew Newhook <matthew@zeroc.com>
Date: Fri Aug 24 14:01:43 2007 +0800
Verify that cygwin python is used under Windows.
commit ff160725c051eedb28a42d9dd69f0d8aa297e522
Author: Matthew Newhook <matthew@zeroc.com>
Date: Fri Aug 24 13:55:03 2007 +0800
bump timeout for the node to terminate. killing the node leaves the servers running under cygwin
commit ec3bddb58e861f906bf39aee1fa818c3e9a50000
Author: Matthew Newhook <matthew@zeroc.com>
Date: Fri Aug 24 13:48:55 2007 +0800
added back accidently removed files.
commit f9ea2f552d7f576ebfa878669925f4184a89257b
Author: Matthew Newhook <matthew@zeroc.com>
Date: Fri Aug 24 13:47:47 2007 +0800
http://bugzilla.zeroc.com/bugzilla/show_bug.cgi?id=2427, http://bugzilla.zeroc.com/bugzilla/show_bug.cgi?id=2422
commit 8a309ca0036dba7ecbd577edb2d737fa41174a5a
Author: Matthew Newhook <matthew@zeroc.com>
Date: Fri Aug 24 10:06:53 2007 +0800
added ruby support to the expect scripts.
commit 34597c1ee6d80d6754c9e925bd376125dd104a5f
Author: Matthew Newhook <matthew@zeroc.com>
Date: Fri Aug 24 09:26:10 2007 +0800
added pexpect to git repository.
commit 4bd2e1f2b52bcb9906b03ac216db686b8229b545
Author: Matthew Newhook <matthew@zeroc.com>
Date: Thu Aug 23 18:49:51 2007 +0800
numerous UNIX expect script fixes.
commit 25ab4a812f45a6e908d5d2d7ab03e557d79afa9f
Author: Matthew Newhook <matthew@zeroc.com>
Date: Thu Aug 23 16:47:08 2007 +0800
generate configuration files for IceGrid icebox/iceboxd
commit 6bb57bf7ed21d7256963c228aaf0b20657367a47
Author: Matthew Newhook <matthew@zeroc.com>
Date: Thu Aug 23 15:16:55 2007 +0800
added python & C# support to the expect scripts.
commit 08f1a59971ad3a52a4357069554dcc309b2d062b
Author: Matthew Newhook <matthew@zeroc.com>
Date: Wed Aug 22 14:23:53 2007 +0800
java expect scripts complete.
commit 3918f4ff3beea3005001bc55c5502c0825d8b7ea
Author: Matthew Newhook <matthew@zeroc.com>
Date: Wed Aug 22 13:30:31 2007 +0800
first set of expect changes.
Diffstat (limited to 'cpp/demo/book/lifecycle/Parser.cpp')
-rw-r--r-- | cpp/demo/book/lifecycle/Parser.cpp | 132 |
1 files changed, 46 insertions, 86 deletions
diff --git a/cpp/demo/book/lifecycle/Parser.cpp b/cpp/demo/book/lifecycle/Parser.cpp index c81038284a6..eff78f9076c 100644 --- a/cpp/demo/book/lifecycle/Parser.cpp +++ b/cpp/demo/book/lifecycle/Parser.cpp @@ -297,92 +297,74 @@ Parser::destroy(const std::list<string>& names) void Parser::getInput(char* buf, int& result, int maxSize) { - if(isatty(fileno(yyin))) - { #ifdef HAVE_READLINE - const char* prompt = parser->getPrompt(); - char* line = readline(const_cast<char*>(prompt)); - if(!line) + const char* prompt = parser->getPrompt(); + char* line = readline(const_cast<char*>(prompt)); + if(!line) + { + result = 0; + } + else + { + if(*line) { + add_history(line); + } + + result = strlen(line) + 1; + if(result > maxSize) + { + free(line); + error("input line too long"); result = 0; } else { - if(*line) - { - add_history(line); - } - - result = strlen(line) + 1; - if(result > maxSize) - { - free(line); - error("input line too long"); - result = 0; - } - else - { - strcpy(buf, line); - strcat(buf, "\n"); - free(line); - } + strcpy(buf, line); + strcat(buf, "\n"); + free(line); } + } #else - cout << parser->getPrompt() << flush; + cout << parser->getPrompt() << flush; - string line; - while(true) + string line; + while(true) + { + char c = static_cast<char>(getc(yyin)); + if(c == EOF) { - char c = static_cast<char>(getc(yyin)); - if(c == EOF) + if(line.size()) { - if(line.size()) - { - line += '\n'; - } - break; + line += '\n'; } + break; + } - line += c; + line += c; - if(c == '\n') - { - break; - } - } - - result = static_cast<int>(line.length()); - if(result > maxSize) + if(c == '\n') { - error("input line too long"); - buf[0] = EOF; - result = 1; - } - else - { - strcpy(buf, line.c_str()); + break; } + } -#endif + result = static_cast<int>(line.length()); + if(result > maxSize) + { + error("input line too long"); + buf[0] = EOF; + result = 1; } else { - if(((result = static_cast<int>(fread(buf, 1, maxSize, yyin))) == 0) && ferror(yyin)) - { - error("input in flex scanner failed"); - buf[0] = EOF; - result = 1; - } + strcpy(buf, line.c_str()); } -} -void -Parser::nextLine() -{ - _currentLine++; +#endif } void @@ -394,8 +376,6 @@ Parser::continueLine() const char* Parser::getPrompt() { - assert(isatty(fileno(yyin))); - if(_continue) { _continue = false; @@ -410,15 +390,8 @@ Parser::getPrompt() void Parser::error(const char* s) { - if(!isatty(fileno(yyin))) - { - cerr << _currentFile << ':' << _currentLine << ": " << s << endl; - _errors++; - } - else - { - cerr << "error: " << s << endl; - } + cerr << "error: " << s << endl; + _errors++; } void @@ -430,14 +403,7 @@ Parser::error(const string& s) void Parser::warning(const char* s) { - if(!isatty(fileno(yyin))) - { - cerr << _currentFile << ':' << _currentLine << ": warning: " << s << endl; - } - else - { - cerr << "warning: " << s << endl; - } + cerr << "warning: " << s << endl; } void @@ -459,13 +425,7 @@ Parser::parse(bool debug) yyin = stdin; assert(yyin); - _currentFile = ""; - _currentLine = 0; _continue = false; - nextLine(); - - //_foundBooks.clear(); - //_current = _foundBooks.end(); int status = yyparse(); if(_errors) |