]> wimlib.net Git - wimlib/blobdiff - include/wimlib/write.h
Fix file locking
[wimlib] / include / wimlib / write.h
index 7a7bae619a760b13c1a6a7321ba5d4ab58970b6a..273a6a710b9cf3a00dd059d9f99e34bd25fd5da0 100644 (file)
 #define WIMLIB_WRITE_FLAG_HEADER_AT_END                        0x10000000
 #define WIMLIB_WRITE_FLAG_FILE_DESCRIPTOR              0x08000000
 #define WIMLIB_WRITE_FLAG_USE_EXISTING_TOTALBYTES      0x04000000
 #define WIMLIB_WRITE_FLAG_HEADER_AT_END                        0x10000000
 #define WIMLIB_WRITE_FLAG_FILE_DESCRIPTOR              0x08000000
 #define WIMLIB_WRITE_FLAG_USE_EXISTING_TOTALBYTES      0x04000000
-#define WIMLIB_WRITE_FLAG_NO_METADATA                   0x02000000
-#define WIMLIB_WRITE_MASK_PUBLIC                       0x01ffffff
+#define WIMLIB_WRITE_FLAG_NO_METADATA                  0x02000000
+#define WIMLIB_WRITE_FLAG_OVERWRITE                    0x01000000
+
+/* Keep in sync with wimlib.h  */
+#define WIMLIB_WRITE_MASK_PUBLIC (                       \
+       WIMLIB_WRITE_FLAG_CHECK_INTEGRITY               | \
+       WIMLIB_WRITE_FLAG_NO_CHECK_INTEGRITY            | \
+       WIMLIB_WRITE_FLAG_PIPABLE                       | \
+       WIMLIB_WRITE_FLAG_NOT_PIPABLE                   | \
+       WIMLIB_WRITE_FLAG_RECOMPRESS                    | \
+       WIMLIB_WRITE_FLAG_FSYNC                         | \
+       WIMLIB_WRITE_FLAG_REBUILD                       | \
+       WIMLIB_WRITE_FLAG_SOFT_DELETE                   | \
+       WIMLIB_WRITE_FLAG_IGNORE_READONLY_FLAG          | \
+       WIMLIB_WRITE_FLAG_SKIP_EXTERNAL_WIMS            | \
+       WIMLIB_WRITE_FLAG_STREAMS_OK                    | \
+       WIMLIB_WRITE_FLAG_RETAIN_GUID                   | \
+       WIMLIB_WRITE_FLAG_PACK_STREAMS)
 
 #if defined(HAVE_SYS_FILE_H) && defined(HAVE_FLOCK)
 extern int
 
 #if defined(HAVE_SYS_FILE_H) && defined(HAVE_FLOCK)
 extern int
-lock_wim(WIMStruct *wim, int fd);
+lock_wim_for_append(WIMStruct *wim);
+extern void
+unlock_wim_for_append(WIMStruct *wim);
 #else
 static inline int
 #else
 static inline int
-lock_wim(WIMStruct *wim, int fd)
+lock_wim_for_append(WIMStruct *wim)
 {
        return 0;
 }
 {
        return 0;
 }
+static inline void
+unlock_wim_for_append(WIMStruct *wim)
+{
+}
 #endif
 
 struct list_head;
 #endif
 
 struct list_head;
@@ -33,10 +55,18 @@ write_wim_part(WIMStruct *wim,
               int image,
               int write_flags,
               unsigned num_threads,
               int image,
               int write_flags,
               unsigned num_threads,
-              wimlib_progress_func_t progress_func,
               unsigned part_number,
               unsigned total_parts,
               struct list_head *stream_list_override,
               const u8 *guid);
 
               unsigned part_number,
               unsigned total_parts,
               struct list_head *stream_list_override,
               const u8 *guid);
 
+int
+write_wim_resource_from_buffer(const void *buf, size_t buf_size,
+                              int reshdr_flags, struct filedes *out_fd,
+                              int out_ctype,
+                              u32 out_chunk_size,
+                              struct wim_reshdr *out_reshdr,
+                              u8 *hash,
+                              int write_resource_flags);
+
 #endif /* _WIMLIB_WRITE_H */
 #endif /* _WIMLIB_WRITE_H */