]>
git.saurik.com Git - apple/system_cmds.git/blob - gcore.tproj/utils.c
2 * Copyright (c) 2015 Apple Inc. All rights reserved.
18 err_mach(kern_return_t kr
, const struct region
*r
, const char *fmt
, ...)
25 printf("%llx-%llx ", R_ADDR(r
), R_ENDADDR(r
));
30 printf(": %s (%x)", mach_error_string(kr
), kr
);
31 switch (err_get_system(kr
)) {
32 case err_get_system(err_mach_ipc
):
33 /* 0x10000000 == (4 << 26) */
34 printf(" => fatal\n");
45 printr(const struct region
*r
, const char *fmt
, ...)
50 printf("%llx-%llx ", R_ADDR(r
), R_ENDADDR(r
));
51 vfprintf(stdout
, fmt
, ap
);
56 * Print power-of-1024 sizes in human-readable form
59 str_hsize(hsize_str_t hstr
, uint64_t size
)
61 humanize_number(hstr
, sizeof (hsize_str_t
) - 1, size
, "",
62 HN_AUTOSCALE
, HN_B
| HN_NOSPACE
| HN_DECIMAL
| HN_IEC_PREFIXES
);
67 * Put two strings together separated by a '+' sign
68 * If the string gets too long, then add an elipsis and
69 * stop concatenating it.
72 strconcat(const char *s0
, const char *s1
, size_t maxlen
)
74 const char ellipsis
[] = "...";
75 const char junction
[] = ", ";
76 const size_t s0len
= strlen(s0
);
77 size_t nmlen
= s0len
+ strlen(s1
) + strlen(junction
) + 1;
78 if (maxlen
> strlen(ellipsis
) && nmlen
> maxlen
) {
79 if (strcmp(s0
+ s0len
- strlen(ellipsis
), ellipsis
) == 0)
82 nmlen
= s0len
+ strlen(s1
) + strlen(junction
) + 1;
84 char *p
= malloc(nmlen
);
86 strlcpy(p
, s0
, nmlen
);
87 strlcat(p
, junction
, nmlen
);
88 strlcat(p
, s1
, nmlen
);