*** src/Dir/DirMgr.c.orig Sat Apr 25 20:23:08 1998 --- src/Dir/DirMgr.c Sat Apr 25 20:55:09 1998 *************** *** 24,31 **** #include ! #ifndef NO_REGEXP #include #endif #define DIR_MGR_FSM_SIZE 1024 --- 24,33 ---- #include ! #ifdef NO_REGEXP #include + #else + #include #endif #define DIR_MGR_FSM_SIZE 1024 *************** *** 43,61 **** { DirectoryMgr *dm; PFI f_func,s_func; ! char *f_data; if (pattern == NULL) pattern = "*"; ! if (!DirectoryMgrSimpleFilterFunc(pattern,&f_func,&f_data)) { return(NULL); } ! if (!DirectoryMgrSimpleSortingFunc(sort_type,&s_func)) { free(f_data); return(NULL); } ! dm = DirectoryMgrOpen(path,s_func,f_func,f_data,TRUE); return(dm); } /* End DirectoryMgrSimpleOpen */ --- 45,63 ---- { DirectoryMgr *dm; PFI f_func,s_func; ! regex_t *f_data; if (pattern == NULL) pattern = "*"; ! if (!DirectoryMgrSimpleFilterFunc(pattern, &f_func, &f_data)) { return(NULL); } ! if (!DirectoryMgrSimpleSortingFunc(sort_type, &s_func)) { free(f_data); return(NULL); } ! dm = DirectoryMgrOpen(path, s_func, f_func, f_data, TRUE); return(dm); } /* End DirectoryMgrSimpleOpen */ *************** *** 65,73 **** char *pattern; { PFI f_func; ! char *f_data; ! if (!DirectoryMgrSimpleFilterFunc(pattern,&f_func,&f_data)) { return(FALSE); } --- 67,75 ---- char *pattern; { PFI f_func; ! regex_t *f_data; ! if (!DirectoryMgrSimpleFilterFunc(pattern, &f_func, &f_data)) { return(FALSE); } *************** *** 109,118 **** } /* End DirectoryMgrCanOpen */ ! DirectoryMgr *DirectoryMgrOpen(path,c_func,f_func,f_data,free_data) char *path; PFI c_func,f_func; ! char *f_data; int free_data; { DirectoryMgr *dm; --- 111,120 ---- } /* End DirectoryMgrCanOpen */ ! DirectoryMgr *DirectoryMgrOpen(path, c_func, f_func, f_data, free_data) char *path; PFI c_func,f_func; ! regex_t *f_data; int free_data; { DirectoryMgr *dm; *************** *** 121,127 **** if (dm == NULL) { fprintf(stderr,"DirectoryMgrOpen: out of memory\n"); ! if (free_data && f_data) free(f_data); return(NULL); } if (DirectoryOpen(path,DirectoryMgrDir(dm)) == FALSE) --- 123,132 ---- if (dm == NULL) { fprintf(stderr,"DirectoryMgrOpen: out of memory\n"); ! if (free_data && f_data) { ! regfree(f_data); ! free(f_data); ! } return(NULL); } if (DirectoryOpen(path,DirectoryMgrDir(dm)) == FALSE) *************** *** 129,135 **** fprintf(stderr,"DirectoryMgrOpen: can't open dir '%s'\n", DirectoryMgrDir(dm)); free(dm); ! if (free_data && f_data) free(f_data); return(NULL); } DirectoryMgrCompFunc(dm) = c_func; --- 134,143 ---- fprintf(stderr,"DirectoryMgrOpen: can't open dir '%s'\n", DirectoryMgrDir(dm)); free(dm); ! if (free_data && f_data) { ! regfree(f_data); ! free(f_data); ! } return(NULL); } DirectoryMgrCompFunc(dm) = c_func; *************** *** 155,165 **** int DirectoryMgrRefilter(dm,f_func,f_data,f_free) DirectoryMgr *dm; PFI f_func; ! char *f_data; int f_free; { if (DirectoryMgrFilterData(dm) && DirectoryMgrFreeFilterData(dm)) { free(DirectoryMgrFilterData(dm)); } DirectoryMgrFilterFunc(dm) = f_func; --- 163,174 ---- int DirectoryMgrRefilter(dm,f_func,f_data,f_free) DirectoryMgr *dm; PFI f_func; ! regex_t *f_data; int f_free; { if (DirectoryMgrFilterData(dm) && DirectoryMgrFreeFilterData(dm)) { + regfree(DirectoryMgrFilterData(dm)); free(DirectoryMgrFilterData(dm)); } DirectoryMgrFilterFunc(dm) = f_func; *************** *** 349,369 **** *---------------------------------------------------------------------------*/ ! int DirectoryMgrSimpleFilterFunc(pattern,ff_ptr,fd_ptr) char *pattern; PFI *ff_ptr; ! char **fd_ptr; { ! #ifndef NO_REGEXP char regexp[2048]; *ff_ptr = DirectoryMgrFilterName; ! *fd_ptr = (char *)malloc(sizeof(char) * DIR_MGR_FSM_SIZE); ! if (*fd_ptr == NULL) return(FALSE); ! RegExpPatternToRegExp(pattern,regexp); ! RegExpCompile(regexp,*fd_ptr,DIR_MGR_FSM_SIZE); ! #endif ! return(TRUE); } /* End DirectoryMgrSimpleFilterFunc */ --- 358,379 ---- *---------------------------------------------------------------------------*/ ! int DirectoryMgrSimpleFilterFunc(pattern, ff_ptr, fd_ptr) char *pattern; PFI *ff_ptr; ! regex_t **fd_ptr; { ! #ifdef NO_REGEXP char regexp[2048]; + #endif *ff_ptr = DirectoryMgrFilterName; ! *fd_ptr = (regex_t *)malloc(sizeof(regex_t)); ! if (!*fd_ptr) ! return(FALSE); ! if (!regcomp(*fd_ptr, pattern, REG_EXTENDED | REG_NOSUB)) ! return(TRUE); ! return FALSE; } /* End DirectoryMgrSimpleFilterFunc */ *************** *** 474,486 **** *---------------------------------------------------------------------------*/ ! int DirectoryMgrFilterName(de,fsm) DirEntry *de; ! char *fsm; { ! #ifndef NO_REGEXP return(RegExpMatch(DirEntryFileName(de),fsm)); #else ! return(TRUE); #endif } /* End DirectoryMgrFilterName */ --- 484,496 ---- *---------------------------------------------------------------------------*/ ! int DirectoryMgrFilterName(de, fsm) DirEntry *de; ! regex_t *fsm; { ! #ifdef NO_REGEXP return(RegExpMatch(DirEntryFileName(de),fsm)); #else ! return(regexec(fsm, DirEntryFileName(de), 0, NULL, 0)); #endif } /* End DirectoryMgrFilterName */ *** src/Dir/DirMgr.h.orig Wed Nov 29 12:47:59 1995 --- src/Dir/DirMgr.h Sat Apr 25 21:48:24 1998 *************** *** 26,31 **** --- 26,32 ---- #define _FWF_DIRECTORY_MGR_H_ #include + #include /*---------------------------------------------------------------------------* *************** *** 101,107 **** int total_count; int filtered_count; PFI filter_func; ! char *filter_data; int free_filter_data; PFI comp_func; int current_index; --- 102,108 ---- int total_count; int filtered_count; PFI filter_func; ! regex_t *filter_data; int free_filter_data; PFI comp_func; int current_index; *************** *** 170,179 **** int DirectoryMgrCanOpen(char *path); DirectoryMgr * DirectoryMgrOpen(char *path, PFI c_func, PFI f_func, ! char *f_data, int free_data); void DirectoryMgrClose(DirectoryMgr *dm); int DirectoryMgrRefilter(DirectoryMgr *dm, PFI f_func, ! char *f_data, int f_free); int DirectoryMgrRefresh(DirectoryMgr *dm); void DirectoryMgrResort(DirectoryMgr *dm, PFI c_func); --- 171,180 ---- int DirectoryMgrCanOpen(char *path); DirectoryMgr * DirectoryMgrOpen(char *path, PFI c_func, PFI f_func, ! regex_t *f_data, int free_data); void DirectoryMgrClose(DirectoryMgr *dm); int DirectoryMgrRefilter(DirectoryMgr *dm, PFI f_func, ! regex_t *f_data, int f_free); int DirectoryMgrRefresh(DirectoryMgr *dm); void DirectoryMgrResort(DirectoryMgr *dm, PFI c_func); *** src/Dir/Directory.c.orig Wed Nov 29 12:47:59 1995 --- src/Dir/Directory.c Sat Apr 25 21:48:25 1998 *************** *** 24,30 **** */ #include - #include /*--------------------------------------------------------------------------* --- 24,29 ---- *** src/Dir/Imakefile.orig Thu Apr 18 05:19:51 1996 --- src/Dir/Imakefile Sat Apr 25 22:10:55 1998 *************** *** 4,18 **** CFLAGS = $(CDEBUGFLAGS) $(CCOPTIONS) $(STD_INCLUDES) $(STD_DEFINES) $(PROTO_DEFINES) $(DEFINES) $(COMPATFLAGS) - REGH = RegExp.h - REGSRC = RegExp.c - REGOBJ = RegExp.o - REGTESTSRC = RegExpT.c - REGTESTOBJ = RegExpT.o - REGTEST = $(FWF_BINDIR)/RegExpT - REGOBJS = $(REGOBJ) $(REGTESTOBJ) - REGSRCS = $(REGSRC) $(REGTESTSRC) - DIRH = Directory.h DIRSRC = Directory.c DIROBJ = Directory.o --- 4,9 ---- *************** *** 33,64 **** DIR_LIBNAME = libDir.a ! PROGRAMS = $(REGTEST) $(DIRTEST) $(DIRMGRTEST) ! LIB_OBJS = $(REGOBJ) $(DIROBJ) $(DIRMGROBJ) ! EXT_OBJS = $(REGTESTOBJ) $(DIRTESTOBJ) $(DIRMGRTESTOBJ) ! INCS = $(FWF_INCDIR)/$(REGH) $(FWF_INCDIR)/$(DIRH) $(FWF_INCDIR)/$(DIRMGRH) SRCS = $(REGSRCS) $(DIRSRCS) $(DIRMGRSRCS) LOCALLIBS = $(DIR_LIB) DEPLIBS = $(DIR_LIB) SYSLIBS = - AddToLibraryTarget(archive,$(FWF_LIBDIR),$(DIR_LIBNAME),$(REGOBJ)) AddToLibraryTarget(archive,$(FWF_LIBDIR),$(DIR_LIBNAME),$(DIROBJ)) AddToLibraryTarget(archive,$(FWF_LIBDIR),$(DIR_LIBNAME),$(DIRMGROBJ)) ObjectRuleWithFlags($(CFLAGS) $(XPM_INCDIR) -I$(FWF_INCBASE)) - RequireThisFileForInit($(FWF_INCDIR)/$(REGH)) RequireThisFileForInit($(FWF_INCDIR)/$(DIRH)) RequireThisFileForInit($(FWF_INCDIR)/$(DIRMGRH)) - FileCopyWhenNeeded(.,$(REGH),$(FWF_INCDIR),$(REGH)) FileCopyWhenNeeded(.,$(DIRH),$(FWF_INCDIR),$(DIRH)) FileCopyWhenNeeded(.,$(DIRMGRH),$(FWF_INCDIR),$(DIRMGRH)) - NormalProgramTarget($(REGTEST),$(REGOBJS),$(DEPLIBS),$(LOCALLIBS),$(SYSLIBS)) NormalProgramTarget($(DIRTEST),$(DIROBJS),$(DEPLIBS),$(LOCALLIBS),$(SYSLIBS)) NormalProgramTarget($(DIRMGRTEST),$(DIRMGROBJS),$(DEPLIBS),$(LOCALLIBS),$(SYSLIBS)) --- 24,51 ---- DIR_LIBNAME = libDir.a ! PROGRAMS = $(DIRTEST) $(DIRMGRTEST) ! LIB_OBJS = $(DIROBJ) $(DIRMGROBJ) ! EXT_OBJS = $(DIRTESTOBJ) $(DIRMGRTESTOBJ) ! INCS = $(FWF_INCDIR)/$(DIRH) $(FWF_INCDIR)/$(DIRMGRH) SRCS = $(REGSRCS) $(DIRSRCS) $(DIRMGRSRCS) LOCALLIBS = $(DIR_LIB) DEPLIBS = $(DIR_LIB) SYSLIBS = AddToLibraryTarget(archive,$(FWF_LIBDIR),$(DIR_LIBNAME),$(DIROBJ)) AddToLibraryTarget(archive,$(FWF_LIBDIR),$(DIR_LIBNAME),$(DIRMGROBJ)) ObjectRuleWithFlags($(CFLAGS) $(XPM_INCDIR) -I$(FWF_INCBASE)) RequireThisFileForInit($(FWF_INCDIR)/$(DIRH)) RequireThisFileForInit($(FWF_INCDIR)/$(DIRMGRH)) FileCopyWhenNeeded(.,$(DIRH),$(FWF_INCDIR),$(DIRH)) FileCopyWhenNeeded(.,$(DIRMGRH),$(FWF_INCDIR),$(DIRMGRH)) NormalProgramTarget($(DIRTEST),$(DIROBJS),$(DEPLIBS),$(LOCALLIBS),$(SYSLIBS)) NormalProgramTarget($(DIRMGRTEST),$(DIRMGROBJS),$(DEPLIBS),$(LOCALLIBS),$(SYSLIBS)) *************** *** 81,97 **** echo "#include " >> dirent.h; \ echo "#endif" >> dirent.h; \ cp dirent.h $(FWF_INCDIR)/dirent.h; \ - else echo ""; \ - fi; exit 0) - @rm -f regexp.h - @rm -f $(FWF_INCDIR)/regexp.h - @(if [ ! -f /usr/include/regexp.h ]; \ - then echo "Patching because no regexp.h"; \ - echo "#ifndef _BRIREGEXP_H_" > regexp.h; \ - echo "#define _BRIREGEXP_H_" >> regexp.h; \ - echo "#define NO_REGEXP 1" >> regexp.h; \ - echo "#endif" >> regexp.h; \ - cp regexp.h $(FWF_INCDIR)/regexp.h; \ else echo ""; \ fi; exit 0) --- 68,73 ----