]> wimlib.net Git - wimlib/blobdiff - src/wimboot.c
Windows: improved error messages
[wimlib] / src / wimboot.c
index 2b6a2415181ec7c7d1b90d34798eecb6bf1038bc..9a61ba510bab13075ef60e40ceab270fcae47336 100644 (file)
@@ -94,8 +94,8 @@ query_partition_and_disk_info(const wchar_t *path,
 
        h = open_file(vol_name, GENERIC_READ);
        if (h == INVALID_HANDLE_VALUE) {
-               ERROR("\"%ls\": Can't open volume device (err=%"PRIu32")",
-                     vol_name, (u32)GetLastError());
+               win32_error(GetLastError(), L"\"%ls\": Can't open volume device",
+                           vol_name);
                ret = WIMLIB_ERR_OPEN;
                goto out;
        }
@@ -103,8 +103,8 @@ query_partition_and_disk_info(const wchar_t *path,
        if (!query_device(h, IOCTL_DISK_GET_PARTITION_INFO_EX,
                          part_info, sizeof(PARTITION_INFORMATION_EX)))
        {
-               ERROR("\"%ls\": Can't get partition info (err=%"PRIu32")",
-                     vol_name, (u32)GetLastError());
+               win32_error(GetLastError(),
+                           L"\"%ls\": Can't get partition info", vol_name);
                ret = WIMLIB_ERR_READ;
                goto out;
        }
@@ -122,8 +122,9 @@ query_partition_and_disk_info(const wchar_t *path,
                                 extents, extents_size))
                        break;
                if (GetLastError() != ERROR_MORE_DATA) {
-                       ERROR("\"%ls\": Can't get volume extent info (err=%"PRIu32")",
-                             vol_name, (u32)GetLastError());
+                       win32_error(GetLastError(),
+                                   L"\"%ls\": Can't get volume extent info",
+                                   vol_name);
                        ret = WIMLIB_ERR_READ;
                        goto out;
                }
@@ -146,8 +147,8 @@ query_partition_and_disk_info(const wchar_t *path,
 
        h = open_file(disk_name, GENERIC_READ);
        if (h == INVALID_HANDLE_VALUE) {
-               ERROR("\"%ls\": Can't open disk device (err=%"PRIu32")",
-                     disk_name, (u32)GetLastError());
+               win32_error(GetLastError(),
+                           L"\"%ls\": Can't open disk device", disk_name);
                ret = WIMLIB_ERR_OPEN;
                goto out;
        }
@@ -165,8 +166,8 @@ query_partition_and_disk_info(const wchar_t *path,
                                 drive_info, drive_info_size))
                        break;
                if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
-                       ERROR("\"%ls\": Can't get disk info (err=%"PRIu32")",
-                             disk_name, (u32)GetLastError());
+                       win32_error(GetLastError(),
+                                   L"\"%ls\": Can't get disk info", disk_name);
                        ret = WIMLIB_ERR_READ;
                        goto out;
                }
@@ -291,23 +292,24 @@ write_wimoverlay_dat(const wchar_t *path, const void *contents, u32 size)
        h = CreateFile(path, GENERIC_WRITE, 0, NULL,
                       CREATE_ALWAYS, FILE_FLAG_BACKUP_SEMANTICS, NULL);
        if (h == INVALID_HANDLE_VALUE) {
-               set_errno_from_GetLastError();
-               ERROR_WITH_ERRNO("\"%ls\": Can't open file for writing", path);
+               win32_error(GetLastError(),
+                           L"\"%ls\": Can't open file for writing", path);
                return WIMLIB_ERR_OPEN;
        }
 
+       SetLastError(0);
        if (!WriteFile(h, contents, size, &bytes_written, NULL) ||
            bytes_written != size)
        {
-               set_errno_from_GetLastError();
-               ERROR_WITH_ERRNO("\"%ls\": Can't write file", path);
+               win32_error(GetLastError(),
+                           L"\"%ls\": Can't write file", path);
                CloseHandle(h);
                return WIMLIB_ERR_WRITE;
        }
 
        if (!CloseHandle(h)) {
-               set_errno_from_GetLastError();
-               ERROR_WITH_ERRNO("\"%ls\": Can't close handle", path);
+               win32_error(GetLastError(),
+                           L"\"%ls\": Can't close handle", path);
                return WIMLIB_ERR_WRITE;
        }
 
@@ -593,13 +595,11 @@ retry:
                                err = err2;
                        }
                }
-               set_errno_from_win32_error(err);
-               ERROR_WITH_ERRNO("\"%ls\": Can't open for reading", path);
+               win32_error(err, L"\"%ls\": Can't open for reading", path);
                return WIMLIB_ERR_OPEN;
        }
        if (!GetFileInformationByHandle(h, &info)) {
-               set_errno_from_GetLastError();
-               ERROR_WITH_ERRNO("\"%ls\": Can't query metadata", path);
+               win32_error(GetLastError(), L"\"%ls\": Can't query metadata", path);
                CloseHandle(h);
                return WIMLIB_ERR_STAT;
        }
@@ -613,11 +613,11 @@ retry:
                return WIMLIB_ERR_NOMEM;
        }
 
+       SetLastError(0);
        if (!ReadFile(h, contents, info.nFileSizeLow, &bytes_read, NULL) ||
            bytes_read != info.nFileSizeLow)
        {
-               set_errno_from_GetLastError();
-               ERROR_WITH_ERRNO("\"%ls\": Can't read data", path);
+               win32_error(GetLastError(), L"\"%ls\": Can't read data", path);
                CloseHandle(h);
                ret = WIMLIB_ERR_READ;
                goto out_free_contents;
@@ -983,8 +983,8 @@ retry_ioctl:
        h = open_file(drive_path, GENERIC_WRITE);
 
        if (h == INVALID_HANDLE_VALUE) {
-               set_errno_from_GetLastError();
-               ERROR_WITH_ERRNO("Failed to open \"%ls\"", drive_path + 4);
+               win32_error(GetLastError(),
+                           L"Failed to open \"%ls\"", drive_path + 4);
                ret = WIMLIB_ERR_OPEN;
                goto out_free_in;
        }
@@ -1006,17 +1006,14 @@ retry_ioctl:
                        ret = WIMLIB_ERR_UNSUPPORTED;
                        goto out_close_handle;
                } else {
-                       set_errno_from_win32_error(err);
-                       ERROR_WITH_ERRNO("Failed to add overlay source \"%ls\" "
-                                        "to volume \"%ls\" (err=0x%08"PRIx32")",
-                                        wim_path, drive_path + 4, (u32)err);
+                       win32_error(err, L"Failed to add overlay source \"%ls\" "
+                                   "to volume \"%ls\"", wim_path, drive_path + 4);
                        ret = WIMLIB_ERR_WIMBOOT;
                        goto out_close_handle;
                }
        }
 
        if (bytes_returned != sizeof(data_source_id)) {
-               set_errno_from_win32_error(ERROR_INVALID_DATA);
                ret = WIMLIB_ERR_WIMBOOT;
                ERROR("Unexpected result size when adding "
                      "overlay source \"%ls\" to volume \"%ls\"",
@@ -1080,7 +1077,6 @@ wimboot_set_pointer(HANDLE h,
                    bool wof_running)
 {
        DWORD bytes_returned;
-       DWORD err;
 
        if (wof_running) {
                /* The WOF driver is running.  We can create the reparse point