How to use failf method of kconfig Package

Best Syzkaller code snippet using kconfig.failf

kconfig.go

Source:kconfig.go Github

copy

Full Screen

...299 kp.ConsumeLine()300 break301 }302 default:303 kp.failf("unknown line")304 }305}306func (kp *kconfigParser) includeSource(file string) {307 kp.newCurrent(nil)308 file = kp.expandString(file)309 file = filepath.Join(kp.baseDir, file)310 data, err := ioutil.ReadFile(file)311 if err != nil {312 kp.failf("%v", err)313 return314 }315 kp.includes = append(kp.includes, kp.parser)316 kp.parser = newParser(data, file)317 kp.parseFile()318 err = kp.err319 kp.parser = kp.includes[len(kp.includes)-1]320 kp.includes = kp.includes[:len(kp.includes)-1]321 if kp.err == nil {322 kp.err = err323 }324}325func (kp *kconfigParser) pushCurrent(m *Menu) {326 kp.endCurrent()327 kp.cur = m328 kp.stack = append(kp.stack, m)329}330func (kp *kconfigParser) popCurrent() {331 kp.endCurrent()332 if len(kp.stack) < 2 {333 kp.failf("unbalanced endmenu")334 return335 }336 last := kp.stack[len(kp.stack)-1]337 kp.stack = kp.stack[:len(kp.stack)-1]338 top := kp.stack[len(kp.stack)-1]339 last.Parent = top340 top.Elems = append(top.Elems, last)341}342func (kp *kconfigParser) newCurrent(m *Menu) {343 kp.endCurrent()344 kp.cur = m345}346func (kp *kconfigParser) current() *Menu {347 if kp.cur == nil {348 kp.failf("config property outside of config")349 return &Menu{}350 }351 return kp.cur352}353func (kp *kconfigParser) endCurrent() {354 if kp.cur == nil {355 return356 }357 if len(kp.stack) == 0 {358 kp.failf("unbalanced endmenu")359 return360 }361 top := kp.stack[len(kp.stack)-1]362 if top != kp.cur {363 kp.cur.Parent = top364 top.Elems = append(top.Elems, kp.cur)365 }366 kp.cur = nil367}368func (kp *kconfigParser) tryParsePrompt() {369 if str, ok := kp.TryQuotedString(); ok {370 prompt := prompt{371 text: str,372 }...

Full Screen

Full Screen

parser.go

Source:parser.go Github

copy

Full Screen

...24// nextLine resets the parser to the next line.25// Automatically concatenates lines split with \ at the end.26func (p *parser) nextLine() bool {27 if !p.eol() {28 p.failf("tailing data at the end of line")29 return false30 }31 if p.err != nil || len(p.data) == 0 {32 return false33 }34 p.col = 035 p.line++36 p.current = p.readNextLine()37 for p.current != "" && p.current[len(p.current)-1] == '\\' && len(p.data) != 0 {38 p.current = p.current[:len(p.current)-1] + p.readNextLine()39 p.line++40 }41 p.skipSpaces()42 return true43}44func (p *parser) readNextLine() string {45 line := ""46 nextLine := bytes.IndexByte(p.data, '\n')47 if nextLine != -1 {48 line = string(p.data[:nextLine])49 p.data = p.data[nextLine+1:]50 } else {51 line = string(p.data)52 p.data = nil53 }54 return line55}56func (p *parser) skipSpaces() {57 for p.col < len(p.current) && (p.current[p.col] == ' ' || p.current[p.col] == '\t') {58 p.col++59 }60}61func (p *parser) identLevel() int {62 level := 063 for i := 0; i < p.col; i++ {64 level++65 if p.current[i] == '\t' {66 level = (level + 7) & ^767 }68 }69 return level70}71func (p *parser) failf(msg string, args ...interface{}) {72 if p.err == nil {73 p.err = fmt.Errorf("%v:%v:%v: %v\n%v", p.file, p.line, p.col, fmt.Sprintf(msg, args...), p.current)74 }75}76func (p *parser) eol() bool {77 return p.col == len(p.current)78}79func (p *parser) char() byte {80 if p.err != nil {81 return 082 }83 if p.eol() {84 p.failf("unexpected end of line")85 return 086 }87 v := p.current[p.col]88 p.col++89 return v90}91func (p *parser) peek() byte {92 if p.err != nil || p.eol() {93 return 094 }95 return p.current[p.col]96}97func (p *parser) ConsumeLine() string {98 res := p.current[p.col:]99 p.col = len(p.current)100 return res101}102func (p *parser) TryConsume(what string) bool {103 if !strings.HasPrefix(p.current[p.col:], what) {104 return false105 }106 p.col += len(what)107 p.skipSpaces()108 return true109}110func (p *parser) MustConsume(what string) {111 if !p.TryConsume(what) {112 p.failf("expected %q", what)113 }114}115func (p *parser) QuotedString() string {116 var str []byte117 quote := p.char()118 if quote != '"' && quote != '\'' {119 p.failf("expect quoted string")120 }121 for ch := p.char(); ch != quote; ch = p.char() {122 if ch == 0 {123 p.failf("unterminated quoted string")124 break125 }126 if ch == '\\' {127 ch = p.char()128 switch ch {129 case '\'', '"', '\\', 'n':130 str = append(str, ch)131 default:132 p.failf("bad quoted character")133 }134 continue135 }136 str = append(str, ch)137 if ch == '$' && p.peek() == '(' {138 str = append(str, p.Shell()...)139 }140 }141 p.skipSpaces()142 return string(str)143}144func (p *parser) TryQuotedString() (string, bool) {145 if ch := p.peek(); ch == '"' || ch == '\'' {146 return p.QuotedString(), true147 }148 return "", false149}150func (p *parser) Ident() string {151 var str []byte152 for !p.eol() {153 ch := p.peek()154 if ch >= 'a' && ch <= 'z' ||155 ch >= 'A' && ch <= 'Z' ||156 ch >= '0' && ch <= '9' ||157 ch == '_' || ch == '-' {158 str = append(str, ch)159 p.col++160 continue161 }162 break163 }164 if len(str) == 0 {165 p.failf("expected an identifier")166 }167 p.skipSpaces()168 return string(str)169}170func (p *parser) Shell() string {171 start := p.col172 p.MustConsume("(")173 for !p.eol() && p.peek() != ')' {174 if p.peek() == '"' {175 p.QuotedString()176 } else if p.peek() == '(' {177 p.Shell()178 } else {179 p.col++180 }181 }182 if ch := p.char(); ch != ')' {183 p.failf("shell expression is not terminated")184 }185 res := p.current[start:p.col]186 p.skipSpaces()187 return res188}...

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful