mirror of
				https://gitlab.alpinelinux.org/alpine/aports.git
				synced 2025-10-31 16:31:40 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| --- ./stringy.c.orig
 | |
| +++ ./stringy.c
 | |
| @@ -8,49 +8,27 @@
 | |
|  
 | |
|  
 | |
|  static int endswith(lua_State *L) {
 | |
| -    const char *string = luaL_checkstring(L, 1);
 | |
| -    int string_len = lua_objlen(L, 1);
 | |
| +    size_t string_len, token_len;
 | |
| +    const char *string = luaL_checklstring(L, 1, &string_len);
 | |
| +    const char *token = luaL_checklstring(L, 2, &token_len);
 | |
| +    int end = 0;
 | |
|  
 | |
| -    const char *token = luaL_checkstring(L, 2);
 | |
| -    int token_len = lua_objlen(L, 2);
 | |
| -
 | |
| -    int ti = token_len, si = string_len, end = 1;
 | |
|      if(token_len <= string_len){
 | |
| -        while(ti > 0) {
 | |
| -            if(string[--si] != token[--ti]){ 
 | |
| -                end = 0;
 | |
| -                break;
 | |
| -
 | |
| -            }
 | |
| -        }
 | |
| +        string += string_len - token_len;
 | |
| +	end = memcmp(string, token, token_len) == 0;
 | |
|      }
 | |
| -    else {
 | |
| -        end = 0;
 | |
| -    }
 | |
|      lua_pushboolean(L, end);
 | |
|      return 1;
 | |
|  }
 | |
|  
 | |
|  static int startswith(lua_State *L) {
 | |
| -    const char *string = luaL_checkstring(L, 1);
 | |
| -    int string_len = lua_objlen(L, 1);
 | |
| +    size_t string_len, token_len;
 | |
| +    const char *string = luaL_checklstring(L, 1, &string_len);
 | |
| +    const char *token = luaL_checklstring(L, 2, &token_len);
 | |
| +    int start = 0;
 | |
|  
 | |
| -    const char *token = luaL_checkstring(L, 2);
 | |
| -    int token_len = lua_objlen(L, 2);
 | |
| -    int i, start = 1;
 | |
| -    // please make this less ugly... 
 | |
| -    if(token_len <= string_len){
 | |
| -        while(i < token_len) {
 | |
| -            if(string[i] != token[i]){
 | |
| -                start = 0;
 | |
| -                break;
 | |
| -            }
 | |
| -            i++;
 | |
| -        }
 | |
| -    }
 | |
| -    else {
 | |
| -        start = 0;
 | |
| -    }
 | |
| +    if(token_len <= string_len)
 | |
| +        start = memcmp(string, token, token_len) == 0;
 | |
|      lua_pushboolean(L, start);
 | |
|      return 1;
 | |
|  }
 |