Hunter,

Your main.go file is 171 lines of dense code. If you reduced your issue to 
a small, working piece of code, people would be more likely help you.

You say "bufio.Scan() doesn't return io.EOF." Why?

$ go doc bufio.scanner
type Scanner struct {
}

    Scanning stops unrecoverably at EOF, the first I/O error, or a token too
    large to fit in the buffer. 

$ go doc bufio.scanner.scan
func (s *Scanner) Scan() bool

    Scan advances the Scanner to the next token, which will then be 
available
    through the Bytes or Text method. It returns false when the scan stops,
    either by reaching the end of the input or an error. After Scan returns
    false, the Err method will return any error that occurred during 
scanning,
    except that if it was io.EOF, Err will return nil.

For example,

package main

import (
    "bufio"
    "fmt"
    "io"
    "os"
)

func main() {
    var input = bufio.NewScanner(os.Stdin)
    for input.Scan() {
        text := input.Text()
        fmt.Println(len(text), text)
    }
    if err := input.Err(); err != nil {
        fmt.Fprintln(os.Stderr, err)
        return
    }
    // input.Scan() == false && input.Err() == nil
    fmt.Println(io.EOF)
}

Output:

# On Linux, Ctrl-D for eof

$ go run eof.go
asd
3 asd
EOF
$

Peter

On Monday, September 3, 2018 at 12:49:12 PM UTC-4, Hunter Breathat wrote:
>
> Hey, so I'm currently trying to create a custom shell.
>
> I am currently trying to implement the EOF exit (^D). Currently, I am able 
> to use exit as input and a variety of other
> commands, platform-specific; anything, not windows related (WIP), but I am 
> having an issue with the EOF causing
> an infinite loop. If you could help that would be splendid.
>
> bufio.Scan() doesn't return io.EOF (So that's a bust even though that's 
> the current implementation) 
>
> GoShell Repo <https://github.com/NexisHunter/GoShell> 
>
> The section you are looking for is in the file: main.go.
>
> Thanks in advanced
> Hunter
>
> PS.
> If you are able to even possible walk me through it would help a bit.
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to