}
             sendit(sock, "      N\n");
          }
+         if (incexe->ignoredir) {
+            sendit(sock, "      Z %s\n", incexe->ignoredir);
+         }
          for (j=0; j<incexe->name_list.size(); j++) {
             sendit(sock, "      I %s\n", incexe->name_list.get(j));
          }
    if (incexe->opts_list) {
       free(incexe->opts_list);
    }
+   if (incexe->ignoredir) {
+      free(incexe->ignoredir);
+   }
    free(incexe);
 }
 
 
    alist drivetype;                   /* drive type limitation */
    char *reader;                      /* reader program */
    char *writer;                      /* writer program */
-   char *ignoredir;                   /* ignoredir string */
    char *plugin;                      /* plugin program */
 };
 
    int32_t num_opts;                  /* number of options items */
    alist name_list;                   /* filename list -- holds char * */
    alist plugin_list;                 /* filename list for plugins */
+   char *ignoredir;                   /* ignoredir string */
 };
 
 /*
 
             ie = fileset->exclude_items[i];
             fd->fsend("E\n");
          }
+         if (ie->ignoredir) {
+            bnet_fsend(fd, "Z %s\n", ie->ignoredir);
+         }
          for (j=0; j<ie->num_opts; j++) {
             FOPTS *fo = ie->opts_list[j];
             fd->fsend("O %s\n", fo->opts);
             if (fo->plugin) {
                fd->fsend("G %s\n", fo->plugin);
             }
-            if (fo->ignoredir) {
-               bnet_fsend(fd, "Z %s\n", fo->ignoredir);
-            }
             if (fo->reader) {
                fd->fsend("D %s\n", fo->reader);
             }
 
    }
    token = lex_get_token(lc, T_NAME);
    if (pass == 1) {
-      res_incexe.current_opts->ignoredir = bstrdup(lc->str);
+      res_incexe.ignoredir = bstrdup(lc->str);
    }
    scan_to_eol(lc);
 }