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