* [PATCH 1/3] misc: Support octal printf format code
2023-06-28 7:38 [PATCH 0/3] Improve newc generation logging Glenn Washburn
@ 2023-06-28 7:38 ` Glenn Washburn
2023-06-28 7:38 ` [PATCH 2/3] include/grub/types.h: Add PRI*GRUB_OFFSET and PRI*GRUB_DISK_ADDR Glenn Washburn
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Glenn Washburn @ 2023-06-28 7:38 UTC (permalink / raw)
To: grub-devel, Daniel Kiper; +Cc: Gary Lin, Glenn Washburn
Also add parenthesis to nested terciary operator to improve clarity.
Signed-off-by: Glenn Washburn <development@efficientek.com>
---
grub-core/kern/misc.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/grub-core/kern/misc.c b/grub-core/kern/misc.c
index 977535282a33..739cc56691a1 100644
--- a/grub-core/kern/misc.c
+++ b/grub-core/kern/misc.c
@@ -666,7 +666,7 @@ grub_divmod64 (grub_uint64_t n, grub_uint64_t d, grub_uint64_t *r)
static inline char *
grub_lltoa (char *str, int c, unsigned long long n)
{
- unsigned base = ((c == 'x') || (c == 'X')) ? 16 : 10;
+ unsigned base = ((c == 'x') || (c == 'X')) ? 16 : ((c == 'o') ? 8 : 10);
char *p;
if ((long long) n < 0 && c == 'd')
@@ -681,9 +681,15 @@ grub_lltoa (char *str, int c, unsigned long long n)
do
{
unsigned d = (unsigned) (n & 0xf);
- *p++ = (d > 9) ? d + ((c == 'x') ? 'a' : 'A') - 10 : d + '0';
+ *p++ = (d > 9) ? (d + ((c == 'x') ? 'a' : 'A') - 10) : d + '0';
}
while (n >>= 4);
+ else if (base == 8)
+ do
+ {
+ *p++ = ((unsigned) (n & 0x7)) + '0';
+ }
+ while (n >>= 3);
else
/* BASE == 10 */
do
@@ -782,6 +788,7 @@ parse_printf_arg_fmt (const char *fmt0, struct printf_args *args,
case 'X':
case 'u':
case 'd':
+ case 'o':
case 'c':
case 'C':
case 's':
@@ -880,6 +887,7 @@ parse_printf_arg_fmt (const char *fmt0, struct printf_args *args,
{
case 'x':
case 'X':
+ case 'o':
case 'u':
args->ptr[curn].type = UNSIGNED_INT + longfmt;
break;
@@ -1089,6 +1097,7 @@ grub_vsnprintf_real (char *str, grub_size_t max_len, const char *fmt0,
case 'X':
case 'u':
case 'd':
+ case 'o':
write_number (str, &count, max_len, format1, rightfill, zerofill, c, curarg);
break;
--
2.34.1
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH 2/3] include/grub/types.h: Add PRI*GRUB_OFFSET and PRI*GRUB_DISK_ADDR
2023-06-28 7:38 [PATCH 0/3] Improve newc generation logging Glenn Washburn
2023-06-28 7:38 ` [PATCH 1/3] misc: Support octal printf format code Glenn Washburn
@ 2023-06-28 7:38 ` Glenn Washburn
2023-06-28 7:38 ` [PATCH 3/3] loader/linux: Print debug message for each generated newc path generated Glenn Washburn
2023-06-28 12:50 ` [PATCH 0/3] Improve newc generation logging Daniel Kiper
3 siblings, 0 replies; 5+ messages in thread
From: Glenn Washburn @ 2023-06-28 7:38 UTC (permalink / raw)
To: grub-devel, Daniel Kiper; +Cc: Gary Lin, Glenn Washburn
These are currently always the same as PRI*GRUB_UINT64_T, but they may
not be in the future.
Signed-off-by: Glenn Washburn <development@efficientek.com>
---
include/grub/types.h | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/include/grub/types.h b/include/grub/types.h
index 9f43a5580935..0d96006fe2a2 100644
--- a/include/grub/types.h
+++ b/include/grub/types.h
@@ -182,10 +182,13 @@ typedef grub_uint64_t grub_properly_aligned_t;
#define GRUB_PROPERLY_ALIGNED_ARRAY(name, size) grub_properly_aligned_t name[((size) + sizeof (grub_properly_aligned_t) - 1) / sizeof (grub_properly_aligned_t)]
/* The type for representing a file offset. */
-typedef grub_uint64_t grub_off_t;
+typedef grub_uint64_t grub_off_t;
+#define PRIxGRUB_OFFSET PRIxGRUB_UINT64_T
+#define PRIuGRUB_OFFSET PRIuGRUB_UINT64_T
/* The type for representing a disk block address. */
-typedef grub_uint64_t grub_disk_addr_t;
+typedef grub_uint64_t grub_disk_addr_t;
+#define PRIxGRUB_DISK_ADDR PRIxGRUB_UINT64_T
/* Byte-orders. */
static inline grub_uint16_t grub_swap_bytes16(grub_uint16_t _x)
--
2.34.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/3] loader/linux: Print debug message for each generated newc path generated
2023-06-28 7:38 [PATCH 0/3] Improve newc generation logging Glenn Washburn
2023-06-28 7:38 ` [PATCH 1/3] misc: Support octal printf format code Glenn Washburn
2023-06-28 7:38 ` [PATCH 2/3] include/grub/types.h: Add PRI*GRUB_OFFSET and PRI*GRUB_DISK_ADDR Glenn Washburn
@ 2023-06-28 7:38 ` Glenn Washburn
2023-06-28 12:50 ` [PATCH 0/3] Improve newc generation logging Daniel Kiper
3 siblings, 0 replies; 5+ messages in thread
From: Glenn Washburn @ 2023-06-28 7:38 UTC (permalink / raw)
To: grub-devel, Daniel Kiper; +Cc: Gary Lin, Glenn Washburn
Signed-off-by: Glenn Washburn <development@efficientek.com>
---
grub-core/loader/linux.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/grub-core/loader/linux.c b/grub-core/loader/linux.c
index cb2c3f6e4f06..35ad6bf19460 100644
--- a/grub-core/loader/linux.c
+++ b/grub-core/loader/linux.c
@@ -64,6 +64,7 @@ make_header (grub_uint8_t *ptr,
struct newc_head *head = (struct newc_head *) ptr;
grub_uint8_t *optr;
grub_size_t oh = 0;
+ grub_dprintf ("linux", "newc: Creating path '%s', mode=%s%o, size=%"PRIuGRUB_OFFSET"\n", name, (mode == 0) ? "" : "0", mode, fsize);
grub_memcpy (head->magic, "070701", 6);
set_field (head->ino, 0);
set_field (head->mode, mode);
@@ -106,6 +107,7 @@ insert_dir (const char *name, struct dir **root,
struct dir *cur, **head = root;
const char *cb, *ce = name;
*size = 0;
+
while (1)
{
for (cb = ce; *cb == '/'; cb++);
@@ -137,7 +139,6 @@ insert_dir (const char *name, struct dir **root,
grub_free (n);
return grub_errno;
}
- grub_dprintf ("linux", "Creating directory %s, %s\n", name, ce);
ptr = make_header (ptr, tmp_name, ce - name + 1,
040777, 0);
grub_free (tmp_name);
--
2.34.1
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH 0/3] Improve newc generation logging
2023-06-28 7:38 [PATCH 0/3] Improve newc generation logging Glenn Washburn
` (2 preceding siblings ...)
2023-06-28 7:38 ` [PATCH 3/3] loader/linux: Print debug message for each generated newc path generated Glenn Washburn
@ 2023-06-28 12:50 ` Daniel Kiper
3 siblings, 0 replies; 5+ messages in thread
From: Daniel Kiper @ 2023-06-28 12:50 UTC (permalink / raw)
To: Glenn Washburn; +Cc: grub-devel, Gary Lin
On Wed, Jun 28, 2023 at 02:38:21AM -0500, Glenn Washburn wrote:
> The first two patches stand on their own, but are needed for the last patch.
> The first patch adds the support for the %o format specifier, which prints
> numbers in octal. The second patch was something Daniel requested in reply
> to a different patch, adding PRI* macros for types grub_off_t and
> grub_disk_addr_t. And the last patch improves the logging when generating
> newc archives on the fly. Now all paths generated will be logged with their
> size and mode.
>
> Glenn
>
> Glenn Washburn (3):
> misc: Support octal printf format code
> include/grub/types.h: Add PRI*GRUB_OFFSET and PRI*GRUB_DISK_ADDR
> loader/linux: Print debug message for each generated newc path
> generated
For all patches Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>...
Daniel
^ permalink raw reply [flat|nested] 5+ messages in thread