changed 'sed' to use -e for an expression
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
hyung-hwan 2023-10-31 21:17:08 +09:00
parent a7b323b795
commit 3b9b02de83
5 changed files with 48 additions and 33 deletions

View File

@ -45,7 +45,7 @@ hclgo_LINK = mv -f hclgo.bin hclgo$(EXEEXT) || echo "FAILED TO LINK"
hclgo.bin: hclgo.bin:
cp -pf $(srcdir)/go.mod $(builddir)/go.mod >/dev/null 2>&1 || true cp -pf $(srcdir)/go.mod $(builddir)/go.mod >/dev/null 2>&1 || true
chmod u+w $(builddir)/go.mod ## with `make distcheck`, the echo's redirection to the file fails without this permission change chmod u+w $(builddir)/go.mod ## with `make distcheck`, the echo's redirection to the file fails without this permission change
sed -ri "/^[[:space:]]*replace[[:space:]]+cfg[[:space:]]*=>/d" $(builddir)/go.mod sed -r -i -e "/^[[:space:]]*replace[[:space:]]+cfg[[:space:]]*=>/d" $(builddir)/go.mod
echo -e "\nreplace cfg => $(abs_builddir)/go/cfg" >> $(builddir)/go.mod echo -e "\nreplace cfg => $(abs_builddir)/go/cfg" >> $(builddir)/go.mod
[ -f $(srcdir)/go.sum ] && cp -pf $(srcdir)/go.sum $(builddir)/go.sum >/dev/null 2>&1 || true [ -f $(srcdir)/go.sum ] && cp -pf $(srcdir)/go.sum $(builddir)/go.sum >/dev/null 2>&1 || true
CGO_CFLAGS="-I$(abs_srcdir)/lib -I$(abs_builddir)/lib $(CFLAGS)" \ CGO_CFLAGS="-I$(abs_srcdir)/lib -I$(abs_builddir)/lib $(CFLAGS)" \

View File

@ -940,7 +940,7 @@ clean-local:
@ENABLE_HCLGO_TRUE@hclgo.bin: @ENABLE_HCLGO_TRUE@hclgo.bin:
@ENABLE_HCLGO_TRUE@ cp -pf $(srcdir)/go.mod $(builddir)/go.mod >/dev/null 2>&1 || true @ENABLE_HCLGO_TRUE@ cp -pf $(srcdir)/go.mod $(builddir)/go.mod >/dev/null 2>&1 || true
@ENABLE_HCLGO_TRUE@ chmod u+w $(builddir)/go.mod ## with `make distcheck`, the echo's redirection to the file fails without this permission change @ENABLE_HCLGO_TRUE@ chmod u+w $(builddir)/go.mod ## with `make distcheck`, the echo's redirection to the file fails without this permission change
@ENABLE_HCLGO_TRUE@ sed -ri "/^[[:space:]]*replace[[:space:]]+cfg[[:space:]]*=>/d" $(builddir)/go.mod @ENABLE_HCLGO_TRUE@ sed -r -i -e "/^[[:space:]]*replace[[:space:]]+cfg[[:space:]]*=>/d" $(builddir)/go.mod
@ENABLE_HCLGO_TRUE@ echo -e "\nreplace cfg => $(abs_builddir)/go/cfg" >> $(builddir)/go.mod @ENABLE_HCLGO_TRUE@ echo -e "\nreplace cfg => $(abs_builddir)/go/cfg" >> $(builddir)/go.mod
@ENABLE_HCLGO_TRUE@ [ -f $(srcdir)/go.sum ] && cp -pf $(srcdir)/go.sum $(builddir)/go.sum >/dev/null 2>&1 || true @ENABLE_HCLGO_TRUE@ [ -f $(srcdir)/go.sum ] && cp -pf $(srcdir)/go.sum $(builddir)/go.sum >/dev/null 2>&1 || true
@ENABLE_HCLGO_TRUE@ CGO_CFLAGS="-I$(abs_srcdir)/lib -I$(abs_builddir)/lib $(CFLAGS)" \ @ENABLE_HCLGO_TRUE@ CGO_CFLAGS="-I$(abs_srcdir)/lib -I$(abs_builddir)/lib $(CFLAGS)" \

View File

