summaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
Diffstat (limited to 'share')
-rw-r--r--share/txr/stdlib/awk.tl20
1 files changed, 14 insertions, 6 deletions
diff --git a/share/txr/stdlib/awk.tl b/share/txr/stdlib/awk.tl
index e74a0a18..62311fe2 100644
--- a/share/txr/stdlib/awk.tl
+++ b/share/txr/stdlib/awk.tl
@@ -25,7 +25,7 @@
(defstruct sys:awk-state ()
(rs "\n")
- (fs #/[ \t\n]+/)
+ (fs)
(ofs " ")
(ors "\n")
(inputs (or *args* (list *stdin*)))
@@ -52,11 +52,19 @@
(defmeth sys:awk-state rec-to-f (self)
(cond
((equal self.rec "")
- (set self.fields nil)
- (set self.nf 0))
- (t
- (set self.fields (split-str self.rec self.fs))
- (set self.nf (length self.fields)))))
+ (set self.fields nil
+ self.nf 0))
+ (self.fs
+ (set self.fields (split-str self.rec self.fs)
+ self.nf (length self.fields)))
+ ((let ((trimmed (trim-str self.rec)))
+ (cond
+ ((equal trimmed "")
+ (set self.fields nil
+ self.nf 0))
+ (t
+ (set self.fields (split-str trimmed #/[ \t\n]+/)
+ self.nf (length self.fields))))))))
(defmeth sys:awk-state f-to-rec (self)
(set self.rec (cat-str self.fields self.ofs)))