X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=include%2Fwimlib.h;h=43c38526349f9ae456c819e6d5582d3c7d189443;hb=bd926816f3b9d5982d1c497840c56724520c62dc;hp=c7ad3e04857794ed9d735e9d54cd149001660768;hpb=b4baff96f42a5cc67e614aa67f6dbd82ae4e22f4;p=wimlib diff --git a/include/wimlib.h b/include/wimlib.h index c7ad3e04..43c38526 100644 --- a/include/wimlib.h +++ b/include/wimlib.h @@ -11,11 +11,11 @@ /** * @mainpage * - * This is the documentation for the library interface of wimlib 1.10.0, a C + * This is the documentation for the library interface of wimlib 1.13.0, a C * library for creating, modifying, extracting, and mounting files in the - * Windows Imaging Format. This documentation is intended for developers only. - * If you have installed wimlib and want to know how to use the @b wimlib-imagex - * program, please see the manual pages and also the README file. * * @section sec_installing Installing @@ -408,7 +408,7 @@ #define WIMLIB_MAJOR_VERSION 1 /** Minor version of the library (for example, the 2 in 1.2.5). */ -#define WIMLIB_MINOR_VERSION 10 +#define WIMLIB_MINOR_VERSION 13 /** Patch version of the library (for example, the 5 in 1.2.5). */ #define WIMLIB_PATCH_VERSION 0 @@ -418,15 +418,18 @@ extern "C" { #endif /* - * To represent file timestamps, wimlib's API uses the POSIX 'struct timespec'. - * This was probably a mistake because it doesn't play well with Visual Studio. - * In old VS versions it isn't present at all; in newer VS versions it is - * supposedly present, but I wouldn't trust it to be the same size as the one - * MinGW uses. The solution is to define a compatible structure ourselves when - * this header is included on Windows and the compiler is not MinGW. - */ -#if defined(_WIN32) && !defined(__GNUC__) -typedef struct { + * To represent file timestamps, wimlib's API originally used the POSIX 'struct + * timespec'. This was a mistake because when building wimlib for 32-bit + * Windows with MinGW we ended up originally using 32-bit time_t which isn't + * year 2038-safe, and therefore we had to later add fields like + * 'creation_time_high' to hold the high 32 bits of each timestamp. Moreover, + * old Visual Studio versions did not define struct timespec, while newer ones + * define it but with 64-bit tv_sec. So to at least avoid a missing or + * incompatible 'struct timespec' definition, define the correct struct + * ourselves when this header is included on Windows. + */ +#ifdef _WIN32 +struct wimlib_timespec { /* Seconds since start of UNIX epoch (January 1, 1970) */ #ifdef _WIN64 int64_t tv_sec; @@ -435,9 +438,9 @@ typedef struct { #endif /* Nanoseconds (0-999999999) */ int32_t tv_nsec; -} wimlib_timespec; +}; #else -# define wimlib_timespec struct timespec /* standard definition */ +# define wimlib_timespec timespec /* standard definition */ #endif /** @@ -1591,13 +1594,13 @@ struct wimlib_dir_entry { uint64_t hard_link_group_id; /** Time this file was created. */ - wimlib_timespec creation_time; + struct wimlib_timespec creation_time; /** Time this file was last written to. */ - wimlib_timespec last_write_time; + struct wimlib_timespec last_write_time; /** Time this file was last accessed. */ - wimlib_timespec last_access_time; + struct wimlib_timespec last_access_time; /** The UNIX user ID of this file. This is a wimlib extension. * @@ -1626,7 +1629,21 @@ struct wimlib_dir_entry { * object_id.object_id is not all zeroes. */ struct wimlib_object_id object_id; - uint64_t reserved[6]; + /** High 32 bits of the seconds portion of the creation timestamp, + * filled in if @p wimlib_timespec.tv_sec is only 32-bit. */ + int32_t creation_time_high; + + /** High 32 bits of the seconds portion of the last write timestamp, + * filled in if @p wimlib_timespec.tv_sec is only 32-bit. */ + int32_t last_write_time_high; + + /** High 32 bits of the seconds portion of the last access timestamp, + * filled in if @p wimlib_timespec.tv_sec is only 32-bit. */ + int32_t last_access_time_high; + + int32_t reserved2; + + uint64_t reserved[4]; /** * Variable-length array of streams that make up this file. @@ -3038,6 +3055,9 @@ wimlib_extract_image_from_pipe_with_progress(int pipe_fd, * are otherwise delimited by the newline character. However, quotes will be * stripped if present. * + * If @p path_list_file is @c NULL, then the pathlist file is read from standard + * input. + * * The error codes are the same as those returned by wimlib_extract_paths(), * except that wimlib_extract_pathlist() returns an appropriate error code if it * cannot read the path list file (e.g. ::WIMLIB_ERR_OPEN, ::WIMLIB_ERR_STAT, @@ -3256,6 +3276,16 @@ wimlib_get_image_property(const WIMStruct *wim, int image, extern uint32_t wimlib_get_version(void); +/** + * @ingroup G_general + * + * Since wimlib v1.13.0: like wimlib_get_version(), but returns the full + * PACKAGE_VERSION string that was set at build time. (This allows a beta + * release to be distinguished from an official release.) + */ +extern const wimlib_tchar * +wimlib_get_version_string(void); + /** * @ingroup G_wim_information *