bef8da65fd946550cd4e6c12791606e367364245
[wimlib] / src / win32.h
1 #ifndef _WIMLIB_WIN32_H
2 #define _WIMLIB_WIN32_H
3
4 #include "wimlib_internal.h"
5 #include <direct.h>
6 #include <windef.h>
7
8 extern int
9 win32_build_dentry_tree(struct wim_dentry **root_ret,
10                         const mbchar *root_disk_path,
11                         struct wim_lookup_table *lookup_table,
12                         struct wim_security_data *sd,
13                         const struct capture_config *config,
14                         int add_image_flags,
15                         wimlib_progress_func_t progress_func,
16                         void *extra_arg);
17
18 extern int
19 win32_read_file(const mbchar *filename, void *handle, u64 offset,
20                 size_t size, void *buf);
21
22 extern HANDLE
23 win32_open_file_data_only(const wchar_t *path_utf16);
24
25 extern void
26 win32_close_file(void *handle);
27
28 #ifdef ENABLE_ERROR_MESSAGES
29 extern void win32_error(u32 err);
30 extern void win32_error_last();
31 #else
32 #  define win32_error(err)
33 #  define win32_error_last()
34 #endif
35
36 #define FNM_PATHNAME 0x1
37 #define FNM_NOMATCH 1
38 extern int
39 fnmatch(const mbchar *pattern, const mbchar *string, int flags);
40
41 extern int
42 win32_do_apply_dentry(const mbchar *output_path,
43                       size_t output_path_len,
44                       struct wim_dentry *dentry,
45                       struct apply_args *args);
46
47 extern int
48 win32_do_apply_dentry_timestamps(const mbchar *output_path,
49                                  size_t output_path_len,
50                                  const struct wim_dentry *dentry,
51                                  const struct apply_args *args);
52
53 extern int
54 fsync(int fd);
55
56 extern unsigned
57 win32_get_number_of_processors();
58
59 extern mbchar *
60 realpath(const mbchar *path, mbchar *resolved_path);
61
62 /* Microsoft's swprintf() violates the C standard and they require programmers
63  * to do this weird define to get the correct function.  */
64 #define swprintf _snwprintf
65
66 /* Use Microsoft's weird _mkdir() function instead of mkdir() */
67 #define mkdir(name, mode) _mkdir(name)
68
69 typedef enum {
70         CODESET
71 } nl_item;
72
73 extern char *
74 nl_langinfo(nl_item item);
75
76 extern int
77 rename_replacement(const char *oldpath, const char *newpath);
78 #define rename(oldpath, newpath) rename_replacement(oldpath, newpath)
79
80 extern void
81 win32_global_init();
82
83 extern void
84 win32_global_cleanup();
85
86 #endif /* _WIMLIB_WIN32_H */