Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package mysql-xml-to-csv for 
openSUSE:Factory checked in at 2024-09-18 15:27:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mysql-xml-to-csv (Old)
 and      /work/SRC/openSUSE:Factory/.mysql-xml-to-csv.new.29891 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "mysql-xml-to-csv"

Wed Sep 18 15:27:12 2024 rev:2 rq:1201663 version:1.0.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/mysql-xml-to-csv/mysql-xml-to-csv.changes        
2021-11-22 23:05:37.897640590 +0100
+++ 
/work/SRC/openSUSE:Factory/.mysql-xml-to-csv.new.29891/mysql-xml-to-csv.changes 
    2024-09-18 15:27:55.295437486 +0200
@@ -1,0 +2,8 @@
+Tue Sep 17 17:05:18 UTC 2024 - Archie Cobbs <archie.co...@gmail.com>
+
+- Update to release 1.0.1.
+  + Added "-s" flag to specify alternate column separator
+  + Added "-E" flag to specify output if there are zero rows
+  + Added "-n" flag to specify alternate value for NULL columns
+
+-------------------------------------------------------------------

Old:
----
  mysql-xml-to-csv-1.0.0.obscpio

New:
----
  mysql-xml-to-csv-1.0.1.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ mysql-xml-to-csv.spec ++++++
--- /var/tmp/diff_new_pack.NKodU4/_old  2024-09-18 15:27:56.387482992 +0200
+++ /var/tmp/diff_new_pack.NKodU4/_new  2024-09-18 15:27:56.387482992 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package mysql-xml-to-csv
 #
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           mysql-xml-to-csv
-Version:        1.0.0
+Version:        1.0.1
 Release:        0
 Summary:        Convert MySQL XML output to CSV
 License:        Apache-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.NKodU4/_old  2024-09-18 15:27:56.419484325 +0200
+++ /var/tmp/diff_new_pack.NKodU4/_new  2024-09-18 15:27:56.423484492 +0200
@@ -2,8 +2,8 @@
     <service mode="localonly" name="obs_scm">
         <param name="scm">git</param>
         <param 
name="url">https://github.com/archiecobbs/mysql-xml-to-csv</param>
-        <param name="versionformat">1.0.0</param>
-        <param name="revision">1.0.0</param>
+        <param name="versionformat">1.0.1</param>
+        <param name="revision">1.0.1</param>
         <param name="filename">mysql-xml-to-csv</param>
     </service>
     <service mode="buildtime" name="tar"/>

++++++ mysql-xml-to-csv-1.0.0.obscpio -> mysql-xml-to-csv-1.0.1.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mysql-xml-to-csv-1.0.0/CHANGES 
new/mysql-xml-to-csv-1.0.1/CHANGES
--- old/mysql-xml-to-csv-1.0.0/CHANGES  2021-09-02 18:54:11.000000000 +0200
+++ new/mysql-xml-to-csv-1.0.1/CHANGES  2024-09-17 18:43:34.000000000 +0200
@@ -1,3 +1,9 @@
+Version 1.0.1 Released September 17, 2024
+
+    - Added "-s" flag to specify alternate column separator
+    - Added "-E" flag to specify output if there are zero rows
+    - Added "-n" flag to specify alternate value for NULL columns
+
 Version 1.0.0 Released September 2, 2021
 
     - Initial release
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mysql-xml-to-csv-1.0.0/Makefile.am 
new/mysql-xml-to-csv-1.0.1/Makefile.am
--- old/mysql-xml-to-csv-1.0.0/Makefile.am      2021-09-02 18:54:11.000000000 
+0200
+++ new/mysql-xml-to-csv-1.0.1/Makefile.am      2024-09-17 18:43:34.000000000 
+0200
@@ -1,7 +1,7 @@
 #
 # mysql-xml-to-csv - Convert MySQL XML output to CSV
 #
-# Copyright (C) 2010-2011 Archie L. Cobbs. All rights reserved.
+# Copyright (C) 2021 Archie L. Cobbs. All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -24,7 +24,7 @@
 
 doc_DATA=              CHANGES LICENSE README.md INSTALL AUTHORS
 
