Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package file for openSUSE:Factory checked in 
at 2022-07-29 16:46:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/file (Old)
 and      /work/SRC/openSUSE:Factory/.file.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "file"

Fri Jul 29 16:46:51 2022 rev:129 rq:990574 version:5.42

Changes:
--------
--- /work/SRC/openSUSE:Factory/file/file.changes        2022-06-16 
18:19:39.668032948 +0200
+++ /work/SRC/openSUSE:Factory/.file.new.1533/file.changes      2022-07-29 
16:46:53.638485071 +0200
@@ -1,0 +2,11 @@
+Wed Jul 13 11:01:16 UTC 2022 - Dr. Werner Fink <wer...@suse.de>
+
+- Add upstream patch to fix boo#1201350
+  * file-boo1201350.patch which combines the commits
+    c80065fe6900be5e794941e29b32440e9969b1c3
+    7e59d34206d7c962e093d4239e5367a2cd8b7623
+    f042050f59bfc037677871c4d1037c33273f5213
+    d471022b2772071877895759f209f2c346757a4c
+    441ac2b15508909e82ad467960df4ac0adf9644c
+
+-------------------------------------------------------------------

New:
----
  file-boo1201350.patch

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

Other differences:
------------------
++++++ file.spec ++++++
--- /var/tmp/diff_new_pack.PRHx7E/_old  2022-07-29 16:46:55.230489498 +0200
+++ /var/tmp/diff_new_pack.PRHx7E/_new  2022-07-29 16:46:55.234489509 +0200
@@ -62,7 +62,8 @@
 Patch32:        file-5.19-clicfs.dif
 Patch37:        file-secure_getenv.patch
 Patch39:        file-5.28-btrfs-image.dif
-# Upstream commits as patches
+# Upstream commits as patch
+Patch42:        file-boo1201350.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 %global         _sysconfdir /etc
 %global         _miscdir    %{_datadir}/misc
@@ -106,6 +107,7 @@
 
 %prep
 %setup -q -n file-%{version}
+%patch42 -p0
 %patch1  -p0 -b .misc
 %patch4  -p0 -b .conf
 %patch5  -p0 -b .tex
@@ -124,6 +126,7 @@
 %patch32 -p0 -b .clicfs
 %patch37 -p1 -b .getenv
 %patch39 -p1 -b .btrfs
+
 %patch -b .0
 test -s src/magic.h.in || cp -p src/magic.h src/magic.h.in
 rm -fv src/magic.h


++++++ file-boo1201350.patch ++++++
>From c80065fe6900be5e794941e29b32440e9969b1c3 Mon Sep 17 00:00:00 2001
From: Christos Zoulas <chris...@zoulas.com>
Date: Mon, 4 Jul 2022 19:44:35 +0000
Subject: [PATCH 1/5] PR/362: ro-ee: fix wide char printing

---
 src/file.c  |   97 +++++++++++++++++++++++++++++++++++++++++++++++-------------
 src/file.h  |    4 +-
 src/funcs.c |    4 +-
 3 files changed, 81 insertions(+), 24 deletions(-)

