67 commandLine(
""), cursorPosition(1),
68 commandHistory(maxhist), maxHistory(maxhist),
69 currentHistoryNo(1), relativeHistoryIndex(0)
76 const char* path = std::getenv(
"HOME");
77 if( path == NULL )
return;
82 std::ifstream histfile;
86 while (histfile.good()) {
87 if(histfile.eof())
break;
89 histfile.getline(linebuf,
BUFSIZE);
102 const char* path = std::getenv(
"HOME");
103 if( path == NULL )
return;
108 std::ofstream histfile;
109 histfile.open(fname, std::ios::out);
155 std::ostringstream os;
406 if(jhead !=
G4int(G4String::npos)) {
416 if( !input.empty() ) {
419 for(
G4int i=len-1; i>=0; i--) {
420 if(input[(
size_t)i]==
'/') {
427 if(!(indx==0 && len==1)) vcmd= input(indx+1,len-indx-1);
445 if(jhead !=
G4int(G4String::npos)) {
451 size_t thead = input.find_last_of(
'/');
453 if (thead != G4String::npos) strtail = input(thead+1, input.size()-thead-1);
462 for(
G4int i=len-1; i>=0; i--) {
470 if(!(indx==0 && len==1)) vcmd= input(indx+1,len-indx-1);
474 if(atree == NULL)
return;
481 int Ndir= atree-> GetTreeEntry();
482 int Ncmd= atree-> GetCommandEntry();
485 for(
G4int idir=1; idir<=Ndir; idir++) {
486 G4String fpdir= atree-> GetTree(idir)-> GetPathName();
488 if( fpdir.
index(inputpath, 0) == 0) {
500 for(
G4int icmd=1; icmd<=Ncmd; icmd++){
501 G4String fpcmd= atree-> GetPathName() +
502 atree-> GetCommand(icmd) -> GetCommandName();
504 if( fpcmd.
index(inputpath, 0) ==0) {
518 jhead= input.
last(
' ');
519 if(jhead ==
G4int(G4String::npos)) jhead=0;
527 for(i=jt; i<=
G4int(input.length())-1; i++) dspstr+=
G4String(
' ');
530 dspstr+= (vpath + stream);
531 if (nMatch == 0) dspstr+= strtail;
532 G4cout << dspstr << std::flush;
536 input+= (vpath + stream);
537 if (nMatch==0) input+= strtail;
612 if (cc ==
'[' || cc ==
'O') {
641 }
while( cc !=
'\n');
659 while( (newCommand.length() > 0) &&
660 ( newCommand[newCommand.length()-1] ==
'_') ) {
661 newCommand.
remove(newCommand.length()-1);
666 newCommand.
append(newLine);
671 for (
size_t i=0; i<newCommand.length(); i++) {
672 if(newCommand[i] !=
' ') {
677 if( !newCommand.empty() && isMeaningfull)
StoreHistory(newCommand);
691 int nlen1= str1.length();
692 int nlen2= str2.length();
694 int nmin = nlen1<nlen2 ? nlen1 : nlen2;
697 for(
size_t i=0;
G4int(i)<nmin; i++){
698 if(str1[i]==str2[i]) {
699 strMatched+= str1[i];
741 termios tiosbuf=
tios;
743 tiosbuf.c_iflag &= ~(BRKINT | ISTRIP);
744 tiosbuf.c_iflag |= (IGNBRK | IGNPAR);
745 tiosbuf.c_lflag &= ~(ICANON | IEXTEN | ECHO);
746 tiosbuf.c_cc[VMIN] = 1;
747 tiosbuf.c_cc[VTIME] = 0;
749 tcsetattr(0, TCSAFLUSH, &tiosbuf);
757 tcsetattr(0, TCSAFLUSH, &
tios);