bei mir haben alle Versionen seit 2.4.0 das geschilderte "Problem", irgendwie scheinen die eher für Fehler oder Ungenauigkeiten im Code anfällig zu sein - trotzdem müsste man es zum Laufen kriegen, sonst würden sie ja auch unter 2.4.0 nicht laufen.
- - - Aktualisiert - - -
PS,
hier übrigens meine Parserfunktionen, um username + pwd herauszufiltern:
Code:
//----------------------------------------------------------------------------
// String functions
//----------------------------------------------------------------------------
int16_t strstrpos(char * haystack, char * needle) // find 1st occurance of substr in str
{
char *p = strstr(haystack, needle);
if (p) return p - haystack;
return -1; // Not found = -1.
}
//-------------------------------------------------------
const int MAXLEN = 1024;
const int TOKLEN = 64;
//-------------------------------------------------------
char * cstringarg( char* haystack, char* vname, char* sarg ) {
int i=0, pos=-1;
unsigned char ch=0xff;
const char* kini = "&"; // start of varname: '&'
const char* kin2 = "?"; // start of varname: '?'
const char* kequ = "="; // end of varname, start of argument: '='
char needle[TOKLEN] = ""; // complete pattern: &varname=abc1234
strcpy(sarg,"");
strcpy(needle, kini);
strcat(needle, vname);
strcat(needle, kequ);
pos = strstrpos(haystack, needle);
if(pos==-1) {
needle[0]=kin2[0];
pos = strstrpos(haystack, needle);
if(pos==-1) return sarg;
}
pos=pos+strlen(vname)+2; // start of value = kini+vname+kequ
while( (ch!='&')&&(ch!='\0') ) {
ch=haystack[pos+i];
if( (ch=='&')||(ch==';')||(ch==' ')||(ch=='\0') ||(ch=='\n')
||(i+pos>=strlen(haystack))||(i>TOKLEN-1) ) {
sarg[i]='\0';
return sarg;
}
if( (ch!='&') ) {
sarg[i]=ch;
i++;
}
}
return sarg;
}
// *SNIP*
cstringarg(strinput, "uname", struname); // uname
cstringarg(strinput, "upwd", strupwd); // upwd
sie funktionieren sehr gut, und sehr wschl liegt hier wirklich nicht das Problem - lasse mich aber gern vom Gegenteil überzeugen!
Lesezeichen