summaryrefslogtreecommitdiff
path: root/cpp/demo/book/lifecycle/Parser.cpp
diff options
context:
space:
mode:
authorMatthew Newhook <matthew@zeroc.com>2007-08-24 14:41:39 +0800
committerMatthew Newhook <matthew@zeroc.com>2007-08-24 14:41:39 +0800
commit9ff48829c8669fbef8c7ca6a9b8bab99c77db2f9 (patch)
tree7fa0a0406be0386a8314b2e8c742f29bf127b70d /cpp/demo/book/lifecycle/Parser.cpp
parentMerge branch 'bug1319' (diff)
downloadice-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.cpp132
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)