((ern != VSTR_TYPE_SC_READ_FILE_ERR_OPEN_ERRNO) || (errno != ENOENT)))
!(((ern == VSTR_TYPE_SC_READ_FILE_ERR_OPEN_ERRNO) && (errno == ENOENT)) || ((ern == VSTR_TYPE_SC_READ_FILE_ERR_FSTAT_ERRNO) && (errno == ENOSPC))))
int evnt_fd_set_filter(struct Evnt *evnt, const char *fname){  int fd = evnt_fd(evnt);  Vstr_base *s1 = NULL;  unsigned int ern = 0;  if (!CONF_USE_SOCKET_FILTERS)    return (TRUE);    if (!(s1 = vstr_make_base(NULL)))    VLG_WARNNOMEM_RET(FALSE, (vlg, "filter_attach0: %m\n"));  vstr_sc_read_len_file(s1, 0, fname, 0, 0, &ern);  if (ern &&      ((ern != VSTR_TYPE_SC_READ_FILE_ERR_OPEN_ERRNO) || (errno != ENOENT)))  {    evnt__free_base_noerrno(s1);    VLG_WARN_RET(FALSE, (vlg, "filter_attach1(%s): %m\n", fname));  }  else if ((s1->len / sizeof(struct sock_filter)) > USHRT_MAX)  {    vstr_free_base(s1);      errno = E2BIG;    VLG_WARN_RET(FALSE, (vlg, "filter_attach2(%s): %m\n", fname));  }  else if (!s1->len)  {    vstr_free_base(s1);      if (!evnt->flag_io_filter)      vlg_warn(vlg, "filter_attach3(%s): Empty file\n", fname);    else if (setsockopt(fd, SOL_SOCKET, SO_DETACH_FILTER, NULL, 0) == -1)    {      evnt__free_base_noerrno(s1);      VLG_WARN_RET(FALSE, (vlg, "setsockopt(SOCKET, DETACH_FILTER, %s): %m\n",                           fname));    }        evnt->flag_io_filter = FALSE;    return (TRUE);  }  else  {    struct sock_fprog filter[1];    socklen_t len = sizeof(filter);    filter->len    = s1->len / sizeof(struct sock_filter);    filter->filter = (void *)vstr_export_cstr_ptr(s1, 1, s1->len);        if (!filter->filter)      VLG_WARNNOMEM_RET(FALSE, (vlg, "filter_attach4: %m\n"));      if (setsockopt(fd, SOL_SOCKET, SO_ATTACH_FILTER, filter, len) == -1)    {      evnt__free_base_noerrno(s1);      VLG_WARN_RET(FALSE, (vlg,  "setsockopt(SOCKET, ATTACH_FILTER, %s): %m\n",                           fname));    }  }  evnt->flag_io_filter = TRUE;    vstr_free_base(s1);  return (TRUE);}