Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static int compare(cell *cstr1,cell *cstr2,int ignorecase,int length,int offs1)
- {
- int index;
- cell c1=0,c2=0;
- for (index=0; index<length; index++) {
- c1=extractchar(cstr1,index+offs1,ignorecase);
- c2=extractchar(cstr2,index,ignorecase);
- assert(c1!=0 && c2!=0); /* string lengths are already checked, so zero-bytes should not occur */
- if (c1!=c2)
- break;
- } /* for */
- if (c1<c2)
- return -1;
- if (c1>c2)
- return 1;
- return 0;
- }
- /* strcmp(const string1[], const string2[], bool:ignorecase=false, length=cellmax)
- */
- static cell AMX_NATIVE_CALL n_strcmp(AMX *amx,cell *params)
- {
- cell *cstr1,*cstr2;
- int len1,len2,len;
- cell result;
- amx_GetAddr(amx,params[1],&cstr1);
- amx_GetAddr(amx,params[2],&cstr2);
- /* get the maximum length to compare */
- amx_StrLen(cstr1,&len1);
- amx_StrLen(cstr2,&len2);
- len=len1;
- if (len>len2)
- len=len2;
- if (len>params[4])
- len=params[4];
- if (len==0)
- return 0;
- result=compare(cstr1,cstr2,params[3],len,0);
- if (result==0 && len!=params[4])
- result=len1-len2;
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment