logo

oasis

Own branch of Oasis Linux (upstream: <https://git.sr.ht/~mcf/oasis/>) git clone https://anongit.hacktivis.me/git/oasis.git

0004-Avoid-statement-expressions-min-max.patch (12721B)


  1. From 965ca8368f78249ab7e64e4b7686e6b0d7d77084 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. include/c.h | 24 ++++++++++--------------
  7. include/strutils.h | 3 ++-
  8. lib/mbsalign.c | 2 +-
  9. lib/sysfs.c | 4 ++--
  10. libblkid/src/probe.c | 4 ++--
  11. libblkid/src/superblocks/befs.c | 6 +++---
  12. libblkid/src/superblocks/exfat.c | 2 +-
  13. libblkid/src/superblocks/iso9660.c | 4 ++--
  14. libblkid/src/superblocks/minix.c | 4 ++--
  15. libblkid/src/superblocks/romfs.c | 2 +-
  16. libfdisk/src/alignment.c | 8 ++++----
  17. libfdisk/src/context.c | 4 ++--
  18. libfdisk/src/gpt.c | 4 ++--
  19. libsmartcols/src/calculate.c | 6 +++---
  20. libsmartcols/src/column.c | 7 ++++---
  21. 15 files changed, 41 insertions(+), 43 deletions(-)
  22. diff --git a/include/c.h b/include/c.h
  23. index 3ba42306c..1ba8c2beb 100644
  24. --- a/include/c.h
  25. +++ b/include/c.h
  26. @@ -145,21 +145,17 @@
  27. # define FALSE 0
  28. #endif
  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. -#ifndef max
  42. -# define max(x, y) __extension__ ({ \
  43. - __typeof__(x) _max1 = (x); \
  44. - __typeof__(y) _max2 = (y); \
  45. - (void) (&_max1 == &_max2); \
  46. - _max1 > _max2 ? _max1 : _max2; })
  47. -#endif
  48. +static inline uintmax_t
  49. +umin(uintmax_t x, uintmax_t y)
  50. +{
  51. + return x < y ? x : y;
  52. +}
  53. #ifndef abs_diff
  54. # define abs_diff(x, y) __extension__ ({ \
  55. diff --git a/include/strutils.h b/include/strutils.h
  56. index a7177fc23..273aaedb8 100644
  57. --- a/include/strutils.h
  58. +++ b/include/strutils.h
  59. @@ -90,7 +90,8 @@ static inline int xstrncpy(char *dest, const char *src, size_t n)
  60. if (!len)
  61. return 0;
  62. - len = min(len, n - 1);
  63. + if (n - 1 < len)
  64. + len = n - 1;
  65. memcpy(dest, src, len);
  66. dest[len] = 0;
  67. return len;
  68. diff --git a/lib/mbsalign.c b/lib/mbsalign.c
  69. index b4ab7becd..ea531119b 100644
  70. --- a/lib/mbsalign.c
  71. +++ b/lib/mbsalign.c
  72. @@ -629,7 +629,7 @@ mbsalign_unibyte:
  73. dest = mbs_align_pad (dest, dest_end, start_spaces, padchar);
  74. space_left = dest_end - dest;
  75. - dest = mempcpy (dest, str_to_print, min (n_used_bytes, space_left));
  76. + dest = mempcpy (dest, str_to_print, umin (n_used_bytes, space_left));
  77. mbs_align_pad (dest, dest_end, end_spaces, padchar);
  78. }
  79. #ifdef HAVE_WIDECHAR
  80. diff --git a/lib/sysfs.c b/lib/sysfs.c
  81. index c888617b7..7ecfdc9a8 100644
  82. --- a/lib/sysfs.c
  83. +++ b/lib/sysfs.c
  84. @@ -479,9 +479,9 @@ static int sysfs_devchain_is_removable(char *chain)
  85. close(fd);
  86. if (rc > 0) {
  87. - if (strncmp(buf, "fixed", min(rc, 5)) == 0) {
  88. + if (strncmp(buf, "fixed", umin(rc, 5)) == 0) {
  89. return 0;
  90. - } else if (strncmp(buf, "removable", min(rc, 9)) == 0) {
  91. + } else if (strncmp(buf, "removable", umin(rc, 9)) == 0) {
  92. return 1;
  93. }
  94. }
  95. diff --git a/libblkid/src/probe.c b/libblkid/src/probe.c
  96. index a38f5990e..8aea0cd5f 100644
  97. --- a/libblkid/src/probe.c
  98. +++ b/libblkid/src/probe.c
  99. @@ -1021,7 +1021,7 @@ static uint64_t blkid_get_io_size(int fd)
  100. for (i = 0; i < ARRAY_SIZE(ioctls); i++) {
  101. r = ioctl(fd, ioctls[i], &s);
  102. if (r == 0 && is_power_of_2(s) && s >= DEFAULT_SECTOR_SIZE)
  103. - return min(s, 1U << 16);
  104. + return umin(s, 1U << 16);
  105. }
  106. return DEFAULT_SECTOR_SIZE;
  107. @@ -2009,7 +2009,7 @@ static void blkid_probe_log_csum_mismatch(blkid_probe pr, size_t n, const void *
  108. {
  109. char csum_hex[256];
  110. char expected_hex[sizeof(csum_hex)];
  111. - int hex_size = min(sizeof(csum_hex), n * 2);
  112. + int hex_size = umin(sizeof(csum_hex), n * 2);
  113. for (int i = 0; i < hex_size; i+=2) {
  114. snprintf(&csum_hex[i], sizeof(csum_hex) - i, "%02X", ((const unsigned char *) csum)[i / 2]);
  115. diff --git a/libblkid/src/superblocks/befs.c b/libblkid/src/superblocks/befs.c
  116. index 5d082a949..322118601 100644
  117. --- a/libblkid/src/superblocks/befs.c
  118. +++ b/libblkid/src/superblocks/befs.c
  119. @@ -264,7 +264,7 @@ static int32_t compare_keys(const char keys1[], uint16_t keylengths1[],
  120. key1 = &keys1[keystart1];
  121. - result = strncmp(key1, key2, min(keylength1, keylength2));
  122. + result = strncmp(key1, key2, umin(keylength1, keylength2));
  123. if (result == 0)
  124. return keylength1 - keylength2;
  125. @@ -393,8 +393,8 @@ static int get_uuid(blkid_probe pr, const struct befs_super_block *bs,
  126. bi_size = (uint64_t)FS16_TO_CPU(bs->root_dir.len, fs_le) <<
  127. FS32_TO_CPU(bs->block_shift, fs_le);
  128. - sd_total_size = min(bi_size - sizeof(struct befs_inode),
  129. - (uint64_t)FS32_TO_CPU(bi->inode_size, fs_le));
  130. + sd_total_size = umin(bi_size - sizeof(struct befs_inode),
  131. + (uint64_t)FS32_TO_CPU(bi->inode_size, fs_le));
  132. offset = 0;
  133. diff --git a/libblkid/src/superblocks/exfat.c b/libblkid/src/superblocks/exfat.c
  134. index a7d3e0298..a67e6f5e0 100644
  135. --- a/libblkid/src/superblocks/exfat.c
  136. +++ b/libblkid/src/superblocks/exfat.c
  137. @@ -259,7 +259,7 @@ static int probe_exfat(blkid_probe pr, const struct blkid_idmag *mag)
  138. label = find_label(pr, sb);
  139. if (label)
  140. blkid_probe_set_utf8label(pr, label->name,
  141. - min((size_t) label->length * 2, sizeof(label->name)),
  142. + umin((size_t) label->length * 2, sizeof(label->name)),
  143. UL_ENCODE_UTF16LE);
  144. else if (errno)
  145. return -errno;
  146. diff --git a/libblkid/src/superblocks/iso9660.c b/libblkid/src/superblocks/iso9660.c
  147. index a7a364f30..6567dc519 100644
  148. --- a/libblkid/src/superblocks/iso9660.c
  149. +++ b/libblkid/src/superblocks/iso9660.c
  150. @@ -257,8 +257,8 @@ static int probe_iso9660(blkid_probe pr, const struct blkid_idmag *mag)
  151. const unsigned char *desc =
  152. blkid_probe_get_buffer(pr,
  153. off + (is_hs ? 8 : 0), /* High Sierra has 8 bytes before descriptor with Volume Descriptor LBN value */
  154. - max(sizeof(struct boot_record),
  155. - sizeof(struct iso_volume_descriptor)));
  156. + umax(sizeof(struct boot_record),
  157. + sizeof(struct iso_volume_descriptor)));
  158. if (desc == NULL || desc[0] == ISO_VD_END)
  159. break;
  160. diff --git a/libblkid/src/superblocks/minix.c b/libblkid/src/superblocks/minix.c
  161. index dba299d23..b18bcf89e 100644
  162. --- a/libblkid/src/superblocks/minix.c
  163. +++ b/libblkid/src/superblocks/minix.c
  164. @@ -83,8 +83,8 @@ static int probe_minix(blkid_probe pr,
  165. unsigned block_size;
  166. data = blkid_probe_get_buffer(pr, 1024,
  167. - max(sizeof(struct minix_super_block),
  168. - sizeof(struct minix3_super_block)));
  169. + umax(sizeof(struct minix_super_block),
  170. + sizeof(struct minix3_super_block)));
  171. if (!data)
  172. return errno ? -errno : 1;
  173. version = get_minix_version(data, &swabme);
  174. diff --git a/libblkid/src/superblocks/romfs.c b/libblkid/src/superblocks/romfs.c
  175. index 86c09adc3..ac2f0ba78 100644
  176. --- a/libblkid/src/superblocks/romfs.c
  177. +++ b/libblkid/src/superblocks/romfs.c
  178. @@ -27,7 +27,7 @@ struct romfs_super_block {
  179. static int romfs_verify_csum(blkid_probe pr, const struct blkid_idmag *mag,
  180. const struct romfs_super_block *ros)
  181. {
  182. - uint32_t csummed_size = min((uint32_t) 512,
  183. + uint32_t csummed_size = umin((uint32_t) 512,
  184. be32_to_cpu(ros->ros_full_size));
  185. const unsigned char *csummed;
  186. uint32_t csum;
  187. diff --git a/libfdisk/src/alignment.c b/libfdisk/src/alignment.c
  188. index 2c7a00486..6fc1b9b9d 100644
  189. --- a/libfdisk/src/alignment.c
  190. +++ b/libfdisk/src/alignment.c
  191. @@ -38,7 +38,7 @@
  192. */
  193. static int lba_is_aligned(struct fdisk_context *cxt, uintmax_t lba)
  194. {
  195. - unsigned long granularity = max(cxt->phy_sector_size, cxt->min_io_size);
  196. + unsigned long granularity = umax(cxt->phy_sector_size, cxt->min_io_size);
  197. uintmax_t offset;
  198. if (cxt->grain > granularity)
  199. @@ -54,7 +54,7 @@ static int lba_is_aligned(struct fdisk_context *cxt, uintmax_t lba)
  200. */
  201. static int lba_is_phy_aligned(struct fdisk_context *cxt, fdisk_sector_t lba)
  202. {
  203. - unsigned long granularity = max(cxt->phy_sector_size, cxt->min_io_size);
  204. + unsigned long granularity = umax(cxt->phy_sector_size, cxt->min_io_size);
  205. uintmax_t offset = (lba * cxt->sector_size) % granularity;
  206. return !((granularity + cxt->alignment_offset - offset) % granularity);
  207. @@ -103,7 +103,7 @@ fdisk_sector_t fdisk_align_lba(struct fdisk_context *cxt, fdisk_sector_t lba, in
  208. * according the offset to be on the physical boundary.
  209. */
  210. /* fprintf(stderr, "LBA: %llu apply alignment_offset\n", res); */
  211. - res -= (max(cxt->phy_sector_size, cxt->min_io_size) -
  212. + res -= (umax(cxt->phy_sector_size, cxt->min_io_size) -
  213. cxt->alignment_offset) / cxt->sector_size;
  214. if (direction == FDISK_ALIGN_UP && res < lba)
  215. @@ -405,7 +405,7 @@ int fdisk_apply_user_device_properties(struct fdisk_context *cxt)
  216. return rc;
  217. if (cxt->user_grain) {
  218. - unsigned long granularity = max(cxt->phy_sector_size, cxt->min_io_size);
  219. + unsigned long granularity = umax(cxt->phy_sector_size, cxt->min_io_size);
  220. cxt->grain = cxt->user_grain < granularity ? granularity : cxt->user_grain;
  221. DBG(CXT, ul_debugobj(cxt, "new grain: %lu", cxt->grain));
  222. diff --git a/libfdisk/src/context.c b/libfdisk/src/context.c
  223. index 3b2a4d25f..b1363bbd9 100644
  224. --- a/libfdisk/src/context.c
  225. +++ b/libfdisk/src/context.c
  226. @@ -920,7 +920,7 @@ int fdisk_reread_changes(struct fdisk_context *cxt, struct fdisk_table *org)
  227. /* the current layout */
  228. fdisk_get_partitions(cxt, &tb);
  229. /* maximal number of partitions */
  230. - nparts = max(fdisk_table_get_nents(tb), fdisk_table_get_nents(org));
  231. + nparts = umax(fdisk_table_get_nents(tb), fdisk_table_get_nents(org));
  232. while (fdisk_diff_tables(org, tb, &itr, &pa, &change) == 0) {
  233. if (change == FDISK_DIFF_UNCHANGED)
  234. @@ -977,7 +977,7 @@ int fdisk_reread_changes(struct fdisk_context *cxt, struct fdisk_table *org)
  235. /* Let's follow the Linux kernel and reduce
  236. * DOS extended partition to 1 or 2 sectors.
  237. */
  238. - sz = min(sz, (uint64_t) 2);
  239. + sz = umin(sz, (uint64_t) 2);
  240. if (partx_add_partition(cxt->dev_fd, pa->partno + 1,
  241. pa->start * ssf, sz) != 0) {
  242. diff --git a/libfdisk/src/gpt.c b/libfdisk/src/gpt.c
  243. index 85040fb6b..76a6ab65b 100644
  244. --- a/libfdisk/src/gpt.c
  245. +++ b/libfdisk/src/gpt.c
  246. @@ -506,7 +506,7 @@ static int gpt_mknew_pmbr(struct fdisk_context *cxt)
  247. pmbr->partition_record[0].end_track = 0xFF;
  248. pmbr->partition_record[0].starting_lba = cpu_to_le32(1);
  249. pmbr->partition_record[0].size_in_lba =
  250. - cpu_to_le32((uint32_t) min( cxt->total_sectors - 1ULL, 0xFFFFFFFFULL) );
  251. + cpu_to_le32((uint32_t) umin(cxt->total_sectors - 1ULL, 0xFFFFFFFFULL));
  252. return 0;
  253. }
  254. @@ -958,7 +958,7 @@ static int valid_pmbr(struct fdisk_context *cxt)
  255. /* Note that gpt_write_pmbr() overwrites PMBR, but we want to keep it valid already
  256. * in memory too to disable warnings when valid_pmbr() called next time */
  257. pmbr->partition_record[part].size_in_lba =
  258. - cpu_to_le32((uint32_t) min( cxt->total_sectors - 1ULL, 0xFFFFFFFFULL) );
  259. + cpu_to_le32((uint32_t) umin(cxt->total_sectors - 1ULL, 0xFFFFFFFFULL));
  260. fdisk_label_set_changed(cxt->label, 1);
  261. }
  262. }
  263. diff --git a/libsmartcols/src/calculate.c b/libsmartcols/src/calculate.c
  264. index 77e843397..d0e892187 100644
  265. --- a/libsmartcols/src/calculate.c
  266. +++ b/libsmartcols/src/calculate.c
  267. @@ -66,11 +66,11 @@ static int count_cell_width(struct libscols_table *tb,
  268. if (scols_column_is_tree(cl)) {
  269. size_t treewidth = ul_buffer_get_safe_pointer_width(buf, SCOLS_BUFPTR_TREEEND);
  270. - cl->width_treeart = max(cl->width_treeart, treewidth);
  271. + cl->width_treeart = umax(cl->width_treeart, treewidth);
  272. }
  273. ce->width = len;
  274. - cl->wstat.width_max = max(len, cl->wstat.width_max);
  275. + cl->wstat.width_max = umax(len, cl->wstat.width_max);
  276. done:
  277. scols_table_reset_cursor(tb);
  278. return rc;
  279. @@ -178,7 +178,7 @@ static int count_column_width(struct libscols_table *tb,
  280. size_t len = scols_table_is_noencoding(tb) ?
  281. mbs_width(data) : mbs_safe_width(data);
  282. - st->width_min = max(st->width_min, len);
  283. + st->width_min = umax(st->width_min, len);
  284. } else
  285. no_header = 1;
  286. diff --git a/libsmartcols/src/column.c b/libsmartcols/src/column.c
  287. index e83d297fc..151adcfe0 100644
  288. --- a/libsmartcols/src/column.c
  289. +++ b/libsmartcols/src/column.c
  290. @@ -574,7 +574,7 @@ size_t scols_wrapnl_chunksize(const struct libscols_column *cl __attribute__((un
  291. mbs_width(data) :
  292. mbs_safe_width(data);
  293. }
  294. - sum = max(sum, sz);
  295. + sum = umax(sum, sz);
  296. data = p;
  297. }
  298. @@ -1068,9 +1068,10 @@ int scols_column_greatest_wrap(
  299. while (scols_column_next_wrap(cl, ce, data) == 0) {
  300. size_t sz = strlen(*data);
  301. - maxsz = max(maxsz, sz);
  302. - if (maxsz == sz)
  303. + if (maxsz <= sz) {
  304. + maxsz = sz;
  305. res = *data;
  306. + }
  307. }
  308. *data = res;
  309. --
  310. 2.49.0