Changeset 361 for trunk/dll/makelist.c
- Timestamp:
- Jul 26, 2006, 11:38:07 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/makelist.c
r51 r361 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2003 Steven H.Levine 10 11 Revisions 12 Feb 03 SHL - AddToFileList: standardize EA math 9 Copyright (c) 2003, 2006 Steven H.Levine 10 11 12 Feb 03 SHL AddToFileList: standardize EA math 12 22 Jul 06 SHL Use Runtime_Error 13 22 Jul 06 SHL AddToList optimize 12 14 13 15 ***********************************************************************/ 16 14 17 #define INCL_DOS 15 18 #define INCL_WIN 16 17 19 #include <os2.h> 20 18 21 #include <stdio.h> 19 22 #include <stdlib.h> 20 23 #include <string.h> 21 24 #include <ctype.h> 25 22 26 #include "fm3dll.h" 27 #include "fm3str.h" 28 29 static PSZ pszSrcFile = __FILE__; 23 30 24 31 #pragma alloc_text(MAKELIST,AddToList,AddToFileList,BuildList,FreeListInfo,FreeList) 25 32 #pragma alloc_text(MAKELIST,SortList,BuildArcList,RemoveFromList,CombineLists) 26 33 27 28 VOID SortList (LISTINFO *li) { 29 34 VOID SortList (LISTINFO *li) 35 { 30 36 /* bubble-sort entries by size, descending */ 31 37 … … 59 65 60 66 61 VOID FreeListInfo (LISTINFO *li) {62 67 VOID FreeListInfo (LISTINFO *li) 68 { 63 69 if(li) { 64 70 if(li->ulitemID) … … 73 79 74 80 75 VOID FreeList (CHAR **list) {76 81 VOID FreeList (CHAR **list) 82 { 77 83 register INT x; 78 84 … … 96 102 INT *numfiles,INT *numalloced) 97 103 { 98 99 FILELIST **test; 100 101 if(string && ffb4) { 102 if(((*numfiles) + 3) > *numalloced) { 103 if((test = realloc(*list,(((*numalloced) + 6) * 104 sizeof(FILELIST *)))) == NULL) 104 FILELIST *pfl; 105 if (string && ffb4) { 106 if (((*numfiles) + 3) > *numalloced) { 107 FILELIST **pflArray; 108 // Use plain realloc for speed 109 pflArray = realloc(*list,(*numalloced + 6) * sizeof(FILELIST *)); 110 if (!pflArray) { 111 Runtime_Error(pszSrcFile,__LINE__,GetPString(IDS_OUTOFMEMORY)); 105 112 return 1; 113 } 106 114 (*numalloced) += 6; 107 *list = test; 108 } 109 if(((*list)[*numfiles] = malloc(sizeof(FILELIST) + 110 strlen(string))) == NULL) 115 *list = pflArray; 116 } 117 // Use plain malloc for speed 118 pfl = malloc(sizeof(FILELIST) + strlen(string)); 119 if (!pfl) { 120 Runtime_Error(pszSrcFile,__LINE__,GetPString(IDS_OUTOFMEMORY)); 111 121 return 2; 112 (*list)[*numfiles]->attrFile = ffb4->attrFile; 113 (*list)[*numfiles]->date = ffb4->fdateLastWrite; 114 (*list)[*numfiles]->time = ffb4->ftimeLastWrite; 115 (*list)[*numfiles]->ladate = ffb4->fdateLastAccess; 116 (*list)[*numfiles]->latime = ffb4->ftimeLastAccess; 117 (*list)[*numfiles]->crdate = ffb4->fdateCreation; 118 (*list)[*numfiles]->crtime = ffb4->ftimeCreation; 119 (*list)[*numfiles]->cbFile = ffb4->cbFile; 120 (*list)[*numfiles]->easize = CBLIST_TO_EASIZE(ffb4->cbList); 121 strcpy((*list)[*numfiles]->fname,string); 122 } 123 pfl->attrFile = ffb4->attrFile; 124 pfl->date = ffb4->fdateLastWrite; 125 pfl->time = ffb4->ftimeLastWrite; 126 pfl->ladate = ffb4->fdateLastAccess; 127 pfl->latime = ffb4->ftimeLastAccess; 128 pfl->crdate = ffb4->fdateCreation; 129 pfl->crtime = ffb4->ftimeCreation; 130 pfl->cbFile = ffb4->cbFile; 131 pfl->easize = CBLIST_TO_EASIZE(ffb4->cbList); 132 strcpy(pfl->fname,string); 133 (*list)[*numfiles] = pfl; 122 134 (*numfiles)++; 123 135 (*list)[*numfiles] = NULL; … … 131 143 132 144 133 INT AddToList (CHAR *string,CHAR ***list,INT *numfiles,INT *numalloced) { 134 135 CHAR **test; 136 137 if(string) { 138 if(((*numfiles) + 3) > *numalloced) { 139 if((test = realloc(*list,(((*numalloced) + 6) * sizeof(CHAR *)))) == NULL) 145 INT AddToList (CHAR *string,CHAR ***list,INT *numfiles,INT *numalloced) 146 { 147 CHAR **ppsz; 148 PSZ psz; 149 150 if (string) { 151 if (((*numfiles) + 3) > *numalloced) { 152 // Use plain realloc for speed 153 ppsz = realloc(*list,(*numalloced + 6) * sizeof(CHAR *)); 154 if (!ppsz) { 155 Runtime_Error(pszSrcFile, __LINE__, "realloc"); 140 156 return 1; 157 } 141 158 (*numalloced) += 6; 142 *list = test; 143 } 144 if(((*list)[*numfiles] = malloc(strlen(string) + 1)) == NULL) 159 *list = ppsz; 160 } 161 // Use plain malloc for speed 162 psz = malloc(strlen(string) + 1); 163 if (!psz) { 164 Runtime_Error(pszSrcFile,__LINE__,GetPString(IDS_OUTOFMEMORY)); 145 165 return 2; 166 } 167 (*list)[*numfiles] = psz; 146 168 strcpy((*list)[*numfiles],string); 147 169 (*numfiles)++; … … 156 178 157 179 158 CHAR ** BuildList (HWND hwndCnr) {159 180 CHAR ** BuildList (HWND hwndCnr) 181 { 160 182 PCNRITEM pci; 161 183 CHAR **list = NULL,**test; … … 171 193 } 172 194 while(pci && (INT)pci != -1 && !error) { 173 if (!(pci->rc.flRecordAttr & CRA_FILTERED))195 if (!(pci->rc.flRecordAttr & CRA_FILTERED)) 174 196 error = AddToList(pci->szFileName,&list,&numfiles,&numalloc); 175 197 pci = WinSendMsg(hwndCnr,CM_QUERYRECORDEMPHASIS,MPFROMP(pci), 176 198 MPFROMSHORT(attribute)); 177 199 } 178 if(numalloc > numfiles + 1) { 200 if (numalloc > numfiles + 1) { 201 // Use plain realloc for speed 179 202 test = realloc(list,sizeof(CHAR *) * (numfiles + 1)); 180 if(test) 203 if (!test) 204 Runtime_Error(pszSrcFile,__LINE__,GetPString(IDS_OUTOFMEMORY)); 205 else 181 206 list = test; 182 207 } … … 185 210 186 211 187 CHAR ** BuildArcList (HWND hwndCnr) {188 212 CHAR ** BuildArcList (HWND hwndCnr) 213 { 189 214 PARCITEM pai; 190 215 CHAR **list = NULL; … … 209 234 210 235 211 CHAR ** RemoveFromList (CHAR **list,CHAR *item) {212 236 CHAR ** RemoveFromList (CHAR **list,CHAR *item) 237 { 213 238 register INT x,y; 214 239 … … 235 260 236 261 237 CHAR ** CombineLists (CHAR **prime,CHAR **add) {238 262 CHAR ** CombineLists (CHAR **prime,CHAR **add) 263 { 239 264 register INT x; 240 265 INT numalloc,numfiles = 0;
Note:
See TracChangeset
for help on using the changeset viewer.