Re: [classad-users] ClassAd Parser with quotes


Date: Thu, 27 May 2004 16:53:56 -0500 (CDT)
From: Alain Roy <roy@xxxxxxxxxxx>
Subject: Re: [classad-users] ClassAd Parser with quotes
 ClassAdParser par ;
 string attr = "other.GlueCEStateStatus == \"Production\"";
 cout << par.ParseExpression(attr, true)  << endl ;
Yup, that should work, but it doesn't. It's definitely a bug.

A bug fix will be in the next release, which we'll try to do within a week.

You have two workarounds in the meantime. A lousy one, and the real one.

1) Add a space before the final quote:

string attr = "other.GlueCEStateStatus == \"Production\" ";

2) Look in lexer.C around line 455. You'll see this code:

while (isspace(tempch)) {
    tempch = lexSource->ReadCharacter();
}
if (tempch != delim) {  // a new token exists after the string
    lexSource->UnreadCharacter();
    stringComplete = true;
} else {    // the adjacent string...
Change it to:

while (isspace(tempch)) {
    tempch = lexSource->ReadCharacter();
}
if (tempch != delim) {  // a new token exists after the string
    if (tempch != -1) {
        lexSource->UnreadCharacter();
    }
    stringComplete = true;
} else {    // the adjacent string...
-alain

Condor Classads Info:
http://www.cs.wisc.edu/condor/classad/


[← Prev in Thread] Current Thread [Next in Thread→]