From 3c61ab16aefb9e2524f1a6b91d3c99e387c768f6 Mon Sep 17 00:00:00 2001 From: Aadhavan Srinivasan Date: Sun, 15 Jun 2025 13:15:36 -0400 Subject: [PATCH] Added code for recursively traversing directories --- kg/main.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/kg/main.go b/kg/main.go index c5b8397..a6c471d 100644 --- a/kg/main.go +++ b/kg/main.go @@ -5,7 +5,9 @@ import ( "flag" "fmt" "io" + "io/fs" "os" + "path/filepath" "slices" "github.com/fatih/color" @@ -101,7 +103,24 @@ func main() { os.Exit(2) } else { if fileStat.Mode().IsDir() { - fmt.Printf("%s: %s: Is a directory\n", os.Args[0], inputFilename) + if *recursiveFlag { + // Walk the directory and open every file in it. Add each file to the filelist. + filepath.WalkDir(inputFilename, func(filename string, d fs.DirEntry, err error) error { + if err != nil { + return err + } + if !d.IsDir() { + f, err := os.Open(filename) + if err != nil { + return err + } + inputFiles = append(inputFiles, f) + } + return nil + }) + } else { + fmt.Printf("%s: %s: Is a directory\n", os.Args[0], inputFilename) + } } else { var nullCharPresent bool if nullCharPresent, err = fileContainsNullChar(inputFilename); nullCharPresent {