linux-qubasis
linux oasis port as a qubes template
git clone https://9o.is/git/linux-qubasis.git
0005-Avoid-statement-expressions-min-max.patch
(10603B)
1 From ad5d729e363236dbdcf15b82d8575bd5d9db77ea Mon Sep 17 00:00:00 2001
2 From: Michael Forney <mforney@mforney.org>
3 Date: Tue, 12 Mar 2019 17:13:45 -0700
4 Subject: [PATCH] Avoid statement expressions min/max
5
6 ---
7 include/c.h | 24 ++++++++++--------------
8 include/strutils.h | 3 ++-
9 lib/mbsalign.c | 2 +-
10 libblkid/src/superblocks/befs.c | 6 +++---
11 libblkid/src/superblocks/exfat.c | 2 +-
12 libblkid/src/superblocks/iso9660.c | 4 ++--
13 libblkid/src/superblocks/minix.c | 4 ++--
14 libfdisk/src/alignment.c | 8 ++++----
15 libfdisk/src/context.c | 4 ++--
16 libfdisk/src/gpt.c | 4 ++--
17 libsmartcols/src/calculate.c | 8 ++++----
18 libsmartcols/src/column.c | 2 +-
19 12 files changed, 34 insertions(+), 37 deletions(-)
20
21 diff --git a/include/c.h b/include/c.h
22 index b420b5187..fe82a8847 100644
23 --- a/include/c.h
24 +++ b/include/c.h
25 @@ -141,21 +141,17 @@
26 # define FALSE 0
27 #endif
28
29 -#ifndef min
30 -# define min(x, y) __extension__ ({ \
31 - __typeof__(x) _min1 = (x); \
32 - __typeof__(y) _min2 = (y); \
33 - (void) (&_min1 == &_min2); \
34 - _min1 < _min2 ? _min1 : _min2; })
35 -#endif
36 +static inline uintmax_t
37 +umax(uintmax_t x, uintmax_t y)
38 +{
39 + return x > y ? x : y;
40 +}
41
42 -#ifndef max
43 -# define max(x, y) __extension__ ({ \
44 - __typeof__(x) _max1 = (x); \
45 - __typeof__(y) _max2 = (y); \
46 - (void) (&_max1 == &_max2); \
47 - _max1 > _max2 ? _max1 : _max2; })
48 -#endif
49 +static inline uintmax_t
50 +umin(uintmax_t x, uintmax_t y)
51 +{
52 + return x < y ? x : y;
53 +}
54
55 #ifndef cmp_numbers
56 # define cmp_numbers(x, y) __extension__ ({ \
57 diff --git a/include/strutils.h b/include/strutils.h
58 index 7969a84d0..45c1768f0 100644
59 --- a/include/strutils.h
60 +++ b/include/strutils.h
61 @@ -70,7 +70,8 @@ static inline void xstrncpy(char *dest, const char *src, size_t n)
62
63 if (!len)
64 return;
65 - len = min(len, n - 1);
66 + if (n - 1 < len)
67 + len = n - 1;
68 memcpy(dest, src, len);
69 dest[len] = 0;
70 }
71 diff --git a/lib/mbsalign.c b/lib/mbsalign.c
72 index e251202af..f3ea1a2df 100644
73 --- a/lib/mbsalign.c
74 +++ b/lib/mbsalign.c
75 @@ -614,7 +614,7 @@ mbsalign_unibyte:
76
77 dest = mbs_align_pad (dest, dest_end, start_spaces, padchar);
78 space_left = dest_end - dest;
79 - dest = mempcpy (dest, str_to_print, min (n_used_bytes, space_left));
80 + dest = mempcpy (dest, str_to_print, umin (n_used_bytes, space_left));
81 mbs_align_pad (dest, dest_end, end_spaces, padchar);
82 }
83 #ifdef HAVE_WIDECHAR
84 diff --git a/libblkid/src/superblocks/befs.c b/libblkid/src/superblocks/befs.c
85 index 211feae9f..35c2b19c4 100644
86 --- a/libblkid/src/superblocks/befs.c
87 +++ b/libblkid/src/superblocks/befs.c
88 @@ -257,7 +257,7 @@ static int32_t compare_keys(const char keys1[], uint16_t keylengths1[],
89
90 key1 = &keys1[keystart1];
91
92 - result = strncmp(key1, key2, min(keylength1, keylength2));
93 + result = strncmp(key1, key2, umin(keylength1, keylength2));
94
95 if (result == 0)
96 return keylength1 - keylength2;
97 @@ -386,8 +386,8 @@ static int get_uuid(blkid_probe pr, const struct befs_super_block *bs,
98
99 bi_size = (uint64_t)FS16_TO_CPU(bs->root_dir.len, fs_le) <<
100 FS32_TO_CPU(bs->block_shift, fs_le);
101 - sd_total_size = min(bi_size - sizeof(struct befs_inode),
102 - (uint64_t)FS32_TO_CPU(bi->inode_size, fs_le));
103 + sd_total_size = umin(bi_size - sizeof(struct befs_inode),
104 + (uint64_t)FS32_TO_CPU(bi->inode_size, fs_le));
105
106 offset = 0;
107
108 diff --git a/libblkid/src/superblocks/exfat.c b/libblkid/src/superblocks/exfat.c
109 index f586ec786..3c0448027 100644
110 --- a/libblkid/src/superblocks/exfat.c
111 +++ b/libblkid/src/superblocks/exfat.c
112 @@ -126,7 +126,7 @@ static int probe_exfat(blkid_probe pr, const struct blkid_idmag *mag)
113 label = find_label(pr, sb);
114 if (label)
115 blkid_probe_set_utf8label(pr, label->name,
116 - min((size_t) label->length * 2, sizeof(label->name)),
117 + umin((size_t) label->length * 2, sizeof(label->name)),
118 UL_ENCODE_UTF16LE);
119 else if (errno)
120 return -errno;
121 diff --git a/libblkid/src/superblocks/iso9660.c b/libblkid/src/superblocks/iso9660.c
122 index 289a325c8..ac4cc274f 100644
123 --- a/libblkid/src/superblocks/iso9660.c
124 +++ b/libblkid/src/superblocks/iso9660.c
125 @@ -228,8 +228,8 @@ static int probe_iso9660(blkid_probe pr, const struct blkid_idmag *mag)
126 unsigned char *desc =
127 blkid_probe_get_buffer(pr,
128 off,
129 - max(sizeof(struct boot_record),
130 - sizeof(struct iso_volume_descriptor)));
131 + umax(sizeof(struct boot_record),
132 + sizeof(struct iso_volume_descriptor)));
133
134 if (desc == NULL || desc[0] == ISO_VD_END)
135 break;
136 diff --git a/libblkid/src/superblocks/minix.c b/libblkid/src/superblocks/minix.c
137 index b521efb2b..d1fb64f64 100644
138 --- a/libblkid/src/superblocks/minix.c
139 +++ b/libblkid/src/superblocks/minix.c
140 @@ -83,8 +83,8 @@ static int probe_minix(blkid_probe pr,
141 unsigned block_size;
142
143 data = blkid_probe_get_buffer(pr, 1024,
144 - max(sizeof(struct minix_super_block),
145 - sizeof(struct minix3_super_block)));
146 + umax(sizeof(struct minix_super_block),
147 + sizeof(struct minix3_super_block)));
148 if (!data)
149 return errno ? -errno : 1;
150 version = get_minix_version(data, &swabme);
151 diff --git a/libfdisk/src/alignment.c b/libfdisk/src/alignment.c
152 index 3ae721913..a1a05f48a 100644
153 --- a/libfdisk/src/alignment.c
154 +++ b/libfdisk/src/alignment.c
155 @@ -38,7 +38,7 @@
156 */
157 static int lba_is_aligned(struct fdisk_context *cxt, uintmax_t lba)
158 {
159 - unsigned long granularity = max(cxt->phy_sector_size, cxt->min_io_size);
160 + unsigned long granularity = umax(cxt->phy_sector_size, cxt->min_io_size);
161 uintmax_t offset;
162
163 if (cxt->grain > granularity)
164 @@ -54,7 +54,7 @@ static int lba_is_aligned(struct fdisk_context *cxt, uintmax_t lba)
165 */
166 static int lba_is_phy_aligned(struct fdisk_context *cxt, fdisk_sector_t lba)
167 {
168 - unsigned long granularity = max(cxt->phy_sector_size, cxt->min_io_size);
169 + unsigned long granularity = umax(cxt->phy_sector_size, cxt->min_io_size);
170 uintmax_t offset = (lba * cxt->sector_size) % granularity;
171
172 return !((granularity + cxt->alignment_offset - offset) % granularity);
173 @@ -103,7 +103,7 @@ fdisk_sector_t fdisk_align_lba(struct fdisk_context *cxt, fdisk_sector_t lba, in
174 * according the offset to be on the physical boundary.
175 */
176 /* fprintf(stderr, "LBA: %llu apply alignment_offset\n", res); */
177 - res -= (max(cxt->phy_sector_size, cxt->min_io_size) -
178 + res -= (umax(cxt->phy_sector_size, cxt->min_io_size) -
179 cxt->alignment_offset) / cxt->sector_size;
180
181 if (direction == FDISK_ALIGN_UP && res < lba)
182 @@ -398,7 +398,7 @@ int fdisk_apply_user_device_properties(struct fdisk_context *cxt)
183 fdisk_reset_alignment(cxt);
184
185 if (cxt->user_grain) {
186 - unsigned long granularity = max(cxt->phy_sector_size, cxt->min_io_size);
187 + unsigned long granularity = umax(cxt->phy_sector_size, cxt->min_io_size);
188
189 cxt->grain = cxt->user_grain < granularity ? granularity : cxt->user_grain;
190 DBG(CXT, ul_debugobj(cxt, "new grain: %lu", cxt->grain));
191 diff --git a/libfdisk/src/context.c b/libfdisk/src/context.c
192 index 083b255d3..a3bfff993 100644
193 --- a/libfdisk/src/context.c
194 +++ b/libfdisk/src/context.c
195 @@ -919,7 +919,7 @@ int fdisk_reread_changes(struct fdisk_context *cxt, struct fdisk_table *org)
196 /* the current layout */
197 fdisk_get_partitions(cxt, &tb);
198 /* maximal number of partitions */
199 - nparts = max(fdisk_table_get_nents(tb), fdisk_table_get_nents(org));
200 + nparts = umax(fdisk_table_get_nents(tb), fdisk_table_get_nents(org));
201
202 while (fdisk_diff_tables(org, tb, &itr, &pa, &change) == 0) {
203 if (change == FDISK_DIFF_UNCHANGED)
204 @@ -976,7 +976,7 @@ int fdisk_reread_changes(struct fdisk_context *cxt, struct fdisk_table *org)
205 /* Let's follow the Linux kernel and reduce
206 * DOS extended partition to 1 or 2 sectors.
207 */
208 - sz = min(sz, (uint64_t) 2);
209 + sz = umin(sz, (uint64_t) 2);
210
211 if (partx_add_partition(cxt->dev_fd, pa->partno + 1,
212 pa->start * ssf, sz) != 0) {
213 diff --git a/libfdisk/src/gpt.c b/libfdisk/src/gpt.c
214 index 5fd9b4d73..97e23767d 100644
215 --- a/libfdisk/src/gpt.c
216 +++ b/libfdisk/src/gpt.c
217 @@ -504,7 +504,7 @@ static int gpt_mknew_pmbr(struct fdisk_context *cxt)
218 pmbr->partition_record[0].end_track = 0xFF;
219 pmbr->partition_record[0].starting_lba = cpu_to_le32(1);
220 pmbr->partition_record[0].size_in_lba =
221 - cpu_to_le32((uint32_t) min( cxt->total_sectors - 1ULL, 0xFFFFFFFFULL) );
222 + cpu_to_le32((uint32_t) umin(cxt->total_sectors - 1ULL, 0xFFFFFFFFULL));
223
224 return 0;
225 }
226 @@ -956,7 +956,7 @@ static int valid_pmbr(struct fdisk_context *cxt)
227 /* Note that gpt_write_pmbr() overwrites PMBR, but we want to keep it valid already
228 * in memory too to disable warnings when valid_pmbr() called next time */
229 pmbr->partition_record[part].size_in_lba =
230 - cpu_to_le32((uint32_t) min( cxt->total_sectors - 1ULL, 0xFFFFFFFFULL) );
231 + cpu_to_le32((uint32_t) umin(cxt->total_sectors - 1ULL, 0xFFFFFFFFULL));
232 fdisk_label_set_changed(cxt->label, 1);
233 }
234 }
235 diff --git a/libsmartcols/src/calculate.c b/libsmartcols/src/calculate.c
236 index 974fc340c..0c11627a7 100644
237 --- a/libsmartcols/src/calculate.c
238 +++ b/libsmartcols/src/calculate.c
239 @@ -57,7 +57,7 @@ static int count_cell_width(struct libscols_table *tb,
240
241 if (len == (size_t) -1) /* ignore broken multibyte strings */
242 len = 0;
243 - cl->width_max = max(len, cl->width_max);
244 + cl->width_max = umax(len, cl->width_max);
245
246 if (cl->is_extreme && cl->width_avg && len > cl->width_avg * 2)
247 return 0;
248 @@ -66,10 +66,10 @@ static int count_cell_width(struct libscols_table *tb,
249 cl->extreme_sum += len;
250 cl->extreme_count++;
251 }
252 - cl->width = max(len, cl->width);
253 + cl->width = umax(len, cl->width);
254 if (scols_column_is_tree(cl)) {
255 size_t treewidth = buffer_get_safe_art_size(buf);
256 - cl->width_treeart = max(cl->width_treeart, treewidth);
257 + cl->width_treeart = umax(cl->width_treeart, treewidth);
258 }
259 return 0;
260 }
261 @@ -115,7 +115,7 @@ static int count_column_width(struct libscols_table *tb,
262 if (data) {
263 size_t len = scols_table_is_noencoding(tb) ?
264 mbs_width(data) : mbs_safe_width(data);
265 - cl->width_min = max(cl->width_min, len);
266 + cl->width_min = umax(cl->width_min, len);
267 } else
268 no_header = 1;
269
270 diff --git a/libsmartcols/src/column.c b/libsmartcols/src/column.c
271 index c11df69f5..1285d42e6 100644
272 --- a/libsmartcols/src/column.c
273 +++ b/libsmartcols/src/column.c
274 @@ -347,7 +347,7 @@ size_t scols_wrapnl_chunksize(const struct libscols_column *cl __attribute__((un
275 mbs_width(data) :
276 mbs_safe_width(data);
277 }
278 - sum = max(sum, sz);
279 + sum = umax(sum, sz);
280 data = p;
281 }
282
283 --
284 2.37.3
285