3
c/inih/_demo/config.ini
Normal file
3
c/inih/_demo/config.ini
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
[settings]
|
||||||
|
username=admin
|
||||||
|
timeout=30
|
||||||
45
c/inih/_demo/inihHello.go
Normal file
45
c/inih/_demo/inihHello.go
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/goplus/llgo/c"
|
||||||
|
"github.com/goplus/llgo/c/inih"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
filename := c.Str("config.ini")
|
||||||
|
|
||||||
|
if inih.Parse(filename, func(user c.Pointer, section *c.Char, name *c.Char, value *c.Char) c.Int {
|
||||||
|
println("section:", c.GoString(section), "name:", c.GoString(name), "value:", c.GoString(value))
|
||||||
|
return 1
|
||||||
|
}, nil) < 0 {
|
||||||
|
println("Error parsing config file")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
file := c.Fopen(c.Str("config.ini"), c.Str("r"))
|
||||||
|
if file == nil {
|
||||||
|
println("Error opening config file")
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
if inih.ParseFile(file, func(user c.Pointer, section *c.Char, name *c.Char, value *c.Char) c.Int {
|
||||||
|
println("section:", c.GoString(section), "name:", c.GoString(name), "value:", c.GoString(value))
|
||||||
|
return 1
|
||||||
|
}, nil) < 0 {
|
||||||
|
println("Error parsing config file")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c.Fclose(file)
|
||||||
|
}
|
||||||
|
|
||||||
|
configData := "[settings]\nusername=lee\ntimeout=20"
|
||||||
|
if inih.ParseString(c.Str(configData), func(user c.Pointer, section *c.Char, name *c.Char, value *c.Char) c.Int {
|
||||||
|
println("section:", c.GoString(section), "name:", c.GoString(name), "value:", c.GoString(value))
|
||||||
|
return 1
|
||||||
|
}, nil) < 0 {
|
||||||
|
println("Error parsing config file")
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
println("Config file parsed successfully")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
24
c/inih/inih.go
Normal file
24
c/inih/inih.go
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
package inih
|
||||||
|
|
||||||
|
/*
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
*/
|
||||||
|
import (
|
||||||
|
_ "unsafe"
|
||||||
|
|
||||||
|
"github.com/goplus/llgo/c"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
LLGoPackage = "link: $(pkg-config --libs inih); -linih"
|
||||||
|
)
|
||||||
|
|
||||||
|
//go:linkname Parse C.ini_parse
|
||||||
|
func Parse(filename *c.Char, handler func(user c.Pointer, section *c.Char, name *c.Char, value *c.Char) c.Int, user c.Pointer) c.Int
|
||||||
|
|
||||||
|
//go:linkname ParseFile C.ini_parse_file
|
||||||
|
func ParseFile(file c.FilePtr, handler func(user c.Pointer, section *c.Char, name *c.Char, value *c.Char) c.Int, user c.Pointer) c.Int
|
||||||
|
|
||||||
|
//go:linkname ParseString C.ini_parse_string
|
||||||
|
func ParseString(str *c.Char, handler func(user c.Pointer, section *c.Char, name *c.Char, value *c.Char) c.Int, user c.Pointer) c.Int
|
||||||
Reference in New Issue
Block a user