On Wed, 17 Apr 2024 07:46:19 +0200
Rob Schmersel <rob.schmer...@bahnhof.se> wrote:

> On Mon, 8 Apr 2024 07:26:04 +0200
> Rob Schmersel <rob.schmer...@bahnhof.se> wrote:
> 
> > On Sun, 7 Apr 2024 12:21:14 -0400
> > George Koehler <kern...@gmail.com> wrote:
> >   
> > > On Sun, 7 Apr 2024 15:57:26 +0200
> > > Rob Schmersel <rob.schmer...@bahnhof.se> wrote:
> > >   
> > > > I tracked it down to the use of syscall in the tcell package
> > > > file tscreen_bsd.go (line 46)
> > > > 
> > > >   
> > > >  >       fd = uintptr(t.out.(*os.File).Fd())
> > > >  >       if _, _, e1 := syscall.Syscall6(syscall.SYS_IOCTL, fd,
> > > >  > ioc, tios, 0, 0, 0); e1 != 0 { e = e1
> > > >  >               goto failed
> > > >  >       }  
> > > 
> > > Joel Sing patched our lang/go to allow SYS_IOCTL in Syscall, but
> > > not in Syscall6.  I tried changing Syscall6 to Syscall in
> > > tscreen_bsd.go. The "function not implemented" error stopped
> > > appearing, but
> > >   
> > I think there is a reason why Syscall6 was used instead of Syscall
> > (i.e. number of arguments). Just removing the last 3 arguments now
> > makes the last argument (tios) be a pointer (at least according to
> > the syscall package description) which I'm not sure is the
> > intention and probably the reason for the black screen :)
> > 
> > So I guess I need to look at the syscall package to figure what
> > changes where made for Syscall. Will give it go later today.
> >   
> > >  - micro got stuck on a black screen; I needed to close the
> > > terminal.  
> > Got the same after patching
> >   
> > >  - I can't add my patch to the port, because "make update-patches"
> > >    doesn't see it.  The file is outside WRKSRC, in
> > >    WRKDIR/go/pkg/mod/github.com/zyedidia/tcell/v2@v2.0.10
> > >   
> > 
> > Yeah, the tcell package is a dependency that gets pulled in during
> > compilation. We need to request upstream to patch or get tcell as an
> > own package once it is figured out what is the cause (it definitely
> > used to work before :))
> >   
> > > --- tscreen_bsd.go.orig.port      Sun Apr  7 11:53:03 2024
> > > +++ tscreen_bsd.go        Sun Apr  7 11:57:57 2024
> > > @@ -43,7 +43,7 @@
> > >   tios = uintptr(unsafe.Pointer(t.tiosp))
> > >   ioc = uintptr(syscall.TIOCGETA)
> > >   fd = uintptr(t.out.(*os.File).Fd())
> > > - if _, _, e1 := syscall.Syscall6(syscall.SYS_IOCTL, fd,
> > > ioc, tios, 0, 0, 0); e1 != 0 {
> > > + if _, _, e1 := syscall.Syscall(syscall.SYS_IOCTL, fd,
> > > ioc, tios); e1 != 0 { e = e1
> > >           goto failed
> > >   }
> > > @@ -61,7 +61,7 @@
> > >   tios = uintptr(unsafe.Pointer(&newtios))
> > >  
> > >   ioc = uintptr(syscall.TIOCSETA)
> > > - if _, _, e1 := syscall.Syscall6(syscall.SYS_IOCTL, fd,
> > > ioc, tios, 0, 0, 0); e1 != 0 {
> > > + if _, _, e1 := syscall.Syscall(syscall.SYS_IOCTL, fd,
> > > ioc, tios); e1 != 0 { e = e1
> > >           goto failed
> > >   }
> > > @@ -94,7 +94,7 @@
> > >           fd := uintptr(t.out.(*os.File).Fd())
> > >           ioc := uintptr(syscall.TIOCSETAF)
> > >           tios := uintptr(unsafe.Pointer(t.tiosp))
> > > -         syscall.Syscall6(syscall.SYS_IOCTL, fd, ioc,
> > > tios, 0, 0, 0)
> > > +         syscall.Syscall(syscall.SYS_IOCTL, fd, ioc, tios)
> > >           t.out.(*os.File).Close()
> > >   }
> > >   if t.in != nil {
> > > @@ -108,8 +108,8 @@
> > >   dim := [4]uint16{}
> > >   dimp := uintptr(unsafe.Pointer(&dim))
> > >   ioc := uintptr(syscall.TIOCGWINSZ)
> > > - if _, _, err := syscall.Syscall6(syscall.SYS_IOCTL,
> > > -         fd, ioc, dimp, 0, 0, 0); err != 0 {
> > > + if _, _, err := syscall.Syscall(syscall.SYS_IOCTL,
> > > +         fd, ioc, dimp); err != 0 {
> > >           return -1, -1, err
> > >   }
> > >   return int(dim[1]), int(dim[0]), nil
> > >   
> >   
> 
> after banging my head against this over the weekend I have to admit
> defeat as I have no clue whatsover :)
> Is there anybody else here on the list who can help

I think this need to be marked BROKEN

Reply via email to