char *MultiMappingMatch( char *mydata, char filters[MAX_FILTERUNITS][MAX_FILTERSIZE], long *start, long tot, char fcase ) { if ( mydata ){ long incnum=0, excnum=0, foundinc = 0, foundexc = 0,i; char pattern[MAX_FILTERSIZE]; for ( i = *start; i<tot; i++) { *start = i+1; if ( filters[i][0] != '!' ) { char *thename, *s, *d; d = pattern; s = filters[i]; thename = mystrrchr( s, MAPPING_DELIM ); while( s < thename ) *d++ = *s++; *d++ = 0; // newdynamic content group, where we extract a variable and use its value. if ( thename[1] == '?' ) { char *var = mystrstr( mydata, pattern ); if ( var ) { char *start = NULL, c; while (c = *var) { if (c == '=') start = var+1; if (c == ';' || c == '&' || !c) { *var = 0; continue; } var++; } return start; } } else // basic match, if filter exists in mydata then return filter name if ( match( mydata, pattern, fcase ) ){ return thename+1; } } } } return 0; }
int main(void) { printf("\n\n"); char string[17]; char *ptr,c='r'; char d[20]="GoldenGlobal"; char *s="View"; char *s1 = "Hello,Programmer"; char *s2 = "Hello,Programmer!"; int r; strcpy(string,"Thisisastring"); ptr=mystrrchr(string,c); if(ptr) printf("The character %c is at position:%s\n" , c, ptr); else printf("The character was notfound\n"); printf("\nfinish\n"); mystrcat(d,s); printf("%s\n", d); mystrncat(d,s,2); printf("%s",d); printf("\n"); r = memcmp(s1,s2,strlen(s1)); print(r); r = mymemcmp(s1,s2,strlen(s1)); print(r); printf("finish \n"); r = strcmp(s1,s2); print(r); // r = mystrcmp(s1,s2); print(r); r = linuxstrcmp(s1,s2); print(r); return 0; }
static HRESULT WINAPI Dispatch_Invoke(IDispatch *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pdp, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) { switch(dispIdMember) { case DISPID_TESTOBJ_OK: { VARIANT *expr, *msg; ok(wFlags == INVOKE_FUNC, "wFlags = %x\n", wFlags); ok(pdp->cArgs == 2, "cArgs = %d\n", pdp->cArgs); ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs); expr = pdp->rgvarg+1; if(V_VT(expr) == (VT_VARIANT|VT_BYREF)) expr = V_VARIANTREF(expr); msg = pdp->rgvarg; if(V_VT(msg) == (VT_VARIANT|VT_BYREF)) msg = V_VARIANTREF(msg); ok(V_VT(msg) == VT_BSTR, "V_VT(psp->rgvargs) = %d\n", V_VT(msg)); ok(V_VT(expr) == VT_BOOL, "V_VT(psp->rgvargs+1) = %d\n", V_VT(expr)); ok(V_BOOL(expr), "%s: %s\n", script_name, wine_dbgstr_w(V_BSTR(msg))); if(pVarResult) V_VT(pVarResult) = VT_EMPTY; break; } case DISPID_TESTOBJ_TRACE: ok(wFlags == INVOKE_FUNC, "wFlags = %x\n", wFlags); ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs); ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs); ok(V_VT(pdp->rgvarg) == VT_BSTR, "V_VT(psp->rgvargs) = %d\n", V_VT(pdp->rgvarg)); trace("%s: %s\n", script_name, wine_dbgstr_w(V_BSTR(pdp->rgvarg))); if(pVarResult) V_VT(pVarResult) = VT_EMPTY; break; case DISPID_TESTOBJ_REPORTSUCCESS: CHECK_EXPECT(reportSuccess); ok(wFlags == INVOKE_FUNC, "wFlags = %x\n", wFlags); ok(pdp->cArgs == 0, "cArgs = %d\n", pdp->cArgs); ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs); if(pVarResult) V_VT(pVarResult) = VT_EMPTY; break; case DISPID_TESTOBJ_WSCRIPTFULLNAME: { WCHAR fullName[MAX_PATH]; DWORD res; ok(wFlags == INVOKE_PROPERTYGET, "wFlags = %x\n", wFlags); ok(pdp->cArgs == 0, "cArgs = %d\n", pdp->cArgs); ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs); V_VT(pVarResult) = VT_BSTR; res = GetModuleFileNameExW(wscript_process, NULL, fullName, sizeof(fullName)/sizeof(WCHAR)); if(res == 0) return E_FAIL; if(!(V_BSTR(pVarResult) = SysAllocString(fullName))) return E_OUTOFMEMORY; break; } case DISPID_TESTOBJ_WSCRIPTPATH: { WCHAR fullPath[MAX_PATH]; DWORD res; const WCHAR *pos; ok(wFlags == INVOKE_PROPERTYGET, "wFlags = %x\n", wFlags); ok(pdp->cArgs == 0, "cArgs = %d\n", pdp->cArgs); ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs); V_VT(pVarResult) = VT_BSTR; res = GetModuleFileNameExW(wscript_process, NULL, fullPath, sizeof(fullPath)/sizeof(WCHAR)); if(res == 0) return E_FAIL; pos = mystrrchr(fullPath, '\\'); if(!(V_BSTR(pVarResult) = SysAllocStringLen(fullPath, pos-fullPath))) return E_OUTOFMEMORY; break; } case DISPID_TESTOBJ_WSCRIPTSCRIPTNAME: { char fullPath[MAX_PATH]; char *pos; long res; ok(wFlags == INVOKE_PROPERTYGET, "wFlags = %x\n", wFlags); ok(pdp->cArgs == 0, "cArgs = %d\n", pdp->cArgs); ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs); V_VT(pVarResult) = VT_BSTR; res = GetFullPathNameA(script_name, sizeof(fullPath)/sizeof(WCHAR), fullPath, &pos); if(!res || res > sizeof(fullPath)/sizeof(WCHAR)) return E_FAIL; if(!(V_BSTR(pVarResult) = SysAllocString(a2bstr(pos)))) return E_OUTOFMEMORY; break; } case DISPID_TESTOBJ_WSCRIPTSCRIPTFULLNAME: { char fullPath[MAX_PATH]; long res; ok(wFlags == INVOKE_PROPERTYGET, "wFlags = %x\n", wFlags); ok(pdp->cArgs == 0, "cArgs = %d\n", pdp->cArgs); ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs); V_VT(pVarResult) = VT_BSTR; res = GetFullPathNameA(script_name, sizeof(fullPath)/sizeof(WCHAR), fullPath, NULL); if(!res || res > sizeof(fullPath)/sizeof(WCHAR)) return E_FAIL; if(!(V_BSTR(pVarResult) = SysAllocString(a2bstr(fullPath)))) return E_OUTOFMEMORY; break; } default: ok(0, "unexpected dispIdMember %d\n", dispIdMember); return E_NOTIMPL; } return S_OK; }