-EXTRA_DIST=            CHANGES README.md
+EXTRA_DIST=            CHANGES LICENSE README.md
 
 mysql_xml_to_csv_SOURCES=      main.c \
                                gitrev.c
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mysql-xml-to-csv-1.0.0/README.md 
new/mysql-xml-to-csv-1.0.1/README.md
--- old/mysql-xml-to-csv-1.0.0/README.md        2021-09-02 18:54:11.000000000 
+0200
+++ new/mysql-xml-to-csv-1.0.1/README.md        2024-09-17 18:43:34.000000000 
+0200
@@ -1,2 +1,54 @@
-# mysql-xml-to-csv
-Convert MySQL XML output to CSV
+```
+MYSQL-XML-TO-CSV(1)         BSD General Commands Manual         
MYSQL-XML-TO-CSV(1)
+
+NAME
+     mysql-xml-to-csv -- Convert MySQL XML output to CSV
+
+SYNOPSIS
+     mysql-xml-to-csv [-E line] [-n value] [-N] [-s separator] [input.xml]
+
+DESCRIPTION
+     mysql-xml-to-csv converts MySQL XML query results (i.e., produced using 
the
+     mysql(1) command when given the --xml flag) into a CSV file.
+
+     The XML input is read from input.xml, if specified, otherwise standard 
input.
+     The CSV output is written to standard output.
+
+     The first row of the CSV output contains column names unless the -N flag 
is
+     given.
+
+     If the query result set contains zero rows, then by default nothing is 
output;
+     this behavior can be altered using the -E flag.
+
+     By default NULL column values are converted into the empty string; this 
behav-
+     ior can be altered using the -n flag.
+
+     The character encoding used for the CVS output is UTF-8.
+
+OPTIONS
+     -E      If the result set contains zero rows, output line followed by a 
new-
+             line character instead of outputting nothing.  No validation of 
line
+             is performed.
+
+     -n      Output value instead of the empty string for NULL values.
+
+     -N      Do not output the column names in the first row of the output 
file.
+
+     -s      Specify an alternate column separator (default is comma).
+
+RETURN VALUES
+     mysql-xml-to-csv exits with one of the following values:
+
+     0       Input was successfully processed.
+
+     1       An error occurred.
+
+SEE ALSO
+     mysql-xml-to-csv: Convert MySQL XML output to CSV,
+     https://github.com/archiecobbs/mysql-xml-to-csv.
+
+AUTHOR
+     Archie L. Cobbs <archie.co...@gmail.com>
+
+BSD                              September 16, 2024                            
 BSD
+```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mysql-xml-to-csv-1.0.0/configure.ac 
new/mysql-xml-to-csv-1.0.1/configure.ac
--- old/mysql-xml-to-csv-1.0.0/configure.ac     2021-09-02 18:54:11.000000000 
+0200
+++ new/mysql-xml-to-csv-1.0.1/configure.ac     2024-09-17 18:43:34.000000000 
+0200
@@ -16,7 +16,7 @@
 # limitations under the License.
 #
 
