-static int send_daemon_info_msg(mqd_t mq, pid_t pid, int mount_flags)
-{
- DEBUG("Sending daemon info msg (pid = %d, mount_flags=%x)",
- pid, mount_flags);
-
- struct msg_daemon_info msg = {
- .hdr = {
- .min_version = WIMLIB_MAKEVERSION(1, 2, 1),
- .cur_version = WIMLIB_VERSION_CODE,
- .msg_type = MSG_TYPE_DAEMON_INFO,
- .msg_size = sizeof(msg),
- },
- .daemon_pid = pid,
- .mount_flags = mount_flags,
- };
- if (mq_send(mq, (void*)&msg, sizeof(msg), 1)) {
- ERROR_WITH_ERRNO("Failed to send daemon info to unmount process");
- return WIMLIB_ERR_MQUEUE;
- }
- return 0;
-}
-
-static void send_unmount_finished_msg(mqd_t mq, int status)
-{
- DEBUG("Sending unmount finished msg");
- struct msg_unmount_finished msg = {
- .hdr = {
- .min_version = WIMLIB_MAKEVERSION(1, 2, 1),
- .cur_version = WIMLIB_VERSION_CODE,
- .msg_type = MSG_TYPE_UNMOUNT_FINISHED,
- .msg_size = sizeof(msg),
- },
- .status = status,
- };
- if (mq_send(mq, (void*)&msg, sizeof(msg), 1))
- ERROR_WITH_ERRNO("Failed to send status to unmount process");
-}
-
-static int unmount_progress_func(enum wimlib_progress_msg msg,
- const union wimlib_progress_info *info)
-{
- if (msg == WIMLIB_PROGRESS_MSG_WRITE_STREAMS) {
- struct msg_write_streams_progress msg = {
- .hdr = {
- .min_version = WIMLIB_MAKEVERSION(1, 2, 1),
- .cur_version = WIMLIB_VERSION_CODE,
- .msg_type = MSG_TYPE_WRITE_STREAMS_PROGRESS,
- .msg_size = sizeof(msg),
- },
- .info = *info,
- };
- if (mq_send(wimfs_get_context()->daemon_to_unmount_mq,
- (void*)&msg, sizeof(msg), 1))
- {
- ERROR_WITH_ERRNO("Failed to send progress information "
- "to unmount process");
- }
- }
- return 0;