[freeside-commits] branch master updated. 2c7c526d0485fbd2eaf59b54ff5fe7a1d4e01970

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


The branch, master has been updated
       via  2c7c526d0485fbd2eaf59b54ff5fe7a1d4e01970 (commit)
      from  876a95ece211ff6478a609f5e99109957f66e477 (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 2c7c526d0485fbd2eaf59b54ff5fe7a1d4e01970
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Mon May 23 15:06:31 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