--- src/file.c
+++ src/file.c  2022-07-21 13:56:33.280169243 +0000
@@ -60,6 +60,12 @@ FILE_RCSID("@(#)$File: file.c,v 1.195 20
 #ifdef HAVE_WCTYPE_H
 #include <wctype.h>
 #endif
+#if defined(HAVE_WCHAR_H) && defined(HAVE_MBRTOWC) && defined(HAVE_WCWIDTH) && 
\
+   defined(HAVE_WCTYPE_H)
+#define FILE_WIDE_SUPPORT
+#else
+#include <ctype.h>
+#endif
 
 #if defined(HAVE_GETOPT_H) && defined(HAVE_STRUCT_OPTION)
 # include <getopt.h>
@@ -544,6 +550,58 @@ unwrap(struct magic_set *ms, const char
        return e;
 }
 
+private void
+file_octal(unsigned char c)
+{
+       putc('\\', stdout);
+       putc(((c >> 6) & 7) + '0', stdout);
+       putc(((c >> 3) & 7) + '0', stdout);
+       putc(((c >> 0) & 7) + '0', stdout);
+}
+
+private void
+fname_print(const char *inname)
+{
+       size_t n = strlen(inname);
+#ifdef FILE_WIDE_SUPPORT
+       mbstate_t state;
+       wchar_t nextchar;
+       size_t bytesconsumed;
+
+
+       (void)memset(&state, 0, sizeof(state));
+       while (n > 0) {
+               bytesconsumed = mbrtowc(&nextchar, inname, n, &state);
+               if (bytesconsumed == CAST(size_t, -1) ||
+                   bytesconsumed == CAST(size_t, -2))  {
+                       nextchar = *inname++;
+                       n--;
+                       (void)memset(&state, 0, sizeof(state));
+                       file_octal(CAST(unsigned char, nextchar));
+                       continue;
+               }
+               inname += bytesconsumed;
+               n -= bytesconsumed;
+               if (iswprint(nextchar)) {
+                       printf("%lc", nextchar);
+                       continue;
+               }
+               /* XXX: What if it is > 255? */
+               file_octal(CAST(unsigned char, nextchar));
+       }
+#else
+       size_t i;
+       for (i = 0; i < n; i++) {
+               unsigned char c = CAST(unsigned char, inname[i]);
+               if (isprint(c)) {
+                       putc(c);
+                       continue;
+               }
+               file_octal(c);
+       }
+#endif
+}
+
 /*
  * Called for each input file on the command line (or in a list of files)
  */
@@ -553,15 +611,13 @@ process(struct magic_set *ms, const char
        const char *type, c = nulsep > 1 ? '\0' : '\n';
        int std_in = strcmp(inname, "-") == 0;
        int haderror = 0;
-       size_t plen = 4 * wid + 1;
-       char *pbuf, *pname;
-
-       if ((pbuf = CAST(char *, malloc(plen))) == NULL)
-           file_err(EXIT_FAILURE, "Can't allocate %zu bytes", plen);
 
        if (wid > 0 && !bflag) {
-               pname = file_printable(ms, pbuf, plen, inname, wid);
-               (void)printf("%s", std_in ? "/dev/stdin" : pname);
+               const char *pname = std_in ? "/dev/stdin" : inname;
+               if ((ms->flags & MAGIC_RAW) == 0)
+                       fname_print(pname);
+               else
+                       (void)printf("%s", pname);
                if (nulsep)
                        (void)putc('\0', stdout);
                if (nulsep < 2) {
@@ -580,7 +636,6 @@ process(struct magic_set *ms, const char
        }
        if (nobuffer)
                haderror |= fflush(stdout) != 0;
-       free(pbuf);
        return haderror || type == NULL;
 }
 
@@ -588,35 +643,37 @@ protected size_t
 file_mbswidth(struct magic_set *ms, const char *s)
 {
        size_t width = 0;
-#if defined(HAVE_WCHAR_H) && defined(HAVE_MBRTOWC) && defined(HAVE_WCWIDTH) && 
\
-   defined(HAVE_WCTYPE_H)
-       size_t bytesconsumed, old_n, n;
+#ifdef FILE_WIDE_SUPPORT
+       size_t bytesconsumed, n;
        mbstate_t state;
        wchar_t nextchar;
-       (void)memset(&state, 0, sizeof(mbstate_t));
-       old_n = n = strlen(s);
+
+       (void)memset(&state, 0, sizeof(state));
+       n = strlen(s);
 
        while (n > 0) {
                bytesconsumed = mbrtowc(&nextchar, s, n, &state);
                if (bytesconsumed == CAST(size_t, -1) ||
                    bytesconsumed == CAST(size_t, -2)) {
-                       /* Something went wrong, return something reasonable */
-                       return old_n;
+                       nextchar = *s;
+                       bytesconsumed = 1;
+                       (void)memset(&state, 0, sizeof(state));
+                       width += 4;
+               } else {
+                       int w = wcwidth(nextchar);
+                       width += ((ms->flags & MAGIC_RAW) != 0
+                           || iswprint(nextchar)) ? (w > 0 ? w : 1) : 4;
                }
-               width += ((ms->flags & MAGIC_RAW) != 0
-                   || iswprint(nextchar)) ? wcwidth(nextchar) : 4;
 
                s += bytesconsumed, n -= bytesconsumed;
        }
-       return width;
 #else
        while (*s) {
                width += (ms->flags & MAGIC_RAW) != 0
                    || isprint(CAST(unsigned char, *s)) ? 1 : 4;
        }
-
-       return strlen(s);
 #endif
+       return width;
 }
 
 private void
--- src/file.h
+++ src/file.h  2022-07-21 13:56:33.280169243 +0000
@@ -575,7 +575,7 @@ protected size_t file_pstring_length_siz
     const struct magic *);
 protected size_t file_pstring_get_length(struct magic_set *,
     const struct magic *, const char *);
-public char * file_printable(struct magic_set *, char *, size_t,
+protected char * file_printable(struct magic_set *, char *, size_t,
     const char *, size_t);
 #ifdef __EMX__
 protected int file_os2_apptype(struct magic_set *, const char *, const void *,
--- src/funcs.c
+++ src/funcs.c 2022-07-21 13:56:33.280169243 +0000
@@ -763,7 +763,7 @@ file_pop_buffer(struct magic_set *ms, fi
 /*
  * convert string to ascii printable format.
  */
-public char *
+protected char *
 file_printable(struct magic_set *ms, char *buf, size_t bufsiz,
     const char *str, size_t slen)
 {

Reply via email to