File: D1251.bash5-check-printf.patch

package info (click to toggle)
ble.sh 0.4.0~git20250321.d4c812b-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 12,516 kB
  • sloc: sh: 71,367; awk: 1,316; cpp: 750; ansic: 186; javascript: 43; makefile: 35
file content (133 lines) | stat: -rw-r--r-- 3,385 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
From 679f9db5a6d70784bd7ee3a1d947ab10f71623b6 Mon Sep 17 00:00:00 2001
From: Koichi Murase <myoga.murase@gmail.com>
Date: Tue, 4 Feb 2020 19:01:57 +0800
Subject: [PATCH] bash-5.0.11: check printf \uXXXX

---
 builtins/printf.def | 14 ++++++++------
 lib/sh/unicode.c    | 12 ++++++++----
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/builtins/printf.def b/builtins/printf.def
index bc6ef57..164d80c 100644
--- a/builtins/printf.def
+++ b/builtins/printf.def
@@ -414,7 +414,7 @@ printf_builtin (list)
 	  modstart = fmt;
 	  while (*fmt && strchr (LENMODS, *fmt))
 	    fmt++;
-	    
+
 	  if (*fmt == 0)
 	    {
 	      builtin_error (_("`%s': missing format character"), start);
@@ -814,7 +814,7 @@ printstr (fmt, string, len, fieldwidth, precision)
 
   return (ferror (stdout) ? -1 : 0);
 }
-  
+
 /* Convert STRING by expanding the escape sequences specified by the
    POSIX standard for printf's `%b' format string.  If SAWC is non-null,
    perform the processing appropriate for %b arguments.  In particular,
@@ -913,7 +913,7 @@ tescape (estart, cp, lenp, sawc)
 	  }
 	break;
 #endif
-	
+
       case '\\':	/* \\ -> \ */
 	*cp = c;
 	break;
@@ -996,7 +996,7 @@ bexpand (string, len, sawc, lenp)
 	*r++ = mbch[mbind];
 #else
       *r++ = c;
-#endif      
+#endif
     }
 
   *r = '\0';
@@ -1070,7 +1070,7 @@ vbprintf (format, va_alist)
   if  (strlen (vbuf) != vblen)
     internal_error  ("printf:vbprintf: vblen (%d) != strlen (vbuf) (%d)", vblen, (int)strlen (vbuf));
 #endif
-  
+
   return (blen);
 }
 
@@ -1198,7 +1198,7 @@ getuintmax ()
 
   errno = 0;
   ret = strtoumax (garglist->word->word, &ep, 0);
-  
+
   if (*ep)
     {
       sh_invalidnum (garglist->word->word);
@@ -1262,12 +1262,14 @@ asciicode ()
   slen = strlen (garglist->word->word+1);
   wc = 0;
   mblength = mbtowc (&wc, garglist->word->word+1, slen);
+//printf("MBLENGTH=%d;wc=%d\n",(int)mblength,(int)wc);
   if (mblength > 0)
     ch = wc;		/* XXX */
   else
 #endif
     ch = (unsigned char)garglist->word->word[1];
 
+//if(mblength==-1)printf("MBLENGTH=%d;wc=%d;ch=%d\n",(int)mblength,(int)wc,(int)ch);
   garglist = garglist->next;
   return (ch);
 }
diff --git a/lib/sh/unicode.c b/lib/sh/unicode.c
index fe13c4a..79f8aeb 100644
--- a/lib/sh/unicode.c
+++ b/lib/sh/unicode.c
@@ -132,7 +132,7 @@ u32tochar (x, s)
       s[3] = x & 0xFF;
     }
   s[l] = '\0';
-  return l;  
+  return l;
 }
 
 int
@@ -291,18 +291,22 @@ u32cconv (c, s)
     }
 
   /* NL_LANGINFO and locale_charset used when setting locale_utf8locale */
-  
+
   /* If we have a UTF-8 locale, convert to UTF-8 and return converted value. */
+{FILE* f = fopen("/dev/tty","w");
   n = u32toutf8 (c, s);
+fprintf(f,"C%x,N%d\n\n",c,n);
+fclose(f);
   if (utf8locale)
     return n;
+}
 
   /* If the conversion is not supported, even the ASCII requested above, we
      bail now.  Currently we return the UTF-8 conversion.  We could return
      u32tocesc(). */
   if (localconv == (iconv_t)-1)
     return n;
-    
+
   optr = obuf;
   obytesleft = sizeof (obuf);
   iptr = s;
@@ -312,7 +316,7 @@ u32cconv (c, s)
 
   if (iconv (localconv, (ICONV_CONST char **)&iptr, &sn, &optr, &obytesleft) == (size_t)-1)
     {
-      /* You get ISO C99 escape sequences if iconv fails */      
+      /* You get ISO C99 escape sequences if iconv fails */
       n = u32tocesc (c, s);
       return n;
     }
-- 
2.21.0