-AC_INIT([mysql-xml-to-csv Convert MySQL XML output to CSV], [1.0.0], 
[https://github.com/archiecobbs/mysql-xml-to-csv/], [mysql-xml-to-csv])
+AC_INIT([mysql-xml-to-csv Convert MySQL XML output to CSV], [1.0.1], 
[https://github.com/archiecobbs/mysql-xml-to-csv/], [mysql-xml-to-csv])
 AC_CONFIG_AUX_DIR(scripts)
 AM_INIT_AUTOMAKE
 dnl AM_MAINTAINER_MODE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mysql-xml-to-csv-1.0.0/main.c 
new/mysql-xml-to-csv-1.0.1/main.c
--- old/mysql-xml-to-csv-1.0.0/main.c   2021-09-02 18:54:11.000000000 +0200
+++ new/mysql-xml-to-csv-1.0.1/main.c   2024-09-17 18:43:34.000000000 +0200
@@ -28,7 +28,8 @@
     </resultset>
 */
 
-#define BUFFER_SIZE     (1 << 16)
+#define BUFFER_SIZE                 (1 << 16)
+#define DEFAULT_COLUMN_SEPARATOR    ","
 
 // Version string
 extern const char *const mysql_xml_to_csv_version;
@@ -39,20 +40,27 @@
 static XML_Char **first_row_values;
 static size_t num_first_row_values;
 
+// Column separator
+static const char *column_separator = DEFAULT_COLUMN_SEPARATOR;
+
 // This accumulates one column's value
 static XML_Char *elem_text;                     // note: not nul-terminated
 static size_t elem_text_len;
 
 // Flags
-static int first_column;
-static int reading_value;
+static int first_column;                        // the current column is the 
first column
+static int reading_value;                       // we are reading the current 
column's value
+static int num_rows_seen;                       // the number of rows we have 
seen so far
+static int value_is_null;                       // the current column value is 
null
+static const char *null_value;                  // string to output for null 
values (default empty)
 
 // Expat callback functions
-static void handle_elem_start(void *data, const XML_Char *el, const XML_Char 
**attr);
-static void handle_elem_text(void *userData, const XML_Char *s, int len);
+static void handle_elem_start(void *data, const XML_Char *el, const XML_Char 
**attrs);
+static void handle_elem_text(void *data, const XML_Char *s, int len);
 static void handle_elem_end(void *data, const XML_Char *el);
 
 // Helper functions
+static const XML_Char *find_attribute(const XML_Char **const attrs, const char 
*name);
 static void output_csv_row(XML_Char **values, size_t num);
 static void output_csv_text(const char *s, size_t len);
 static void add_string(XML_Char ***arrayp, size_t *lengthp, const XML_Char 
*string, size_t len);
@@ -65,21 +73,33 @@
 main(int argc, char **argv)
 {
     char buf[BUFFER_SIZE];
-    int want_column_names = 1;
+    int want_column_names = 1;                  // output column names as the 
first CSV row
+    const char *empty_output = NULL;            // what to print if there are 
zero rows
     XML_Parser p;
     FILE *fp;
     size_t r;
     int i;
 
     // Parse command line
-    while ((i = getopt(argc, argv, "hNv")) != -1) {
+    while ((i = getopt(argc, argv, "E:hn:Ns:v")) != -1) {
         switch (i) {
+        case 'E':
+            empty_output = optarg;
+            break;
+        case 'n':
+            null_value = optarg;
+            break;
         case 'N':
             want_column_names = 0;
             break;
         case 'h':
             usage();
             exit(0);
+       case 's':
+            if (*optarg == '\0' || *optarg == '"')
+                errx(1, "invalid separator: %s", optarg);
+            column_separator = optarg;
+            break;
         case 'v':
             fprintf(stderr, "mysql-xml-to-csv %s\n", mysql_xml_to_csv_version);
             fprintf(stderr, "Copyright %s Archie L. Cobbs. All rights 
reserved.\n", COPYRIGHT);
@@ -131,6 +151,10 @@
             break;
     }
 
+    // Any rows encountered?
+    if (num_rows_seen == 0 && empty_output != NULL)
+        printf("%s\n", empty_output);
+
     // Clean up
     XML_ParserFree(p);
     fclose(fp);
@@ -140,31 +164,56 @@
 }
 
 static void
-handle_elem_start(void *data, const XML_Char *name, const XML_Char **attr)
+handle_elem_start(void *data, const XML_Char *name, const XML_Char **attrs)
 {
-    if (strcmp(name, "row") == 0)
+    const XML_Char *field_name;
+    const XML_Char *nil_status;
+
+    if (strcmp(name, "row") == 0) {
         first_column = 1;
-    else if (strcmp(name, "field") == 0) {
+        num_rows_seen++;
+    } else if (strcmp(name, "field") == 0) {
         if (column_names != NULL) {
-            while (*attr != NULL && strcmp(*attr, "name") != 0)
-                attr += 2;
-            if (*attr == NULL)
-                errx(1, "\"field\" element is missing \"name\" attribute");
-            add_string(&column_names, &num_column_names, attr[1], 
xml_strlen(attr[1]));
+            if ((field_name = find_attribute(attrs, "name")) == NULL)
+                errx(1, "row %d: \"%s\" element is missing \"%s\" attribute", 
num_rows_seen, "field", "name");
+            add_string(&column_names, &num_column_names, field_name, 
xml_strlen(field_name));
         } else {
             if (!first_column)
-                putchar(',');
+                fputs(column_separator, stdout);
             putchar('"');
         }
+        value_is_null = (nil_status = find_attribute(attrs, "xsi:nil")) != 
NULL && strcmp(nil_status, "true") == 0;
         reading_value = 1;
     }
 }
 
+static const XML_Char *
+find_attribute(const XML_Char **attrs, const char *target)
+{
+    const XML_Char *name;
+    const XML_Char *value;
+
+    while (*attrs != NULL) {
+        name = attrs[0];
+        value = attrs[1];
+        if (strcmp(name, target) == 0)
+            return value;
+        attrs += 2;
+    }
+    return NULL;
+}
+
 static void
-handle_elem_text(void *userData, const XML_Char *s, int len)
+handle_elem_text(void *data, const XML_Char *s, int len)
 {
     if (!reading_value)
         return;
+    if (value_is_null) {
+//       if (len > 0)
+//           errx(1, "row %d: non-empty value for field with 
xsi:nil=\"true\"", num_rows_seen);
+        if (null_value != NULL)
+            return;
+    }
     if (column_names != NULL)
         add_chars(&elem_text, &elem_text_len, s, len);
     else
@@ -183,6 +232,10 @@
         } else
             putchar('\n');
     } else if (strcmp(name, "field") == 0) {
+        if (value_is_null && null_value != NULL) {      // pretend 
"null_value" was the text content
+            value_is_null = 0;
+            handle_elem_text(data, null_value, strlen(null_value));
+        }
         if (column_names != NULL) {
             add_string(&first_row_values, &num_first_row_values, elem_text, 
elem_text_len);
             free(elem_text);
@@ -202,7 +255,7 @@
 
     for (i = 0; i < num_columns; i++) {
         if (i > 0)
-            putchar(',');
+            fputs(column_separator, stdout);
         putchar('"');
         output_csv_text(values[i], xml_strlen(values[i]));
         putchar('"');
@@ -273,7 +326,10 @@
 {
     fprintf(stderr, "Usage: mysql-xml-to-csv [options] [file.xml]\n");
     fprintf(stderr, "Options:\n");
-    fprintf(stderr, "  -N\tDo not output column names as the first row\n");
-    fprintf(stderr, "  -h\tShow this usage info\n");
-    fprintf(stderr, "  -v\tShow program version\n");
+    fprintf(stderr, "  -E line\tOutput \"line\" if result has zero rows 
(default output nothing)\n");
+    fprintf(stderr, "  -n value\tOutput \"value\" for NULL values (default 
empty string)\n");
+    fprintf(stderr, "  -N\t\tDo not output column names as the first CSV 
row\n");
+    fprintf(stderr, "  -s char\tSpecify column separator (default \"%s\")\n", 
DEFAULT_COLUMN_SEPARATOR);
+    fprintf(stderr, "  -h\t\tShow this usage info\n");
+    fprintf(stderr, "  -v\t\tShow program version\n");
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mysql-xml-to-csv-1.0.0/mysql-xml-to-csv.1.in 
new/mysql-xml-to-csv-1.0.1/mysql-xml-to-csv.1.in
--- old/mysql-xml-to-csv-1.0.0/mysql-xml-to-csv.1.in    2021-09-02 
18:54:11.000000000 +0200
+++ new/mysql-xml-to-csv-1.0.1/mysql-xml-to-csv.1.in    2024-09-17 
18:43:34.000000000 +0200
@@ -1,6 +1,6 @@
 .\"  -*- nroff -*-
 .\"
-.\" mysql-xml-to-csv - Convers MySQL XML output to CSV
+.\" mysql-xml-to-csv - Convert MySQL XML output to CSV
 .\"
 .\" Copyright (C) 2021 Archie L. Cobbs. All rights reserved.
 .\"
@@ -16,7 +16,7 @@
 .\" See the License for the specific language governing permissions and
 .\" limitations under the License.
 .\"
-.Dd September 2, 2021
+.Dd September 16, 2024
 .Dt MYSQL-XML-TO-CSV 1
 .Os
 .Sh NAME
@@ -24,7 +24,10 @@
 .Nd Convert MySQL XML output to CSV
 .Sh SYNOPSIS
 .Nm mysql-xml-to-csv
+.Op Fl E Ar line
+.Op Fl n Ar value
 .Op Fl N
+.Op Fl s Ar separator
 .Op Ar input.xml
 .Bk -words
 .Ek
@@ -45,13 +48,34 @@
 .Fl N
 flag is given.
 .Pp
-Any null values are converted into the empty string.
+If the query result set contains zero rows, then by default nothing is output;
+this behavior can be altered using the
+.Fl E
+flag.
+.Pp
+By default NULL column values are converted into the empty string;
+this behavior can be altered using the
+.Fl n
+flag.
 .Pp
 The character encoding used for the CVS output is UTF-8.
 .Sh OPTIONS
 .Bl -tag -width Ds
+.It Fl E
+If the result set contains zero rows, output
+.Ar line
+followed by a newline character instead of outputting nothing.
+No validation of
+.Ar line
+is performed.
+.It Fl n
+Output
+.Ar value
+instead of the empty string for NULL values.
 .It Fl N
 Do not output the column names in the first row of the output file.
+.It Fl s
+Specify an alternate column separator (default is comma).
 .El
 .Sh RETURN VALUES
 .Nm

++++++ mysql-xml-to-csv.obsinfo ++++++
--- /var/tmp/diff_new_pack.NKodU4/_old  2024-09-18 15:27:56.531488993 +0200
+++ /var/tmp/diff_new_pack.NKodU4/_new  2024-09-18 15:27:56.535489159 +0200
@@ -1,6 +1,5 @@
 name: mysql-xml-to-csv
-version: 1.0.0
-mtime: 1630601651
-commit: 51a62e9ff450a4935889df4062d3f1d8e7d45de3
-
+version: 1.0.1
+mtime: 1726591414
+commit: cf85fb504657c7a29663401935aecc2c574074b8
 

Reply via email to