From c8ba46c9f9afb482052e018a0ed5c1c67b896c57 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 26 Aug 2015 23:58:22 -0600 Subject: wip --- src/nslcd_proto/.gitignore | 3 ++- src/nslcd_proto/Makefile | 39 ++++++++++++++++++++----------- src/nslcd_proto/enumerator@T.got | 9 +++++-- src/nslcd_proto/func_handlerequest.go.sh | 3 +-- src/nslcd_proto/interface_backend.go.sh | 17 ++++++++++++++ src/nslcd_proto/struct_backend.go.sh | 12 ---------- src/nslcd_proto/struct_null_backend.go.sh | 12 ++++++++++ src/nslcd_proto/util.go | 7 ++---- 8 files changed, 67 insertions(+), 35 deletions(-) create mode 100755 src/nslcd_proto/interface_backend.go.sh delete mode 100755 src/nslcd_proto/struct_backend.go.sh create mode 100755 src/nslcd_proto/struct_null_backend.go.sh (limited to 'src/nslcd_proto') diff --git a/src/nslcd_proto/.gitignore b/src/nslcd_proto/.gitignore index 8a88ae3..c655813 100644 --- a/src/nslcd_proto/.gitignore +++ b/src/nslcd_proto/.gitignore @@ -1,4 +1,5 @@ -/struct_backend.go +/interface_backend.go +/struct_null_backend.go /func_handlerequest.go /requests.txt /responses.txt diff --git a/src/nslcd_proto/Makefile b/src/nslcd_proto/Makefile index 2014bdd..fcb46d6 100644 --- a/src/nslcd_proto/Makefile +++ b/src/nslcd_proto/Makefile @@ -1,31 +1,44 @@ -all: struct_backend.go func_handlerequest.go +_ := $(MAKEFILE_LIST) +d := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) + +generate := $d/interface_backend.go $d/func_handlerequest.go $d/struct_null_backend.go +secondary := $d/enumerator-list.mk $d/requests.txt $d/responses.txt $d/enumerator@*.go + +ifeq (,$(filter clean,$(MAKECMDGOALS))) +-include $d/enumerator-list.mk +endif + +ifeq (1,$(words $_)) + +all: generate .PHONY: all +generate: $(generate) +.PHONY: generate + clean: - rm -f -- struct_backend.go func_handlerequest.go enumerator@*.go - rm -f -- enumerator-list.mk requests.txt responses.txt + rm -f -- $(generate) $(secondary) .PHONY: clean -ifeq (,$(filter clean,$(MAKECMDGOALS))) --include enumerator-list.mk endif - -enumerator@%.go: enumerator@T.got + +$d/enumerator@%.go: $d/enumerator@T.got < $< sed 's//$*/g' > $@ -enumerator-list.mk: responses.txt Makefile - < $< sed -rn 's/.*/all: enumerator@&.go/p' > $@ +$d/enumerator-list.mk: $d/responses.txt $d/Makefile + < $< sed -rn 's|.*|generate += $$d/enumerator@&.go|p' > $@ -requests.txt: nslcd_h.go Makefile +$d/requests.txt: $d/nslcd_h.go $d/Makefile < $< grep -Eo 'Request_([^_ ]+)(_\S+)?' | sed 's/^Request_//' > $@ -responses.txt: struct_backend.go Makefile +$d/responses.txt: $d/interface_backend.go $d/Makefile < $< sed -rn 's/.* (\S+)_Enumerator$$/\1/p' | sort -u > $@ %.go: %.go.sh ./$^ > $@ -struct_backend.go: requests.txt -func_handlerequest.go: requests.txt +$d/interface_backend.go: $d/requests.txt +$d/func_handlerequest.go: $d/requests.txt +$d/struct_null_backend.go: $d/interface_backend.go .DELETE_ON_ERROR: .SECONDARY: diff --git a/src/nslcd_proto/enumerator@T.got b/src/nslcd_proto/enumerator@T.got index 06d6171..5a540ae 100644 --- a/src/nslcd_proto/enumerator@T.got +++ b/src/nslcd_proto/enumerator@T.got @@ -11,6 +11,8 @@ type _List struct { i int } +var _ _Enumerator = &_List{} + func New__List(ary []) *_List { return &_List{ary, 0} } @@ -23,15 +25,18 @@ func (o *_List) GetNext() (n *, err error) { err = nil return } + func (o *_List) GenericGetNext() (n interface{}, err error) { return o.GetNext() } type _Ø struct{} -func (o *_Ø) GetNext() (*, error) { +var _ _Enumerator = _Ø{} + +func (o _Ø) GetNext() (*, error) { return nil, nil } -func (o *_Ø) GenericGetNext() (interface{}, error) { +func (o _Ø) GenericGetNext() (interface{}, error) { return nil, nil } diff --git a/src/nslcd_proto/func_handlerequest.go.sh b/src/nslcd_proto/func_handlerequest.go.sh index 6c6f988..4008dd5 100755 --- a/src/nslcd_proto/func_handlerequest.go.sh +++ b/src/nslcd_proto/func_handlerequest.go.sh @@ -7,14 +7,13 @@ package nslcd_proto import ( "fmt" "io" - "syscall" ) type enumerator interface { GenericGetNext() (n interface{}, err error) } -func handleRequest(backend Backend, in io.Reader, out io.Writer, cred syscall.Ucred) { +func handleRequest(backend Backend, in io.Reader, out io.Writer, cred Ucred) { var version int32 read(in, &version) if version != NSLCD_VERSION { diff --git a/src/nslcd_proto/interface_backend.go.sh b/src/nslcd_proto/interface_backend.go.sh new file mode 100755 index 0000000..99e0a36 --- /dev/null +++ b/src/nslcd_proto/interface_backend.go.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +# -*- Mode: Go -*- +requests=$1 +cat <