inode->i_attributes = FILE_ATTRIBUTE_REPARSE_POINT;
inode->i_reparse_tag = WIM_IO_REPARSE_TAG_SYMLINK;
- /* The idea here is to call readlink() to get the UNIX target of
- * the symbolic link, then turn the target into a reparse point
- * data buffer that contains a relative or absolute symbolic
- * link (NOT a junction point or *full* path symbolic link with
- * drive letter).
- */
+ /* The idea here is to call readlink() to get the UNIX target of the
+ * symbolic link, then turn the target into a reparse point data buffer
+ * that contains a relative or absolute symbolic link. */
deref_name_len = readlink(path, deref_name_buf,
sizeof(deref_name_buf) - 1);
if (deref_name_len >= 0) {
{
union wimlib_progress_info info;
info.scan.cur_path = path;
- info.scan.excluded = true;
+ info.scan.status = WIMLIB_SCAN_DENTRY_EXCLUDED;
params->progress_func(WIMLIB_PROGRESS_MSG_SCAN_DENTRY, &info);
}
goto out;
{
union wimlib_progress_info info;
info.scan.cur_path = path;
- info.scan.excluded = false;
+ info.scan.status = WIMLIB_SCAN_DENTRY_OK;
params->progress_func(WIMLIB_PROGRESS_MSG_SCAN_DENTRY, &info);
}
}
if (!S_ISREG(stbuf.st_mode) && !S_ISDIR(stbuf.st_mode)
&& !S_ISLNK(stbuf.st_mode)) {
- ERROR("`%s' is not a regular file, directory, or symbolic link.",
- path);
- ret = WIMLIB_ERR_SPECIAL_FILE;
+ if (params->add_flags & WIMLIB_ADD_FLAG_NO_UNSUPPORTED_EXCLUDE)
+ {
+ ERROR("Can't archive unsupported file \"%s\"", path);
+ return WIMLIB_ERR_UNSUPPORTED_FILE;
+ }
+ if ((params->add_flags & WIMLIB_ADD_FLAG_EXCLUDE_VERBOSE)
+ && params->progress_func)
+ {
+ union wimlib_progress_info info;
+ info.scan.cur_path = path;
+ info.scan.status = WIMLIB_SCAN_DENTRY_UNSUPPORTED;
+ params->progress_func(WIMLIB_PROGRESS_MSG_SCAN_DENTRY, &info);
+ }
goto out;
}