[freeside-commits] branch FREESIDE_4_BRANCH updated. b0984bceb961f1a6cd12cd70fb824dd8c2a8ecd9

Ivan Kohler ivan at freeside.biz
Mon May 23 15:06:35 PDT 2022


The branch, FREESIDE_4_BRANCH has been updated
       via  b0984bceb961f1a6cd12cd70fb824dd8c2a8ecd9 (commit)
      from  cc7fbf9f532b64587eed1244218b6611a72d004f (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit b0984bceb961f1a6cd12cd70fb824dd8c2a8ecd9
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Mon May 23 15:06:34 2022 -0700

    properly deal with broadsoft's awful non-standard quoting, RT#86028, RT#81941

diff --git a/FS/FS/cdr/broadsoft.pm b/FS/FS/cdr/broadsoft.pm
index 01755a8bf..ab4815095 100644
--- a/FS/FS/cdr/broadsoft.pm
+++ b/FS/FS/cdr/broadsoft.pm
@@ -23,12 +23,17 @@ use FS::cdr qw( _cdr_date_parser_maker _cdr_min_parser_maker );
   sep_char => ',',
   disabled => 0,
 
+  #deal with broadsoft's awful non-standard CSV escaping :/
   row_callback => sub {
     my $line = shift;
-    #try to deal with broadsoft's awful non-standard CSV escaping :/
-    $line =~ s/\\,/ /g;  # \, becomes just a space... not entirely accurate,
-                          #  but better than skewing data into the wrong fields
-    $line =~ s/\\\\/\\/g; # undo double backslashes?  none in my test data
+    $line = qq("$line");       # put " at the beginning and end
+    $line =~ s/(?<!\\),/","/g; # all commas not after a \ become ","
+    $line =~ s/\\,/,/g;        # and now we can turn \, into ,
+    #XXX embedded \r and \n ?  none in my test data, and might be better to 
+    # leave escaped and deal with it from there?
+    $line =~ s/\\\\/\\/g;     # undo double backslashes?  none in my test data
+
+    #and now we have a properly formed CSV line
     $line;
   },
 

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/cdr/broadsoft.pm | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)




More information about the freeside-commits mailing list