Changeset 1786


Ignore:
Timestamp:
2000-12-12T15:00:05+13:00 (23 years ago)
Author:
kjm18
Message:

fixed the handling of #x in the query string - only #n where n is a number
are treated as references to history items. So #icus (stem, case) will be left
in the query string.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl/src/recpt/historydb.cpp

    r1285 r1786  
    201201        records[num].save=tset;
    202202      }
    203     }}
    204     else { // dodgy format
    205       // error message
    206203    }
     204      }
     205      else { // dodgy format
     206    // error message
     207      }
    207208     
    208209    }
    209210    numbegin++;
    210211  } // while
    211    
     212 
    212213  HistRecordmap::iterator recbegin = records.begin();
    213214  HistRecordmap::iterator recend = records.end();
     
    299300  if (it==end) return true;  // no need to swap anything
    300301   
    301  
     302  bool result=true;
    302303  text_t queryresult = "";
    303304  text_t historyfile = filename_cat(gsdlhome, "etc", "history.db");
     
    318319      queryresult += substr(begin, it);
    319320      it++;
    320       while(*it>='0'&&*it<='9') it++;
     321      if (*it<'0' || *it>'9') {
     322    queryresult.push_back('#'); // put the hash back if its not next to a number
     323      }     
     324      else {
     325    while(*it>='0'&&*it<='9') it++;
     326    result = false;
     327      }
    321328      begin=it;
    322329      it=findchar(begin, end, '#');
     
    324331    queryresult += substr(begin, end);
    325332    query = queryresult;
    326     return false;
    327   }
    328   bool result=true;
     333    return result;
     334  }
    329335
    330336  // if have got to here, have a previous history in historyresult
     
    349355      if (*begin==text_t('#')) {
    350356    begin++;
    351     while(begin !=end && *begin>='0'&&*begin<='9') {
    352       querynum.push_back(*begin);
    353       begin++;
     357    if(*begin<'0'||*begin>'9') { // not a history ref, leave in
     358      queryresult.push_back('#');
    354359    }
    355         text_t oldquery = historymap[querynum];
    356     if (oldquery !="") {   // valid entry
    357       parse_saved_args(oldquery, "q", newquery);
    358       decode_cgi_arg(newquery);
    359       queryresult += newquery;
     360    else { // history ref
     361      while(begin !=end && *begin>='0'&&*begin<='9') {
     362        querynum.push_back(*begin);
     363        begin++;
     364      }
     365      text_t oldquery = historymap[querynum];
     366      if (oldquery !="") {   // valid entry
     367        parse_saved_args(oldquery, "q", newquery);
     368        decode_cgi_arg(newquery);
     369        queryresult += newquery;
     370      }
     371      else {
     372        result=false; // have replaced #n with nothing
     373      }
     374      querynum.clear();
    360375    }
    361     else {
    362       result=false;
    363     }
    364     querynum.clear();
    365         // else do nothing (replace #x with nothing)
    366       } // if
     376      } // if #
    367377      else {
    368378    queryresult.push_back(*begin);
     
    407417      if (*begin==text_t('#')) {
    408418    begin++;
    409     while(begin !=end && *begin>='0'&&*begin<='9') {
    410       querynum.push_back(*begin);
    411       begin++;
     419    if ( *begin<'0' || *begin>'9') { // not a ref
     420      queryresult.push_back('#');
    412421    }
    413     if(records.count(querynum)>0) { // valid entry
    414       if (!records[querynum].save){ // referenced record to be deleted
    415         // get the q arg out of referenced query
    416         parse_saved_args(records[querynum].entry, "q", newquery);
    417         decode_cgi_arg(newquery);
    418         queryresult += newquery;
    419         changed=true;
     422    else {
     423      while(begin !=end && *begin>='0'&&*begin<='9') {
     424        querynum.push_back(*begin);
     425        begin++;
    420426      }
    421       else { // leave the #x in
    422        queryresult.push_back('#');
    423        queryresult +=  querynum;
    424       }
     427      if(records.count(querynum)>0) { // valid entry
     428        if (!records[querynum].save){ // referenced record to be deleted
     429          // get the q arg out of referenced query
     430          parse_saved_args(records[querynum].entry, "q", newquery);
     431          decode_cgi_arg(newquery);
     432          queryresult += newquery;
     433          changed=true;
     434        }
     435        else { // leave the #x in
     436          queryresult.push_back('#');
     437          queryresult +=  querynum;
     438        }
     439      }// else do nothing (replace #x with nothing)
     440      querynum.clear();
     441      newquery.clear();
    425442    }
    426     querynum.clear();
    427     newquery.clear();
    428     // else do nothing (replace #x with nothing)
    429443      } // if its a hash
    430444      else {
Note: See TracChangeset for help on using the changeset viewer.