X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Futil.c;h=8f4e0c0be53756db28ef2974d43de4b1f08b8b3e;hp=e14ddd403f64eef883594f7a805ffec19c1e8a15;hb=1dde5fb0d809f2f5e032e4d5241d1cb15ff3eb65;hpb=d977c5b4f348208e47fd2922f202f3eb60d5d5cb diff --git a/src/util.c b/src/util.c index e14ddd40..8f4e0c0b 100644 --- a/src/util.c +++ b/src/util.c @@ -25,6 +25,8 @@ #include "wimlib_internal.h" #include "endianness.h" #include "sha1.h" +#include "timestamp.h" +#include #include @@ -49,7 +51,7 @@ void wimlib_error(const char *format, ...) va_start(va, format); errno_save = errno; - fputs("ERROR: ", stderr); + fputs("[ERROR] ", stderr); vfprintf(stderr, format, va); putc('\n', stderr); errno = errno_save; @@ -65,7 +67,7 @@ void wimlib_error_with_errno(const char *format, ...) va_start(va, format); errno_save = errno; - fputs("ERROR: ", stderr); + fputs("[ERROR] ", stderr); vfprintf(stderr, format, va); fprintf(stderr, ": %s\n", strerror(errno_save)); errno = errno_save; @@ -81,7 +83,7 @@ void wimlib_warning(const char *format, ...) va_start(va, format); errno_save = errno; - fputs("WARNING: ", stderr); + fputs("[WARNING] ", stderr); vfprintf(stderr, format, va); putc('\n', stderr); errno = errno_save; @@ -125,6 +127,8 @@ static const char *error_strings[] = { = "Tried to add an image with a name that is already in use", [WIMLIB_ERR_INTEGRITY] = "The WIM failed an integrity check", + [WIMLIB_ERR_INVALID_CAPTURE_CONFIG] + = "The capture configuration string was invalid", [WIMLIB_ERR_INVALID_CHUNK_SIZE] = "The WIM is compressed but does not have a chunk " "size of 32768", @@ -139,8 +143,12 @@ static const char *error_strings[] = { = "Tried to select an image that does not exist in the WIM", [WIMLIB_ERR_INVALID_INTEGRITY_TABLE] = "The WIM's integrity table is invalid", + [WIMLIB_ERR_INVALID_LOOKUP_TABLE_ENTRY] + = "An entry in the WIM's lookup table is invalid", [WIMLIB_ERR_INVALID_PARAM] = "An invalid parameter was given", + [WIMLIB_ERR_INVALID_RESOURCE_HASH] + = "The SHA1 message digest of a WIM resource did not match the expected value", [WIMLIB_ERR_INVALID_RESOURCE_SIZE] = "A resource entry in the WIM is invalid", [WIMLIB_ERR_LINK] @@ -167,8 +175,12 @@ static const char *error_strings[] = { = "Failed to open a directory", [WIMLIB_ERR_READ] = "Could not read data from a file", + [WIMLIB_ERR_READLINK] + = "Could not read the target of a symbolic link", [WIMLIB_ERR_RENAME] = "Could not rename a file", + [WIMLIB_ERR_SPECIAL_FILE] + = "Encountered a special file that cannot be archived", [WIMLIB_ERR_SPLIT_INVALID] = "The WIM is part of an invalid split WIM", [WIMLIB_ERR_SPLIT_UNSUPPORTED] @@ -255,7 +267,7 @@ static iconv_t cd_utf16_to_utf8 = (iconv_t)(-1); /* Converts a string in the UTF-16 encoding to a newly allocated string in the * UTF-8 encoding. */ char *utf16_to_utf8(const char *utf16_str, size_t utf16_len, - size_t *utf8_len_ret) + size_t *utf8_len_ret) { if (cd_utf16_to_utf8 == (iconv_t)(-1)) { cd_utf16_to_utf8 = iconv_open("UTF-8", "UTF-16LE"); @@ -383,10 +395,8 @@ void randomize_char_array_with_alnum(char p[], size_t n) } /* Fills @n bytes pointer to by @p with random numbers. */ -void randomize_byte_array(void *__p, size_t n) +void randomize_byte_array(u8 *p, size_t n) { - u8 *p = __p; - if (!seeded) { srand(time(NULL)); seeded = true; @@ -419,8 +429,13 @@ const char *path_basename(const char *path) p--; /* Trailing slashes. */ - while ((p != path - 1) && *p == '/') + while (1) { + if (p == path - 1) + return ""; + if (*p != '/') + break; p--; + } while ((p != path - 1) && *p != '/') p--; @@ -428,6 +443,10 @@ const char *path_basename(const char *path) return p + 1; } +/* + * Returns a pointer to the part of @path following the first colon in the last + * path component, or NULL if the last path component does not contain a colon. + */ const char *path_stream_name(const char *path) { const char *base = path_basename(path); @@ -497,3 +516,12 @@ void print_string(const void *string, size_t len) p++; } } + +u64 get_wim_timestamp() +{ + struct timeval tv; + gettimeofday(&tv, NULL); + return timeval_to_wim_timestamp(&tv); +} + +