Changeset 361 for trunk/dll/makelist.c


Ignore:
Timestamp:
Jul 26, 2006, 11:38:07 PM (19 years ago)
Author:
root
Message:

Use Runtime_Error
AddToList optimize

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/makelist.c

    r51 r361  
    77
    88  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
    1214
    1315***********************************************************************/
     16
    1417#define INCL_DOS
    1518#define INCL_WIN
    16 
    1719#include <os2.h>
     20
    1821#include <stdio.h>
    1922#include <stdlib.h>
    2023#include <string.h>
    2124#include <ctype.h>
     25
    2226#include "fm3dll.h"
     27#include "fm3str.h"
     28
     29static PSZ pszSrcFile = __FILE__;
    2330
    2431#pragma alloc_text(MAKELIST,AddToList,AddToFileList,BuildList,FreeListInfo,FreeList)
    2532#pragma alloc_text(MAKELIST,SortList,BuildArcList,RemoveFromList,CombineLists)
    2633
    27 
    28 VOID SortList (LISTINFO *li) {
    29 
     34VOID SortList (LISTINFO *li)
     35{
    3036  /* bubble-sort entries by size, descending */
    3137
     
    5965
    6066
    61 VOID FreeListInfo (LISTINFO *li) {
    62 
     67VOID FreeListInfo (LISTINFO *li)
     68{
    6369  if(li) {
    6470    if(li->ulitemID)
     
    7379
    7480
    75 VOID FreeList (CHAR **list) {
    76 
     81VOID FreeList (CHAR **list)
     82{
    7783  register INT x;
    7884
     
    96102                   INT *numfiles,INT *numalloced)
    97103{
    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));
    105112        return 1;
     113      }
    106114      (*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));
    111121      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;
    122134    (*numfiles)++;
    123135    (*list)[*numfiles] = NULL;
     
    131143
    132144
    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)
     145INT 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");
    140156        return 1;
     157      }
    141158      (*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));
    145165      return 2;
     166    }
     167    (*list)[*numfiles] = psz;
    146168    strcpy((*list)[*numfiles],string);
    147169    (*numfiles)++;
     
    156178
    157179
    158 CHAR ** BuildList (HWND hwndCnr) {
    159 
     180CHAR ** BuildList (HWND hwndCnr)
     181{
    160182  PCNRITEM pci;
    161183  CHAR   **list = NULL,**test;
     
    171193  }
    172194  while(pci && (INT)pci != -1 && !error) {
    173     if(!(pci->rc.flRecordAttr & CRA_FILTERED))
     195    if (!(pci->rc.flRecordAttr & CRA_FILTERED))
    174196      error = AddToList(pci->szFileName,&list,&numfiles,&numalloc);
    175197    pci = WinSendMsg(hwndCnr,CM_QUERYRECORDEMPHASIS,MPFROMP(pci),
    176198                     MPFROMSHORT(attribute));
    177199  }
    178   if(numalloc > numfiles + 1) {
     200  if (numalloc > numfiles + 1) {
     201    // Use plain realloc for speed
    179202    test = realloc(list,sizeof(CHAR *) * (numfiles + 1));
    180     if(test)
     203    if (!test)
     204      Runtime_Error(pszSrcFile,__LINE__,GetPString(IDS_OUTOFMEMORY));
     205    else
    181206      list = test;
    182207  }
     
    185210
    186211
    187 CHAR ** BuildArcList (HWND hwndCnr) {
    188 
     212CHAR ** BuildArcList (HWND hwndCnr)
     213{
    189214  PARCITEM pai;
    190215  CHAR   **list = NULL;
     
    209234
    210235
    211 CHAR ** RemoveFromList (CHAR **list,CHAR *item) {
    212 
     236CHAR ** RemoveFromList (CHAR **list,CHAR *item)
     237{
    213238  register INT x,y;
    214239
     
    235260
    236261
    237 CHAR ** CombineLists (CHAR **prime,CHAR **add) {
    238 
     262CHAR ** CombineLists (CHAR **prime,CHAR **add)
     263{
    239264  register INT x;
    240265  INT          numalloc,numfiles = 0;
Note: See TracChangeset for help on using the changeset viewer.