@ -9,7 +9,11 @@ import "C"
import ( import (
// "bufio" // "bufio"
// "io" // "io"
"bufio"
"io"
"os" "os"
"sync"
"unsafe"
// "sync" // "sync"
// "unsafe" // "unsafe"
) )
@ -19,7 +23,6 @@ type IOHandle struct {
ioif interface{} ioif interface{}
} }
/*
type IOHandleTable struct { type IOHandleTable struct {
mtx sync.Mutex mtx sync.Mutex
handles []IOHandle handles []IOHandle
@ -407,10 +410,10 @@ func (p *PrintFileHandler) Open(g *HCL) error {
// err error // err error
) )
// f, err = os.OpenFile("/dev/stdout", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644) // f, err = os.OpenFile("/dev/stdout", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
// if err != nil { // if err != nil {
// return err // return err
// } // }
f = os.Stdout f = os.Stdout
@ -455,4 +458,3 @@ func (p *PrintFileHandler) Flush() error {
//fmt.Fprintf(os.Stderr, "XXXXXXXXXX flush porint\n") //fmt.Fprintf(os.Stderr, "XXXXXXXXXX flush porint\n")
return p.w.Flush() return p.w.Flush()
} }
*/

View File

@ -12,13 +12,23 @@ import (
"unsafe" "unsafe"
) )
type IOImpl interface {
Open(g *HCL, name string, includer_name string) (int, error)
Close(fd int)
Read(fd int, buf []rune) (int, error)
Write(data []rune) error
WriteBytes(data []byte) error
Flush() error
}
type HCL struct { type HCL struct {
c *C.hcl_t c *C.hcl_t
inst_no int inst_no int
io struct { io struct {
r IOHandle r IOImpl
w IOHandle s IOImpl
p IOImpl
} }
} }
@ -82,7 +92,14 @@ func (hcl *HCL) AddBuiltinPrims() error {
return nil return nil
} }
func (hcl *HCL) AttachIO() error { func (hcl *HCL) AttachIO(r IOImpl, w IOImpl, p IOImpl) error {
hcl.io.r = r
hcl.io.s = s
hcl.io.p = p
if C.hcl_attachio(hcl.c, go_read_handler, go_scan_handler, go_print_handler) <= -1 {
// TODO: restore to the old value..
return fmt.Errorf("unable to attach I/O handlers: %s", string(ucstr_to_rune_slice(C.hcl_geterrstr(hcl.c))))
}
return nil return nil
} }

14
main.go
View File

@ -29,10 +29,11 @@ int print_handler (hcl_t* hcl, hcl_iocmd_t cmd, void* arg)
//import "C" //import "C"
import ( import (
"fmt"
hcl "code.miflux.com/hyung-hwan/hcl/go"
"os"
_ "cfg" _ "cfg"
"fmt"
"os"
hcl "code.miflux.com/hyung-hwan/hcl/go"
) )
/* /*
@ -105,11 +106,9 @@ func main() {
var x *hcl.HCL = nil var x *hcl.HCL = nil
var err error = nil var err error = nil
/*
var rfh hcl.ReadFileHandler var rfh hcl.ReadFileHandler
var sfh hcl.ScanFileHandler var sfh hcl.ScanFileHandler
var pfh hcl.PrintFileHandler var pfh hcl.PrintFileHandler
*/
x, err = hcl.New() x, err = hcl.New()
if err != nil { if err != nil {
@ -127,13 +126,11 @@ func main() {
goto oops goto oops
} }
/* err = x.AttachIO(rfh, sfh, pfh)
err = x.AttachIO(&rfh, &sfh, &pfh)
if err != nil { if err != nil {
fmt.Printf("Error - %s", err.Error()) fmt.Printf("Error - %s", err.Error())
} }
x.FeedString(`(printf ">>>>>>>>> [%d]\n" (+ 30 455)) x.FeedString(`(printf ">>>>>>>>> [%d]\n" (+ 30 455))
(printf ">>>>>>>>> [%d]\n" (+ 11 455)) (printf ">>>>>>>>> [%d]\n" (+ 11 455))
#include "a.hcl" #include "a.hcl"
(printf ">>>>>>>>> [%d]\n" (+ 20 455))`) (printf ">>>>>>>>> [%d]\n" (+ 20 455))`)
@ -141,7 +138,6 @@ func main() {
x.EndFeed() x.EndFeed()
x.Execute() x.Execute()
*/
x.Close() x.Close()
os.Exit(0) os.Exit(0)