#endif
#include "wimlib.h"
+#include "wimlib/error.h"
#ifdef WITH_FUSE
struct wim_dentry *dentry;
struct wim_lookup_table_entry *lte;
u16 stream_idx;
- const tchar *stream_name = NULL;
+ const char *stream_name = NULL;
struct wim_inode *inode;
- tchar *p = NULL;
+ char *p = NULL;
lookup_flags |= ctx->default_lookup_flags;
if (lookup_flags & LOOKUP_FLAG_ADS_OK) {
stream_name = path_stream_name(path);
if (stream_name) {
- p = (tchar*)stream_name - 1;
+ p = (char *)stream_name - 1;
*p = T('\0');
}
}
/* Leave the image mounted if commit failed, unless this is a
* forced unmount. The user can retry without commit if they
* want. */
- if (!ret || (unmount_flags & WIMLIB_UNMOUNT_FLAG_FORCE))
+ if (!ret || (unmount_flags & WIMLIB_UNMOUNT_FLAG_FORCE)) {
+ unlock_wim_for_append(wimfs_ctx->wim);
fuse_exit(fuse_ctx->fuse);
+ }
if (mq != (mqd_t)-1)
mq_close(mq);
return ret;
return WIMLIB_ERR_INVALID_PARAM;
}
- ret = lock_wim_for_append(wim, wim->in_fd.fd);
- if (ret)
- return ret;
+ if (mount_flags & WIMLIB_MOUNT_FLAG_READWRITE) {
+ ret = lock_wim_for_append(wim);
+ if (ret)
+ return ret;
+ }
/* If the user did not specify an interface for accessing named
* data streams, use the default (extended attributes). */
if (mount_flags & WIMLIB_MOUNT_FLAG_READWRITE)
delete_staging_dir(&ctx);
out_unlock:
- unlock_wim_for_append(wim, wim->in_fd.fd);
+ unlock_wim_for_append(wim);
return ret;
}
ret = do_unmount(dir);
if (progfunc) {
/* Terminate the progress thread. */
- mq_send(mq, NULL, 0, 1);
+ char empty[0];
+ mq_send(mq, empty, 0, 1);
pthread_join(commit_progress_tid, NULL);
}
out_delete_mq: