if exists("b:current_syntax")
finish
endif
let s:cpo_save = &cpo
set cpo&vim
syn keyword xinetdTodo          contained TODO FIXME XXX NOTE
syn region  xinetdComment       display oneline start='^\s*#' end='$'
\ contains=xinetdTodo,@Spell
syn match   xinetdService       '^\s*service\>'
\ nextgroup=xinetdServiceName skipwhite
syn match   xinetdServiceName   contained '\S\+'
\ nextgroup=xinetdServiceGroup skipwhite skipnl
syn match   xinetdDefaults      '^\s*defaults'
\ nextgroup=xinetdServiceGroup skipwhite skipnl
syn region  xinetdServiceGroup  contained transparent
\ matchgroup=xinetdServiceGroupD start='{'
\ matchgroup=xinetdServiceGroupD end='}'
\ contains=xinetdAttribute,xinetdReqAttribute,
\ xinetdDisable
syn keyword xinetdReqAttribute  contained user server protocol
\ nextgroup=xinetdStringEq skipwhite
syn keyword xinetdAttribute     contained id group bind
\ interface
\ nextgroup=xinetdStringEq skipwhite
syn match   xinetdStringEq      contained display '='
\ nextgroup=xinetdString skipwhite
syn match   xinetdString        contained display '\S\+'
syn keyword xinetdAttribute     contained type nextgroup=xinetdTypeEq skipwhite
syn match   xinetdTypeEq        contained display '='
\ nextgroup=xinetdType skipwhite
syn keyword xinetdType          contained RPC INTERNAL TCPMUX TCPMUXPLUS
\ UNLISTED
\ nextgroup=xinetdType skipwhite
syn keyword xinetdAttribute     contained flags
\ nextgroup=xinetdFlagsEq skipwhite
syn cluster xinetdFlagsC        contains=xinetdFlags,xinetdDeprFlags
syn match   xinetdFlagsEq       contained display '='
\ nextgroup=@xinetdFlagsC skipwhite
syn keyword xinetdFlags         contained INTERCEPT NORETRY IDONLY NAMEINARGS
\ NODELAY KEEPALIVE NOLIBWRAP SENSOR IPv4 IPv6
\ nextgroup=@xinetdFlagsC skipwhite
syn keyword xinetdDeprFlags     contained REUSE nextgroup=xinetdFlagsC skipwhite
syn keyword xinetdDisable       contained disable
\ nextgroup=xinetdBooleanEq skipwhite
syn match   xinetdBooleanEq     contained display '='
\ nextgroup=xinetdBoolean skipwhite
syn keyword xinetdBoolean       contained yes no
syn keyword xinetdReqAttribute  contained socket_type
\ nextgroup=xinetdSocketTypeEq skipwhite
syn match   xinetdSocketTypeEq  contained display '='
\ nextgroup=xinetdSocketType skipwhite
syn keyword xinetdSocketType    contained stream dgram raw seqpacket
syn keyword xinetdReqAttribute  contained wait
\ nextgroup=xinetdBooleanEq skipwhite
syn keyword xinetdAttribute     contained groups mdns
\ nextgroup=xinetdBooleanEq skipwhite
syn keyword xinetdAttribute     contained instances per_source rlimit_cpu
\ rlimit_data rlimit_rss rlimit_stack
\ nextgroup=xinetdUNumberEq skipwhite
syn match   xinetdUNumberEq     contained display '='
\ nextgroup=xinetdUnlimited,xinetdNumber
\ skipwhite
syn keyword xinetdUnlimited     contained UNLIMITED
syn match   xinetdNumber        contained display '\<\d\+\>'
syn keyword xinetdAttribute     contained nice
\ nextgroup=xinetdSignedNumEq skipwhite
syn match   xinetdSignedNumEq   contained display '='
\ nextgroup=xinetdSignedNumber skipwhite
syn match   xinetdSignedNumber  contained display '[+-]\=\d\+\>'
syn keyword xinetdAttribute     contained server_args
\ enabled
\ nextgroup=xinetdStringsEq skipwhite
syn match   xinetdStringsEq     contained display '='
\ nextgroup=xinetdStrings skipwhite
syn match   xinetdStrings       contained display '\S\+'
\ nextgroup=xinetdStrings skipwhite
syn keyword xinetdAttribute     contained only_from no_access passenv
\ nextgroup=xinetdStringsAdvEq skipwhite
syn match   xinetdStringsAdvEq  contained display '[+-]\=='
\ nextgroup=xinetdStrings skipwhite
syn keyword xinetdAttribute     contained access_times
\ nextgroup=xinetdTimeRangesEq skipwhite
syn match   xinetdTimeRangesEq  contained display '='
\ nextgroup=xinetdTimeRanges skipwhite
syn match   xinetdTimeRanges    contained display
\ '\%(0?\d\|1\d\|2[0-3]\):\%(0?\d\|[1-5]\d\)-\%(0?\d\|1\d\|2[0-3]\):\%(0?\d\|[1-5]\d\)'
\ nextgroup=xinetdTimeRanges skipwhite
syn keyword xinetdAttribute     contained log_type nextgroup=xinetdLogTypeEq
\ skipwhite
syn match   xinetdLogTypeEq     contained display '='
\ nextgroup=xinetdLogType skipwhite
syn keyword xinetdLogType       contained SYSLOG nextgroup=xinetdSyslogType
\ skipwhite
syn keyword xinetdLogType       contained FILE nextgroup=xinetdLogFile skipwhite
syn keyword xinetdSyslogType    contained daemon auth authpriv user mail lpr
\ news uucp ftp local0 local1 local2 local3
\ local4 local5 local6 local7
\ nextgroup=xinetdSyslogLevel skipwhite
syn keyword xinetdSyslogLevel   contained emerg alert crit err warning notice
\ info debug
syn match   xinetdLogFile       contained display '\S\+'
\ nextgroup=xinetdLogSoftLimit skipwhite
syn match   xinetdLogSoftLimit  contained display '\<\d\+\>'
\ nextgroup=xinetdLogHardLimit skipwhite
syn match   xinetdLogHardLimit  contained display '\<\d\+\>'
syn keyword xinetdAttribute     contained log_on_success
\ nextgroup=xinetdLogSuccessEq skipwhite
syn match   xinetdLogSuccessEq  contained display '[+-]\=='
\ nextgroup=xinetdLogSuccess skipwhite
syn keyword xinetdLogSuccess    contained PID HOST USERID EXIT DURATION TRAFFIC
\ nextgroup=xinetdLogSuccess skipwhite
syn keyword xinetdAttribute     contained log_on_failure
\ nextgroup=xinetdLogFailureEq skipwhite
syn match   xinetdLogFailureEq  contained display '[+-]\=='
\ nextgroup=xinetdLogFailure skipwhite
syn keyword xinetdLogFailure    contained HOST USERID ATTEMPT
\ nextgroup=xinetdLogFailure skipwhite
syn keyword xinetdReqAttribute  contained rpc_version
\ nextgroup=xinetdRPCVersionEq skipwhite
syn match   xinetdRPCVersionEq  contained display '='
\ nextgroup=xinetdRPCVersion skipwhite
syn match   xinetdRPCVersion    contained display '\d\+\%(-\d\+\)\=\>'
syn keyword xinetdReqAttribute  contained rpc_number port
\ nextgroup=xinetdNumberEq skipwhite
syn match   xinetdNumberEq      contained display '='
\ nextgroup=xinetdNumber skipwhite
syn keyword xinetdAttribute     contained env nextgroup=xinetdEnvEq skipwhite
syn match   xinetdEnvEq         contained display '+\=='
\ nextgroup=xinetdEnvName skipwhite
syn match   xinetdEnvName       contained display '[^=]\+'
\ nextgroup=xinetdEnvNameEq
syn match   xinetdEnvNameEq     contained display '=' nextgroup=xinetdEnvValue
syn match   xinetdEnvValue      contained display '\S\+'
\ nextgroup=xinetdEnvName skipwhite
syn keyword xinetdAttribute     contained banner banner_success banner_failure
\ nextgroup=xinetdPathEq skipwhite
syn keyword xinetdPPAttribute   include includedir
\ nextgroup=xinetdPath skipwhite
syn match   xinetdPathEq        contained display '='
\ nextgroup=xinetdPath skipwhite
syn match   xinetdPath          contained display '\S\+'
syn keyword xinetdAttribute     contained redirect nextgroup=xinetdRedirectEq
\ skipwhite
syn match   xinetdRedirectEq    contained display '='
\ nextgroup=xinetdRedirectIP skipwhite
syn match   xinetdRedirectIP    contained display '\S\+'
\ nextgroup=xinetdNumber skipwhite
syn keyword xinetdAttribute     contained cps nextgroup=xinetdCPSEq skipwhite
syn match   xinetdCPSEq         contained display '='
\ nextgroup=xinetdCPS skipwhite
syn match   xinetdCPS           contained display '\<\d\+\>'
\ nextgroup=xinetdNumber skipwhite
syn keyword xinetdAttribute     contained max_load nextgroup=xinetdFloatEq
\ skipwhite
syn match   xinetdFloatEq       contained display '='
\ nextgroup=xinetdFloat skipwhite
syn match   xinetdFloat         contained display '\d\+\.\d*\|\.\d\+'
syn keyword xinetdAttribute     contained umask nextgroup=xinetdOctalEq
\ skipwhite
syn match   xinetdOctalEq       contained display '='
\ nextgroup=xinetdOctal,xinetdOctalError
\ skipwhite
syn match   xinetdOctal         contained display '\<0\o\+\>'
\ contains=xinetdOctalZero
syn match   xinetdOctalZero     contained display '\<0'
syn match   xinetdOctalError    contained display '\<0\o*[89]\d*\>'
syn keyword xinetdAttribute     contained rlimit_as nextgroup=xinetdASEq
\ skipwhite
syn match   xinetdASEq          contained display '='
\ nextgroup=xinetdAS,xinetdUnlimited
\ skipwhite
syn match   xinetdAS            contained display '\d\+' nextgroup=xinetdASMult
syn match   xinetdASMult        contained display '[KM]'
syn keyword xinetdAttribute     contained deny_time nextgroup=xinetdDenyTimeEq
\ skipwhite
syn match   xinetdDenyTimeEq    contained display '='
\ nextgroup=xinetdDenyTime,xinetdNumber
\ skipwhite
syn keyword xinetdDenyTime      contained FOREVER NEVER
hi def link xinetdTodo          Todo
hi def link xinetdComment       Comment
hi def link xinetdService       Keyword
hi def link xinetdServiceName   String
hi def link xinetdDefaults      Keyword
hi def link xinetdServiceGroupD Delimiter
hi def link xinetdReqAttribute  Keyword
hi def link xinetdAttribute     Type
hi def link xinetdEq            Operator
hi def link xinetdStringEq      xinetdEq
hi def link xinetdString        String
hi def link xinetdTypeEq        xinetdEq
hi def link xinetdType          Identifier
hi def link xinetdFlagsEq       xinetdEq
hi def link xinetdFlags         xinetdType
hi def link xinetdDeprFlags     WarningMsg
hi def link xinetdDisable       Special
hi def link xinetdBooleanEq     xinetdEq
hi def link xinetdBoolean       Boolean
hi def link xinetdSocketTypeEq  xinetdEq
hi def link xinetdSocketType    xinetdType
hi def link xinetdUNumberEq     xinetdEq
hi def link xinetdUnlimited     Define
hi def link xinetdNumber        Number
hi def link xinetdSignedNumEq   xinetdEq
hi def link xinetdSignedNumber  xinetdNumber
hi def link xinetdStringsEq     xinetdEq
hi def link xinetdStrings       xinetdString
hi def link xinetdStringsAdvEq  xinetdEq
hi def link xinetdTimeRangesEq  xinetdEq
hi def link xinetdTimeRanges    Number
hi def link xinetdLogTypeEq     xinetdEq
hi def link xinetdLogType       Keyword
hi def link xinetdSyslogType    xinetdType
hi def link xinetdSyslogLevel   Number
hi def link xinetdLogFile       xinetdPath
hi def link xinetdLogSoftLimit  xinetdNumber
hi def link xinetdLogHardLimit  xinetdNumber
hi def link xinetdLogSuccessEq  xinetdEq
hi def link xinetdLogSuccess    xinetdType
hi def link xinetdLogFailureEq  xinetdEq
hi def link xinetdLogFailure    xinetdType
hi def link xinetdRPCVersionEq  xinetdEq
hi def link xinetdRPCVersion    xinetdNumber
hi def link xinetdNumberEq      xinetdEq
hi def link xinetdEnvEq         xinetdEq
hi def link xinetdEnvName       Identifier
hi def link xinetdEnvNameEq     xinetdEq
hi def link xinetdEnvValue      String
hi def link xinetdPPAttribute   PreProc
hi def link xinetdPathEq        xinetdEq
hi def link xinetdPath          String
hi def link xinetdRedirectEq    xinetdEq
hi def link xinetdRedirectIP    String
hi def link xinetdCPSEq         xinetdEq
hi def link xinetdCPS           xinetdNumber
hi def link xinetdFloatEq       xinetdEq
hi def link xinetdFloat         xinetdNumber
hi def link xinetdOctalEq       xinetdEq
hi def link xinetdOctal         xinetdNumber
hi def link xinetdOctalZero     PreProc
hi def link xinetdOctalError    Error
hi def link xinetdASEq          xinetdEq
hi def link xinetdAS            xinetdNumber
hi def link xinetdASMult        PreProc
hi def link xinetdDenyTimeEq    xinetdEq
hi def link xinetdDenyTime      PreProc
let b:current_syntax = "xinetd"
let &cpo = s:cpo_save
unlet s:cpo_save
