logo

oasis

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