]> git.proxmox.com Git - efi-boot-shim.git/blame - errlog.c
Start packaging updates for the new 15.51 upstream release
[efi-boot-shim.git] / errlog.c
CommitLineData
031e5cce 1// SPDX-License-Identifier: BSD-2-Clause-Patent
b6f94dbe
MTL
2/*
3 * errlog.c
031e5cce 4 * Copyright Peter Jones <pjones@redhat.com>
b6f94dbe
MTL
5 */
6
7#include "shim.h"
8
b6f94dbe
MTL
9static CHAR16 **errs = NULL;
10static UINTN nerrs = 0;
11
031e5cce
SM
12EFI_STATUS EFIAPI
13vdprint_(const CHAR16 *fmt, const char *file, int line, const char *func,
14 ms_va_list args)
b6f94dbe 15{
031e5cce
SM
16 ms_va_list args2;
17 EFI_STATUS efi_status = EFI_SUCCESS;
18
19 if (verbose) {
20 ms_va_copy(args2, args);
21 console_print(L"%a:%d:%a() ", file, line, func);
22 efi_status = VPrint(fmt, args2);
23 ms_va_end(args2);
24 }
25 return efi_status;
26}
b6f94dbe 27
031e5cce
SM
28EFI_STATUS EFIAPI
29VLogError(const char *file, int line, const char *func, const CHAR16 *fmt,
30 ms_va_list args)
31{
32 ms_va_list args2;
33 CHAR16 **newerrs;
b6f94dbe
MTL
34
35 newerrs = ReallocatePool(errs, (nerrs + 1) * sizeof(*errs),
36 (nerrs + 3) * sizeof(*errs));
37 if (!newerrs)
38 return EFI_OUT_OF_RESOURCES;
39
031e5cce 40 newerrs[nerrs] = PoolPrint(L"%a:%d %a() ", file, line, func);
b6f94dbe
MTL
41 if (!newerrs[nerrs])
42 return EFI_OUT_OF_RESOURCES;
031e5cce
SM
43 ms_va_copy(args2, args);
44 newerrs[nerrs+1] = VPoolPrint(fmt, args2);
b6f94dbe
MTL
45 if (!newerrs[nerrs+1])
46 return EFI_OUT_OF_RESOURCES;
031e5cce 47 ms_va_end(args2);
b6f94dbe
MTL
48
49 nerrs += 2;
50 newerrs[nerrs] = NULL;
51 errs = newerrs;
52
53 return EFI_SUCCESS;
54}
55
031e5cce
SM
56EFI_STATUS EFIAPI
57LogError_(const char *file, int line, const char *func, const CHAR16 *fmt, ...)
b6f94dbe 58{
031e5cce 59 ms_va_list args;
f892ac66 60 EFI_STATUS efi_status;
b6f94dbe 61
031e5cce 62 ms_va_start(args, fmt);
f892ac66 63 efi_status = VLogError(file, line, func, fmt, args);
031e5cce 64 ms_va_end(args);
b6f94dbe 65
f892ac66 66 return efi_status;
b6f94dbe
MTL
67}
68
031e5cce
SM
69VOID
70LogHexdump_(const char *file, int line, const char *func, const void *data, size_t sz)
71{
72 hexdumpat(file, line, func, data, sz, 0);
73}
74
b6f94dbe
MTL
75VOID
76PrintErrors(VOID)
77{
78 UINTN i;
79
51d5bbcb
MTL
80 if (!verbose)
81 return;
82
b6f94dbe 83 for (i = 0; i < nerrs; i++)
f892ac66 84 console_print(L"%s", errs[i]);
b6f94dbe
MTL
85}
86
87VOID
88ClearErrors(VOID)
89{
90 UINTN i;
91
92 for (i = 0; i < nerrs; i++)
93 FreePool(errs[i]);
94 FreePool(errs);
95 nerrs = 0;
96 errs = NULL;
97}
98
99// vim:fenc=utf-8:tw=75