From 6e61330e318bcbbbccc83c2a9cf6818bd0b5a345 Mon Sep 17 00:00:00 2001 From: Aaron Johnon Date: Mon, 2 Sep 2024 01:38:20 -0500 Subject: [PATCH] Fixed issue with specifying -l without -g causing it to hang --- nsencode.go | 43 +++++++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/nsencode.go b/nsencode.go index 55cb2fb..1d1a6d2 100644 --- a/nsencode.go +++ b/nsencode.go @@ -38,25 +38,40 @@ func formatOutput(encoded []int, groupSize int, lineSize int) string { output.WriteString(fmt.Sprintf("%02d", num)) } - // Apply grouping finalOutput := output.String() var groupedOutput strings.Builder counter := 0 groupCounter := 0 - for i := 0; i < len(finalOutput); i += groupSize { - if i+groupSize < len(finalOutput) { - groupedOutput.WriteString(finalOutput[i:i+groupSize] + " ") - } else { - groupedOutput.WriteString(finalOutput[i:]) - } - counter++ - groupCounter++ + // Check if a group size is provided + if groupSize > 0 { + // Apply grouping and line size limits + for i := 0; i < len(finalOutput); i += groupSize { + if i+groupSize < len(finalOutput) { + groupedOutput.WriteString(finalOutput[i:i+groupSize] + " ") + } else { + groupedOutput.WriteString(finalOutput[i:]) + } + counter++ + groupCounter++ - // Check if we reached the line size - if lineSize > 0 && groupCounter >= lineSize && i+groupSize < len(finalOutput) { - groupedOutput.WriteString("\n") - groupCounter = 0 + // Check if we reached the line size + if lineSize > 0 && groupCounter >= lineSize && i+groupSize < len(finalOutput) { + groupedOutput.WriteString("\n") + groupCounter = 0 + } + } + } else { + // No group size specified, handle line size by number of characters + for i := 0; i < len(finalOutput); i++ { + groupedOutput.WriteByte(finalOutput[i]) + counter++ + + // Check if we reached the line size + if lineSize > 0 && counter >= lineSize && i+1 < len(finalOutput) { + groupedOutput.WriteString("\n") + counter = 0 + } } } @@ -67,7 +82,7 @@ func main() { // Define command-line flags shift := flag.Int("s", 0, "Shift amount for the cipher") groupSize := flag.Int("g", 0, "Group size for output formatting") - lineSize := flag.Int("l", 0, "Line size by number of groups") + lineSize := flag.Int("l", 0, "Line size by number of groups or characters if no group size is specified") flag.Parse() // Read input from stdin