patch 9.0.1464: strace filetype detection is expensive

Problem:    Strace filetype detection is expensive.
Solution:   Match with a cheap pattern first. (Federico Mengozzi,
            closes #12220)
This commit is contained in:
Federico Mengozzi
2023-04-17 22:31:38 +01:00
committed by Bram Moolenaar
parent 4c42c7eef4
commit 6e5a9f9482
3 changed files with 11 additions and 1 deletions

View File

@ -338,7 +338,9 @@ def DetectFromText(line1: string)
set ft=virata
# Strace
elseif line1 =~ '[0-9:.]* *execve(' || line1 =~ '^__libc_start_main'
# inaccurate fast match first, then use accurate slow match
elseif (line1 =~ 'execve(' && line1 =~ '^[0-9:.]* *execve(')
|| line1 =~ '^__libc_start_main'
set ft=strace
# VSE JCL

View File

@ -733,6 +733,11 @@ func Test_filetype_detection()
filetype off
endfunc
" Content lines that should not result in filetype detection
let s:false_positive_checks = {
\ '': [['test execve("/usr/bin/pstree", ["pstree"], 0x7ff0 /* 63 vars */) = 0']],
\ }
" Filetypes detected from the file contents by scripts.vim
let s:script_checks = {
\ 'virata': [['% Virata'],
@ -824,6 +829,7 @@ func Run_script_detection(test_dict)
endfunc
func Test_script_detection()
call Run_script_detection(s:false_positive_checks)
call Run_script_detection(s:script_checks)
call Run_script_detection(s:script_env_checks)
endfunc

View File

@ -695,6 +695,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1464,
/**/
1463,
/**/