repart: some smaller tweaks (#38995)
This commit is contained in:
@@ -39,7 +39,8 @@ char* format_bytes_full(char *buf, size_t l, uint64_t t, FormatBytesFlag flag) {
|
||||
(t / table[i + 1].factor * 10 / table[n - 1].factor) % 10 :
|
||||
(t * 10 / table[i].factor) % 10;
|
||||
|
||||
if (FLAGS_SET(flag, FORMAT_BYTES_BELOW_POINT) && remainder > 0)
|
||||
if (FLAGS_SET(flag, FORMAT_BYTES_ALWAYS_POINT) ||
|
||||
(FLAGS_SET(flag, FORMAT_BYTES_BELOW_POINT) && remainder > 0))
|
||||
(void) snprintf(buf, l,
|
||||
"%" PRIu64 ".%" PRIu64 "%s",
|
||||
t / table[i].factor,
|
||||
|
||||
@@ -64,9 +64,10 @@ assert_cc(sizeof(gid_t) == sizeof(uint32_t));
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
FORMAT_BYTES_USE_IEC = 1 << 0,
|
||||
FORMAT_BYTES_BELOW_POINT = 1 << 1,
|
||||
FORMAT_BYTES_TRAILING_B = 1 << 2,
|
||||
FORMAT_BYTES_USE_IEC = 1 << 0, /* use base 1024 rather than 1000 */
|
||||
FORMAT_BYTES_BELOW_POINT = 1 << 1, /* show one digit after the point, if non-zero */
|
||||
FORMAT_BYTES_ALWAYS_POINT = 1 << 2, /* show one digit after the point, always */
|
||||
FORMAT_BYTES_TRAILING_B = 1 << 3, /* suffix the expression with a "B" for "bytes" */
|
||||
} FormatBytesFlag;
|
||||
|
||||
#define FORMAT_BYTES_MAX 16U
|
||||
@@ -82,6 +83,7 @@ static inline char* format_bytes(char *buf, size_t l, uint64_t t) {
|
||||
* see C11 §6.5.2.5, and
|
||||
* https://stackoverflow.com/questions/34880638/compound-literal-lifetime-and-if-blocks */
|
||||
#define FORMAT_BYTES(t) format_bytes((char[FORMAT_BYTES_MAX]){}, FORMAT_BYTES_MAX, t)
|
||||
#define FORMAT_BYTES_FULL(t, flag) format_bytes_full((char[FORMAT_BYTES_MAX]){}, FORMAT_BYTES_MAX, t, flag)
|
||||
#define FORMAT_BYTES_FULL(t, flags) format_bytes_full((char[FORMAT_BYTES_MAX]){}, FORMAT_BYTES_MAX, t, flags)
|
||||
#define FORMAT_BYTES_WITH_POINT(t) format_bytes_full((char[FORMAT_BYTES_MAX]){}, FORMAT_BYTES_MAX, t, FORMAT_BYTES_USE_IEC|FORMAT_BYTES_ALWAYS_POINT|FORMAT_BYTES_TRAILING_B)
|
||||
|
||||
#define FORMAT_BYTES_CGROUP_PROTECTION(t) (t == CGROUP_LIMIT_MAX ? "infinity" : FORMAT_BYTES(t))
|
||||
|
||||
+18
-8
@@ -789,7 +789,11 @@ static Partition* partition_unlink_and_free(Context *context, Partition *p) {
|
||||
|
||||
DEFINE_TRIVIAL_CLEANUP_FUNC(Partition*, partition_free);
|
||||
|
||||
static Context* context_new(sd_id128_t seed, X509 *certificate, EVP_PKEY *private_key) {
|
||||
static Context* context_new(
|
||||
sd_id128_t seed,
|
||||
X509 *certificate,
|
||||
EVP_PKEY *private_key) {
|
||||
|
||||
Context *context;
|
||||
|
||||
/* Note: This function takes ownership of the certificate and private_key arguments. */
|
||||
@@ -3445,7 +3449,7 @@ static int context_load_partition_table(Context *context) {
|
||||
/* Use the fallback values if we have no better idea */
|
||||
context->sector_size = fdisk_get_sector_size(c);
|
||||
context->default_fs_sector_size = fs_secsz;
|
||||
context->grain_size = 4096;
|
||||
context->grain_size = MAX(context->sector_size, 4096U);
|
||||
return /* from_scratch = */ true;
|
||||
}
|
||||
|
||||
@@ -5489,9 +5493,9 @@ static int progress_bytes(uint64_t n_bytes, uint64_t bps, void *userdata) {
|
||||
strna(p->copy_blocks_path),
|
||||
glyph(GLYPH_ARROW_RIGHT),
|
||||
strna(p->definition_path),
|
||||
FORMAT_BYTES(p->copy_blocks_done),
|
||||
FORMAT_BYTES(p->copy_blocks_size),
|
||||
FORMAT_BYTES(bps));
|
||||
FORMAT_BYTES_WITH_POINT(p->copy_blocks_done),
|
||||
FORMAT_BYTES_WITH_POINT(p->copy_blocks_size),
|
||||
FORMAT_BYTES_WITH_POINT(bps));
|
||||
else
|
||||
(void) draw_progress_barf(
|
||||
percent,
|
||||
@@ -5499,8 +5503,8 @@ static int progress_bytes(uint64_t n_bytes, uint64_t bps, void *userdata) {
|
||||
strna(p->copy_blocks_path),
|
||||
glyph(GLYPH_ARROW_RIGHT),
|
||||
strna(p->definition_path),
|
||||
FORMAT_BYTES(p->copy_blocks_done),
|
||||
FORMAT_BYTES(p->copy_blocks_size));
|
||||
FORMAT_BYTES_WITH_POINT(p->copy_blocks_done),
|
||||
FORMAT_BYTES_WITH_POINT(p->copy_blocks_size));
|
||||
|
||||
p->last_percent = percent;
|
||||
|
||||
@@ -8666,7 +8670,13 @@ static int help(void) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int parse_argv(int argc, char *argv[], X509 **ret_certificate, EVP_PKEY **ret_private_key, OpenSSLAskPasswordUI **ret_ui) {
|
||||
static int parse_argv(
|
||||
int argc,
|
||||
char *argv[],
|
||||
X509 **ret_certificate,
|
||||
EVP_PKEY **ret_private_key,
|
||||
OpenSSLAskPasswordUI **ret_ui) {
|
||||
|
||||
enum {
|
||||
ARG_VERSION = 0x100,
|
||||
ARG_NO_PAGER,
|
||||
|
||||
@@ -1726,13 +1726,15 @@ int openssl_load_private_key(
|
||||
|
||||
assert(private_key);
|
||||
assert(request);
|
||||
assert(ret_private_key);
|
||||
|
||||
if (private_key_source_type == OPENSSL_KEY_SOURCE_FILE) {
|
||||
r = openssl_load_private_key_from_file(private_key, ret_private_key);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
*ret_user_interface = NULL;
|
||||
if (ret_user_interface)
|
||||
*ret_user_interface = NULL;
|
||||
} else {
|
||||
_cleanup_(openssl_ask_password_ui_freep) OpenSSLAskPasswordUI *ui = NULL;
|
||||
r = openssl_ask_password_ui_new(request, &ui);
|
||||
@@ -1757,7 +1759,8 @@ int openssl_load_private_key(
|
||||
private_key,
|
||||
private_key_source);
|
||||
|
||||
*ret_user_interface = TAKE_PTR(ui);
|
||||
if (ret_user_interface)
|
||||
*ret_user_interface = TAKE_PTR(ui);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
+26
-17
@@ -28,32 +28,41 @@ assert_cc(DECIMAL_STR_MAX(signed char) == STRLEN("-127")+1);
|
||||
assert_cc(DECIMAL_STR_MAX(unsigned char) == STRLEN("255")+1);
|
||||
assert_cc(CONST_MAX(DECIMAL_STR_MAX(int8_t), STRLEN("xxx")) == 5);
|
||||
|
||||
static void test_format_bytes_one(uint64_t val, bool trailing_B, const char *iec_with_p, const char *iec_without_p,
|
||||
const char *si_with_p, const char *si_without_p) {
|
||||
static void test_format_bytes_one(
|
||||
uint64_t val,
|
||||
bool trailing_B,
|
||||
const char *iec_with_p,
|
||||
const char *iec_without_p,
|
||||
const char *iec_always_p,
|
||||
const char *si_with_p,
|
||||
const char *si_without_p,
|
||||
const char *si_always_p) {
|
||||
char buf[FORMAT_BYTES_MAX];
|
||||
|
||||
ASSERT_STREQ(format_bytes_full(buf, sizeof buf, val, FORMAT_BYTES_USE_IEC | FORMAT_BYTES_BELOW_POINT | (trailing_B ? FORMAT_BYTES_TRAILING_B : 0)), iec_with_p);
|
||||
ASSERT_STREQ(format_bytes_full(buf, sizeof buf, val, FORMAT_BYTES_USE_IEC | (trailing_B ? FORMAT_BYTES_TRAILING_B : 0)), iec_without_p);
|
||||
ASSERT_STREQ(format_bytes_full(buf, sizeof buf, val, FORMAT_BYTES_USE_IEC | FORMAT_BYTES_ALWAYS_POINT | (trailing_B ? FORMAT_BYTES_TRAILING_B : 0)), iec_always_p);
|
||||
ASSERT_STREQ(format_bytes_full(buf, sizeof buf, val, FORMAT_BYTES_BELOW_POINT | (trailing_B ? FORMAT_BYTES_TRAILING_B : 0)), si_with_p);
|
||||
ASSERT_STREQ(format_bytes_full(buf, sizeof buf, val, trailing_B ? FORMAT_BYTES_TRAILING_B : 0), si_without_p);
|
||||
ASSERT_STREQ(format_bytes_full(buf, sizeof buf, val, FORMAT_BYTES_ALWAYS_POINT | (trailing_B ? FORMAT_BYTES_TRAILING_B : 0)), si_always_p);
|
||||
}
|
||||
|
||||
TEST(format_bytes) {
|
||||
test_format_bytes_one(900, true, "900B", "900B", "900B", "900B");
|
||||
test_format_bytes_one(900, false, "900", "900", "900", "900");
|
||||
test_format_bytes_one(1023, true, "1023B", "1023B", "1K", "1K");
|
||||
test_format_bytes_one(1023, false, "1023", "1023", "1K", "1K");
|
||||
test_format_bytes_one(1024, true, "1K", "1K", "1K", "1K");
|
||||
test_format_bytes_one(1024, false, "1K", "1K", "1K", "1K");
|
||||
test_format_bytes_one(1100, true, "1K", "1K", "1.1K", "1K");
|
||||
test_format_bytes_one(1500, true, "1.4K", "1K", "1.5K", "1K");
|
||||
test_format_bytes_one(UINT64_C(3)*1024*1024, true, "3M", "3M", "3.1M", "3M");
|
||||
test_format_bytes_one(UINT64_C(3)*1024*1024*1024, true, "3G", "3G", "3.2G", "3G");
|
||||
test_format_bytes_one(UINT64_C(3)*1024*1024*1024*1024, true, "3T", "3T", "3.2T", "3T");
|
||||
test_format_bytes_one(UINT64_C(3)*1024*1024*1024*1024*1024, true, "3P", "3P", "3.3P", "3P");
|
||||
test_format_bytes_one(UINT64_C(3)*1024*1024*1024*1024*1024*1024, true, "3E", "3E", "3.4E", "3E");
|
||||
test_format_bytes_one(UINT64_MAX, true, NULL, NULL, NULL, NULL);
|
||||
test_format_bytes_one(UINT64_MAX, false, NULL, NULL, NULL, NULL);
|
||||
test_format_bytes_one(900, true, "900B", "900B", "900B", "900B", "900B", "900B");
|
||||
test_format_bytes_one(900, false, "900", "900", "900", "900", "900", "900");
|
||||
test_format_bytes_one(1023, true, "1023B", "1023B", "1023B", "1K", "1K", "1.0K");
|
||||
test_format_bytes_one(1023, false, "1023", "1023", "1023", "1K", "1K", "1.0K");
|
||||
test_format_bytes_one(1024, true, "1K", "1K", "1.0K", "1K", "1K", "1.0K");
|
||||
test_format_bytes_one(1024, false, "1K", "1K", "1.0K", "1K", "1K", "1.0K");
|
||||
test_format_bytes_one(1100, true, "1K", "1K", "1.0K", "1.1K", "1K", "1.1K");
|
||||
test_format_bytes_one(1500, true, "1.4K", "1K", "1.4K", "1.5K", "1K", "1.5K");
|
||||
test_format_bytes_one(UINT64_C(3)*1024*1024, true, "3M", "3M", "3.0M", "3.1M", "3M", "3.1M");
|
||||
test_format_bytes_one(UINT64_C(3)*1024*1024*1024, true, "3G", "3G", "3.0G", "3.2G", "3G", "3.2G");
|
||||
test_format_bytes_one(UINT64_C(3)*1024*1024*1024*1024, true, "3T", "3T", "3.0T", "3.2T", "3T", "3.2T");
|
||||
test_format_bytes_one(UINT64_C(3)*1024*1024*1024*1024*1024, true, "3P", "3P", "3.0P", "3.3P", "3P", "3.3P");
|
||||
test_format_bytes_one(UINT64_C(3)*1024*1024*1024*1024*1024*1024, true, "3E", "3E", "3.0E", "3.4E", "3E", "3.4E");
|
||||
test_format_bytes_one(UINT64_MAX, true, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
test_format_bytes_one(UINT64_MAX, false, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
DEFINE_TEST_MAIN(LOG_INFO);
|
||||
|
||||
Reference in New Issue
Block a user