Changeset 731


Ignore:
Timestamp:
Jul 23, 2007, 11:18:39 PM (13 years ago)
Author:
Steven Levine
Message:

Correct ticket 24 pointer errors for Gregg

Location:
trunk/dll
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/comp.c

    r730 r731  
    346346//=== ActionCnrThread() Do requested action on container contents ===
    347347
    348 static VOID ActionCnrThread(VOID * args)
     348static VOID ActionCnrThread(VOID *args)
    349349{
    350   COMPARE *cmp = (COMPARE *) args;
     350  COMPARE *cmp = (COMPARE *)args;
    351351  HAB hab;
    352352  HMQ hmq;
     
    355355  CHAR newname[CCHMAXPATH], dirname[CCHMAXPATH], *p;
    356356  APIRET rc;
    357   CHAR *f = 0;
    358357
    359358  if (!cmp)
     
    431430              }
    432431              else {
    433                 pci->pszFileName = xstrdup(f, pszSrcFile, __LINE__);
     432                pci->pszFileName = xstrdup(NullStr, pszSrcFile, __LINE__);
    434433                //pci->pszFileName = pci->szFileName;
    435434                pci->flags = 0;
     
    493492              pciO->cbFile = pci->cbFile;
    494493              pciO->easize = pci->easize;
    495               pciO->pszSubject = xstrdup(f, pszSrcFile, __LINE__);
    496               pci->pszFileName = xstrdup(f, pszSrcFile, __LINE__);
     494              pciO->pszSubject = xstrdup(NullStr, pszSrcFile, __LINE__);
     495              pci->pszFileName = xstrdup(NullStr, pszSrcFile, __LINE__);
    497496              //pci->pszFileName = pci->szFileName;
    498497              pci->flags = 0;
     
    574573              pciO->cbFile = pci->cbFile;
    575574              pciO->easize = pci->easize;
    576               pci->pszSubject = xstrdup(f, pszSrcFile, __LINE__);
     575              pci->pszSubject = xstrdup(NullStr, pszSrcFile, __LINE__);
    577576              pci->flags = CNRITEM_EXISTS;
    578577              WinSendMsg(hwndCnrS, CM_INVALIDATERECORD, MPFROMP(&pci),
  • trunk/dll/dirsize.c

    r730 r731  
    7878}
    7979
    80 static BOOL ProcessDir(HWND hwndCnr, CHAR * pszFileName,
     80static BOOL ProcessDir(HWND hwndCnr,
     81                       CHAR *pszFileName,
    8182                       PCNRITEM pciParent,
    82                        CHAR * pchStopFlag, BOOL top,
     83                       CHAR *pchStopFlag,
     84                       BOOL top,
    8385                       PULONGLONG pullTotalBytes)
    8486{
     
    9799  RECORDINSERT ri;
    98100  PCNRITEM pCI;
    99   CHAR *f = 0;
    100101
    101102  // fixme to report errors
     
    147148    else
    148149      DosError(FERR_DISABLEHARDERR);
     150    // fixme to not double free when pointers match
    149151    pCI->pszLongname = pCI->pszFileName;
    150152    pCI->rc.hptrIcon = hptrDir;
    151153    *pCI->szDispAttr = 0;
    152154    pCI->attrFile = 0;
    153     pCI->pszLongname = xstrdup(f, pszSrcFile, __LINE__);
    154     pCI->pszSubject = xstrdup(f, pszSrcFile, __LINE__);
     155    pCI->pszSubject = xstrdup(NullStr, pszSrcFile, __LINE__);
    155156  }
    156157  else {
     
    183184      strcat(pp, sp);
    184185  }
    185   pCI->pszFileName = pCI->pszFileName + strlen(pCI->pszFileName);
    186186  pCI->rc.pszIcon = pCI->pszLongname;
    187187  pCI->rc.flRecordAttr |= CRA_RECORDREADONLY;
     
    190190  else if (fForceLower)
    191191    strlwr(pCI->pszFileName);
     192  // fixme to work - code is hiding file name from container but... 23 Jul 07 SHL
     193  pCI->pszFileName = pCI->pszFileName + strlen(pCI->pszFileName);
    192194  memset(&ri, 0, sizeof(RECORDINSERT));
    193195  ri.cb = sizeof(RECORDINSERT);
     
    197199  ri.cRecordsInsert = 1L;
    198200  ri.fInvalidateRecord = TRUE;
    199   //printf("CM_INSERTRECORD\n");
    200201  if (!WinSendMsg(hwndCnr, CM_INSERTRECORD, MPFROMP(pCI), MPFROMP(&ri))) {
    201     //printf("Insert failed\n");
    202202    free(pFFB);
    203203    return FALSE;
     
    205205  hdir = HDIR_CREATE;
    206206  nm = 1L;
    207   //printf("FIND2\n");
    208207  rc = DosFindFirst(maskstr, &hdir,
    209208                    FILE_NORMAL | FILE_READONLY | FILE_ARCHIVED |
     
    302301            ((float)fsa.cUnit * (fsa.cSectorUnit * fsa.cbSector));
    303302        }
     303        // Need unique buffer 23 Jul 07 SHL
     304        pCI->pszLongname = xmalloc(2, pszSrcFile, __LINE__);
     305        pCI->pszLongname[0] = 0;                // Make null string
    304306        pCI->pszLongname[1] = 1;                // Flag root - hack cough
    305307      }
     
    322324    CommaFmtULL(szSubDir, sizeof(szSubDir), pCI->easize, 'K');
    323325    CommaFmtULL(szAllDir, sizeof(szAllDir), pCI->cbFile + pCI->easize, 'K');
    324     sprintf(&pCI->pszFileName[strlen(pCI->pszFileName)],
     326    pCI->pszFileName = xrealloc(pCI->pszFileName, strlen(pCI->pszFileName) + 100,
     327                                pszSrcFile,
     328                                __LINE__);      // 23 Jul 07 SHL
     329    sprintf(pCI->pszFileName + strlen(pCI->pszFileName),
    325330            "  %s + %s = %s (%.02lf%%%s)\r%s",
    326331            szCurDir,
     
    747752    case CN_ENTER:
    748753      if (mp2) {
    749 
    750         PCNRITEM pci = (PCNRITEM) ((PNOTIFYRECORDENTER) mp2)->pRecord;
    751         CHAR pszFileName[CCHMAXPATH], szTemp[CCHMAXPATH];
     754        PCNRITEM pci = (PCNRITEM)((PNOTIFYRECORDENTER)mp2)->pRecord;
     755        CHAR szFileName[CCHMAXPATH];    // 23 Jul 07 SHL
     756        CHAR szTemp[CCHMAXPATH];
    752757
    753758        if (pci) {
    754           *pszFileName = 0;
     759          *szFileName = 0;
    755760          while (pci && (INT) pci != -1) {
    756761            memset(szTemp, 0, sizeof(szTemp));
     
    758763                    pci->pszFileName - pci->pszFileName);
    759764            strrev(szTemp);
    760             if (*pszFileName && *szTemp != '\\')
    761               strcat(pszFileName, "\\");
    762             strcat(pszFileName, szTemp);
     765            if (*szFileName && *szTemp != '\\')
     766              strcat(szFileName, "\\");
     767            strcat(szFileName, szTemp);
    763768            pci = WinSendDlgItemMsg(hwnd, DSZ_CNR, CM_QUERYRECORD,
    764769                                    MPFROMP(pci),
    765770                                    MPFROM2SHORT(CMA_PARENT, CMA_ITEMORDER));
    766771          }
    767           strrev(pszFileName);
     772          strrev(szFileName);
    768773          if (!fVTreeOpensWPS)
    769774            OpenDirCnr((HWND) 0,
    770775                       (hwndMain) ? hwndMain : HWND_DESKTOP,
    771                        hwnd, FALSE, pszFileName);
     776                       hwnd, FALSE, szFileName);
    772777          else {
    773778
     
    780785                                (PVOID) & flWindowAttr, &size);
    781786            if (flWindowAttr & CV_DETAIL) {
    782               if (IsRoot(pszFileName))
     787              if (IsRoot(szFileName))
    783788                strcpy(s, "TREE");
    784789              else
    785790                strcpy(s, "DETAILS");
    786791            }
    787             OpenObject(pszFileName, s, hwnd);
     792            OpenObject(szFileName, s, hwnd);
    788793          }
    789794        }
     
    826831      else {
    827832
    828         CHAR pszFileName[CCHMAXPATH];
     833        CHAR szFileName[CCHMAXPATH];
    829834        FILE *fp;
    830835
    831         save_dir2(pszFileName);
    832         sprintf(&pszFileName[strlen(pszFileName)], "\\%csizes.Rpt",
     836        save_dir2(szFileName);
     837        sprintf(&szFileName[strlen(szFileName)], "\\%csizes.Rpt",
    833838                (pState) ? toupper(*pState->szDirName) : '+');
    834         if (export_filename(hwnd, pszFileName, FALSE) && *pszFileName) {
    835           if (stricmp(pszFileName, "PRN") &&
    836               strnicmp(pszFileName, "\\DEV\\LPT", 8) &&
    837               !strchr(pszFileName, '.'))
    838             strcat(pszFileName, ".RPT");
    839           fp = fopen(pszFileName, "a+");
     839        if (export_filename(hwnd, szFileName, FALSE) && *szFileName) {
     840          if (stricmp(szFileName, "PRN") &&
     841              strnicmp(szFileName, "\\DEV\\LPT", 8) &&
     842              !strchr(szFileName, '.'))
     843            strcat(szFileName, ".RPT");
     844          fp = fopen(szFileName, "a+");
    840845          if (!fp) {
    841846            saymsg(MB_CANCEL,
    842847                   hwnd,
    843848                   GetPString(IDS_ERRORTEXT),
    844                    GetPString(IDS_COMPCANTOPENTEXT), pszFileName);
     849                   GetPString(IDS_COMPCANTOPENTEXT), szFileName);
    845850          }
    846851          else {
  • trunk/dll/filldir.c

    r730 r731  
    157157    DosSleep(rand() % 100);
    158158
    159   }                                     // for
     159  } // for
    160160
    161161  return hptr == hptrPMFile || hptr == hptrWPSFile;
    162162
    163 }                                       // IsDefaultIcon
    164 
    165 ULONGLONG FillInRecordFromFFB(HWND hwndCnr, PCNRITEM pci,
     163} // IsDefaultIcon
     164
     165ULONGLONG FillInRecordFromFFB(HWND hwndCnr,
     166                              PCNRITEM pci,
    166167                              const PSZ pszDirectory,
    167                               const PFILEFINDBUF4 pffb, const BOOL partial,
     168                              const PFILEFINDBUF4 pffb,
     169                              const BOOL partial,
    168170                              DIRCNRDATA * dcd)
    169171{
     
    175177  UINT x;
    176178  UINT y;
    177   UINT t;
    178   CHAR *f = 0;
    179179
    180180  pci->hwndCnr = hwndCnr;
    181   t = strlen(pszDirectory);
     181
     182  // 23 Jul 07 SHL fixme to optimize
    182183  pci->pszFileName = xstrdup(pszDirectory, pszSrcFile, __LINE__);
    183   /* note! we cheat below, and accept the full pathname in pszDirectory
    184      if !*pffb->achName.  speeds up and simplifies processing elsewhere
     184  /* note that we cheat below, and accept the full pathname in pszDirectory
     185     if !*pffb->achName.  This speeds up and simplifies processing elsewhere
    185186     (like in update.c)
    186187   */
    187   if (*pffb->achName) {
    188     p = pci->pszFileName + (t - 1);
     188  if (!*pffb->achName)
     189    pci->pszFileName = xstrdup(pszDirectory, pszSrcFile, __LINE__);
     190  else {
     191    INT c = strlen(pszDirectory);
     192    INT c2 = pffb->cchName + 1;
     193    if (pszDirectory[c - 1] != '\\')
     194      c2++;
     195    pci->pszFileName = xmalloc(c + c2,
     196                               pszSrcFile,
     197                               __LINE__);
     198    memcpy(pci->pszFileName, pszDirectory, c + 1);
     199    p = pci->pszFileName + c - 1;
    189200    if (*p != '\\') {
    190201      p++;
     
    194205    memcpy(p, pffb->achName, pffb->cchName + 1);
    195206  }
     207
    196208  /* load the object's Subject, if required */
     209  pci->pszSubject = NULL;
    197210  if (pffb->cbList > 4L &&
    198211      dcd && fLoadSubject &&
    199212      (isalpha(*pci->pszFileName) &&
    200        !(driveflags[toupper(*pci->pszFileName) - 'A'] & DRIVE_NOLOADSUBJS))) {
     213       !(driveflags[toupper(*pci->pszFileName) - 'A'] & DRIVE_NOLOADSUBJS)))
     214  {
    201215    APIRET rc;
    202216    EAOP2 eaop;
     
    234248    }
    235249  }
     250  // If still need subject - fixme to just point NullStr
     251  if (!pci->pszSubject)
     252    pci->pszSubject = xstrdup(NullStr, pszSrcFile, __LINE__);
     253
    236254  /* load the object's longname */
    237   pci->pszLongname = xstrdup(f, pszSrcFile, __LINE__);
     255  pci->pszLongname = 0;
    238256  if (fLoadLongnames &&
    239257      dcd &&
     
    241259      isalpha(*pci->pszFileName) &&
    242260      ~driveflags[toupper(*pci->pszFileName) - 'A'] & DRIVE_NOLONGNAMES &&
    243       ~driveflags[toupper(*pci->pszFileName) - 'A'] & DRIVE_NOLOADLONGS) {
     261      ~driveflags[toupper(*pci->pszFileName) - 'A'] & DRIVE_NOLOADLONGS)
     262  {
    244263    APIRET rc;
    245264    EAOP2 eaop;
     
    277296    }
    278297  }
     298  // If still need long name set - fixme to just point to NullStr
     299  if (!pci->pszLongname)
     300    pci->pszLongname = xstrdup(NullStr, pszSrcFile, __LINE__);
     301
    279302  /* do anything required to case of filename */
    280303  if (fForceUpper)
     
    310333  if (!hptr) {
    311334    hptr = pffb->attrFile & FILE_DIRECTORY ?
    312       hptrDir :
    313       pffb->attrFile & FILE_SYSTEM ?
    314       hptrSystem :
    315       pffb->attrFile & FILE_HIDDEN ?
    316       hptrHidden : pffb->attrFile & FILE_READONLY ? hptrReadonly : hptrFile;
     335      hptrDir : pffb->attrFile & FILE_SYSTEM ?
     336                  hptrSystem :
     337                    pffb->attrFile & FILE_HIDDEN ?
     338                    hptrHidden :
     339                    pffb->attrFile & FILE_READONLY ?
     340                      hptrReadonly : hptrFile;
    317341  }
    318342
     
    337361    p = pci->pszFileName;
    338362  /* now fill the darned thing in... */
     363  // fixme to have secondary pointer that points to real buffer 23 Jul 07 SHL
    339364  pci->pszFileName = p;
    340365  pci->date.day = pffb->fdateLastWrite.day;
     
    397422  return pffb->cbFile + pci->easize;
    398423
    399 }                                       // FillInRecordFromFFB
     424} // FillInRecordFromFFB
    400425
    401426ULONGLONG FillInRecordFromFSA(HWND hwndCnr, PCNRITEM pci, const PSZ pszFileName, const PFILESTATUS4 pfsa4, const BOOL partial, DIRCNRDATA * dcd)        // Optional
     
    403428  HPOINTER hptr;
    404429  CHAR attrstring[] = "RHS\0DA";
    405   register CHAR *p;
    406   register INT x;
    407   register INT y;
    408   CHAR *f = 0;
     430  CHAR *p;
     431  INT x;
     432  INT y;
    409433
    410434  /* fill in a container record from a FILESTATUS4 structure */
     
    412436  pci->hwndCnr = hwndCnr;
    413437  pci->pszFileName = xstrdup(pszFileName, pszSrcFile, __LINE__);
     438
    414439  /* load the object's Subject, if required */
     440  pci->pszSubject = NULL;
    415441  if (pfsa4->cbList > 4L &&
    416442      dcd &&
    417443      fLoadSubject &&
    418444      (!isalpha(*pci->pszFileName) ||
    419        !(driveflags[toupper(*pci->pszFileName) - 'A'] & DRIVE_NOLOADSUBJS))) {
     445       !(driveflags[toupper(*pci->pszFileName) - 'A'] & DRIVE_NOLOADSUBJS)))
     446  {
    420447    APIRET rc;
    421448    EAOP2 eaop;
     
    446473          value[pfea->cbValue] = 0;
    447474          if (*(USHORT *) value == EAT_ASCII)
    448             pci->pszSubject = xstrdup(value + (sizeof(USHORT) * 2), pszSrcFile, __LINE__);
     475            pci->pszSubject = xstrdup(value + (sizeof(USHORT) * 2), pszSrcFile, __LINE__);
    449476        }
    450477        free(pfealist);
     
    453480    }
    454481  }
    455   pci->pszLongname = xstrdup(f, pszSrcFile, __LINE__);
     482  // If still need subject buffer - fixme to just point to NullStr
     483  if (!pci->pszSubject)
     484    pci->pszSubject = xstrdup(NullStr, pszSrcFile, __LINE__);
     485
     486  pci->pszLongname = 0;
    456487  if (fLoadLongnames &&
    457488      dcd &&
     
    459490      isalpha(*pci->pszFileName) &&
    460491      ~driveflags[toupper(*pci->pszFileName) - 'A'] & DRIVE_NOLONGNAMES &&
    461       ~driveflags[toupper(*pci->pszFileName) - 'A'] & DRIVE_NOLOADLONGS) {
     492      ~driveflags[toupper(*pci->pszFileName) - 'A'] & DRIVE_NOLOADLONGS)
     493  {
    462494    APIRET rc;
    463495    EAOP2 eaop;
     
    485517        if (!rc) {
    486518          pfea = &eaop.fpFEA2List->list[0];
    487           value = pfea->szName + pfea->cbName + 1;
    488           value[pfea->cbValue] = 0;
    489           if (*(USHORT *) value == EAT_ASCII)
    490             pci->pszLongname = xstrdup(value + (sizeof(USHORT) * 2), pszSrcFile, __LINE__);
     519          value = pfea->szName + pfea->cbName + 1;      // Point at EA value
     520          value[pfea->cbValue] = 0;                     // Terminate
     521          if (*(USHORT *) value == EAT_ASCII) {
     522            p = value + sizeof(USHORT) * 2;             // Point at value string
     523            pci->pszLongname = xstrdup(p, pszSrcFile, __LINE__);
     524          }
    491525        }
    492526        free(pfealist);
     
    495529    }
    496530  }
     531  // If still need long name set - fixme to just point to NullStr
     532  if (!pci->pszLongname)
     533    pci->pszLongname = xstrdup(NullStr, pszSrcFile, __LINE__);
     534
    497535  if (fForceUpper)
    498536    strupr(pci->pszFileName);
     
    598636  return pfsa4->cbFile + pci->easize;
    599637
    600 }                                       // FillInRecordFromFSA
     638} // FillInRecordFromFSA
    601639
    602640VOID ProcessDirectory(const HWND hwndCnr, const PCNRITEM pciParent, const CHAR * szDirBase, const BOOL filestoo, const BOOL recurse, const BOOL partial, CHAR * stopflag, DIRCNRDATA * dcd,     // Optional
     
    731769                pci = (PCNRITEM) pci->rc.preccNextRecord;
    732770                ullTotalBytes += ullBytes;
    733               }
     771              } // for
    734772              if (ulFileCnt) {
    735773                memset(&ri, 0, sizeof(RECORDINSERT));
     
    911949    *pullTotalBytes = ullReturnBytes;
    912950
    913 }                                       // ProcessDirectory
     951} // ProcessDirectory
    914952
    915953VOID FillDirCnr(HWND hwndCnr,
     
    926964  DosPostEventSem(CompactSem);
    927965
    928 }                                       // FillDirCnr
     966} // FillDirCnr
    929967
    930968VOID FillTreeCnr(HWND hwndCnr, HWND hwndParent)
    931969{
    932   ULONG ulDriveNum, ulDriveMap, numtoinsert = 0, drvtype;
     970  ULONG ulCurDriveNum, ulDriveMap, numtoinsert = 0, drvtype;
    933971  PCNRITEM pci, pciFirst = NULL, pciNext, pciParent = NULL;
    934972  INT x, removable;
    935   CHAR  suggest[32], szDrive[] = " :\\", FileSystem[CCHMAXPATH];
     973  CHAR suggest[32];
     974  CHAR szDrive[] = " :\\", FileSystem[CCHMAXPATH];
    936975  FILESTATUS4 fsa4;
    937976  APIRET rc;
     
    958997  }
    959998  DosError(FERR_DISABLEHARDERR);
    960   rc = DosQCurDisk(&ulDriveNum, &ulDriveMap);
     999  rc = DosQCurDisk(&ulCurDriveNum, &ulDriveMap);
    9611000  if (rc) {
    9621001    Dos_Error(MB_CANCEL,
     
    9661005    exit(0);
    9671006  }
     1007  // Calc number of drive items to create
    9681008  for (x = 0; x < 26; x++) {
    9691009    if ((ulDriveMap & (1L << x)) && !(driveflags[x] & DRIVE_IGNORE))
     
    9851025    for (x = 0; x < 26; x++) {
    9861026      if ((ulDriveMap & (1L << x)) && !(driveflags[x] & DRIVE_IGNORE)) {
    987         *szDrive = (CHAR) x + 'A';
    988 
    989         {
    990           CHAR s[80];
    991           ULONG flags = 0;
    992           ULONG size = sizeof(ULONG);
    993 
    994           sprintf(s, "%c.DriveFlags", toupper(*szDrive));
    995           if (PrfQueryProfileData(fmprof, appname, s, &flags, &size) &&
    996               size == sizeof(ULONG)) {
    997             driveflags[toupper(*szDrive) - 'A'] |= flags;
    998           }
     1027
     1028        CHAR s[80];
     1029        ULONG flags = 0;
     1030        ULONG size = sizeof(ULONG);
     1031
     1032        *szDrive = (CHAR)x + 'A';               // Build path spec
     1033
     1034        sprintf(s, "%c.DriveFlags", toupper(*szDrive));
     1035        if (PrfQueryProfileData(fmprof, appname, s, &flags, &size) &&
     1036            size == sizeof(ULONG)) {
     1037          driveflags[toupper(*szDrive) - 'A'] |= flags;
    9991038        }
    10001039
    10011040        if (x > 1) {
     1041          // Hard drive (2..N)
    10021042          if (!(driveflags[x] & DRIVE_NOPRESCAN)) {
    10031043            *FileSystem = 0;
     
    10061046            driveserial[x] = -1;
    10071047            if (removable != -1) {
    1008               struct
    1009               {
     1048              struct {
    10101049                ULONG serial;
    10111050                CHAR volumelength;
    10121051                CHAR volumelabel[CCHMAXPATH];
    1013               }
    1014               volser;
     1052              } volser;
    10151053
    10161054              DosError(FERR_DISABLEHARDERR);
     
    10181056                                  FSIL_VOLSER, &volser, sizeof(volser))) {
    10191057                driveserial[x] = volser.serial;
    1020               }
    1021             }
     1058              }
     1059            }
    10221060            else
    10231061              driveflags[x] |= DRIVE_INVALID;
     1062
    10241063            memset(&fsa4, 0, sizeof(FILESTATUS4));
    1025             driveflags[x] |= ((removable == -1 || removable == 1) ?
    1026                               DRIVE_REMOVABLE : 0);
     1064            driveflags[x] |= removable == -1 || removable == 1 ?
     1065                              DRIVE_REMOVABLE : 0;
    10271066            if (drvtype & DRIVE_REMOTE)
    10281067              driveflags[x] |= DRIVE_REMOTE;
    1029             if (!stricmp(FileSystem,RAMFS))
    1030             {
    1031              driveflags[x] |= DRIVE_RAMDISK;
    1032              driveflags[x] &= ~DRIVE_REMOTE;
    1033             }
    1034              if (!stricmp(FileSystem,NDFS32))
    1035             {
    1036              driveflags[x] |= DRIVE_VIRTUAL;
    1037              driveflags[x] &= ~DRIVE_REMOTE;
    1038             }
    1039             if (!stricmp(FileSystem,NTFS))
    1040              driveflags[x] |= DRIVE_NOTWRITEABLE;
     1068            if (!stricmp(FileSystem,RAMFS)) {
     1069              driveflags[x] |= DRIVE_RAMDISK;
     1070              driveflags[x] &= ~DRIVE_REMOTE;
     1071            }
     1072            if (!stricmp(FileSystem,NDFS32)) {
     1073              driveflags[x] |= DRIVE_VIRTUAL;
     1074              driveflags[x] &= ~DRIVE_REMOTE;
     1075            }
     1076            if (!stricmp(FileSystem,NTFS))
     1077              driveflags[x] |= DRIVE_NOTWRITEABLE;
    10411078            if (strcmp(FileSystem, HPFS) &&
    10421079                strcmp(FileSystem, JFS) &&
    1043                 strcmp(FileSystem, ISOFS) &&
     1080                strcmp(FileSystem, ISOFS) &&
    10441081                strcmp(FileSystem, CDFS) &&
    10451082                strcmp(FileSystem, FAT32) &&
    1046                 strcmp(FileSystem, NDFS32) &&
    1047                 strcmp(FileSystem, RAMFS) &&
    1048                 strcmp(FileSystem, NTFS) &&
    1049                 strcmp(FileSystem, HPFS386)) {
     1083                strcmp(FileSystem, NDFS32) &&
     1084                strcmp(FileSystem, RAMFS) &&
     1085                strcmp(FileSystem, NTFS) &&
     1086                strcmp(FileSystem, HPFS386)) {
    10501087              driveflags[x] |= DRIVE_NOLONGNAMES;
    10511088            }
     
    10541091              removable = 1;
    10551092              driveflags[x] |= DRIVE_REMOVABLE | DRIVE_NOTWRITEABLE |
    1056                 DRIVE_CDROM;
     1093                               DRIVE_CDROM;
    10571094            }
    10581095            else if (!stricmp(FileSystem, CBSIFS)) {
     
    10661103
    10671104            pci->rc.flRecordAttr |= CRA_RECORDREADONLY;
    1068             if ((ULONG) (toupper(*pci->pszFileName) - '@') == ulDriveNum)
     1105            // if ((ULONG) (toupper(*pci->pszFileName) - '@') == ulCurDriveNum) // 23 Jul 07 SHL
     1106            if ((ULONG)(toupper(*szDrive) - '@') == ulCurDriveNum)
    10691107              pci->rc.flRecordAttr |= (CRA_CURSORED | CRA_SELECTED);
    10701108
    10711109            if (removable == 0) {
     1110              // Fixed volume
    10721111              pci->attrFile |= FILE_DIRECTORY;
    10731112              DosError(FERR_DISABLEHARDERR);
     
    10751114                                    FIL_QUERYEASIZE,
    10761115                                    &fsa4, (ULONG) sizeof(FILESTATUS4));
     1116              // ERROR_BAD_NET_RSP = 58
    10771117              if (rc == 58) {
    10781118                DosError(FERR_DISABLEHARDERR);
     
    10831123              }
    10841124              if (rc && !didonce) {
     1125                // Guess drive letter
    10851126                if (!*suggest) {
    10861127                  *suggest = '/';
     
    10881129                }
    10891130                sprintf(suggest + strlen(suggest), "%c" , toupper(*szDrive));
    1090                 pci->pszFileName = xstrdup(szDrive, pszSrcFile, __LINE__);
     1131                pci->pszFileName = xstrdup(szDrive, pszSrcFile, __LINE__);
    10911132                pci->rc.pszIcon = pci->pszFileName;
    10921133                pci->attrFile = FILE_DIRECTORY;
     
    10991140            }
    11001141            else {
    1101               pci->pszFileName = xstrdup(szDrive, pszSrcFile, __LINE__);
     1142              // Removable volume
     1143              pci->pszFileName = xstrdup(szDrive, pszSrcFile, __LINE__);
    11021144              pci->rc.pszIcon = pci->pszFileName;
    11031145              pci->attrFile = FILE_DIRECTORY;
    11041146              strcpy(pci->szDispAttr, "----D-");
    11051147              pci->pszDispAttr = pci->szDispAttr;
    1106             }
    1107             SelectDriveIcon(pci);
     1148            }
     1149            SelectDriveIcon(pci);
    11081150          }
    11091151          else {
    11101152            pci->rc.hptrIcon = hptrDunno;
    1111             pci->pszFileName = xstrdup(szDrive, pszSrcFile, __LINE__);
     1153            pci->pszFileName = xstrdup(szDrive, pszSrcFile, __LINE__);
    11121154            pci->rc.pszIcon = pci->pszFileName;
    11131155            pci->attrFile = FILE_DIRECTORY;
     
    11181160        }
    11191161        else {
     1162          // diskette drive (A or B)
    11201163          pci->rc.hptrIcon = hptrFloppy;
    11211164          pci->pszFileName = xstrdup(szDrive, pszSrcFile, __LINE__);
     
    11601203                                  MPFROM2SHORT(CMA_FIRST, CMA_ITEMORDER));
    11611204      while (pci && (INT) pci != -1) {
    1162         if ((ULONG) (toupper(*pci->pszFileName) - '@') == ulDriveNum) {
     1205        if ((ULONG) (toupper(*pci->pszFileName) - '@') == ulCurDriveNum) {
    11631206          WinSendMsg(hwndCnr,
    11641207                     CM_SETRECORDEMPHASIS,
     
    12221265                               MPFROMLONG(EXTRA_RECORD_BYTES2),
    12231266                               MPFROMLONG(1));
    1224               if (pci) {
    1225                 CHAR fname[CCHMAXPATH];
    1226                 pci->flags |= RECFLAGS_ENV;
     1267              if (pci) {
     1268                CHAR fname[CCHMAXPATH];
     1269                pci->flags |= RECFLAGS_ENV;
    12271270                sprintf(fname, "%%%s%%", FileSystem);
    12281271                pci->pszFileName = xstrdup(fname, pszSrcFile, __LINE__);
     
    12711314                                      MPFROM2SHORT(CMA_NEXT, CMA_ITEMORDER));
    12721315      if (!(pci->flags & RECFLAGS_ENV)) {
    1273         if ((ULONG) (toupper(*pci->pszFileName) - '@') == ulDriveNum ||
     1316        if ((ULONG) (toupper(*pci->pszFileName) - '@') == ulCurDriveNum ||
    12741317            toupper(*pci->pszFileName) > 'B') {
    12751318          if (!(driveflags[toupper(*pci->pszFileName) - 'A'] & DRIVE_INVALID)
     
    13991442  didonce = TRUE;
    14001443
    1401 }                                       // FillTreeCnr
     1444} // FillTreeCnr
  • trunk/dll/flesh.c

    r730 r731  
    233233  ULONG ddepth = 3L;
    234234  static BOOL brokenlan = FALSE, isbroken = FALSE;
    235   CHAR *f = 0;
    236235
    237236  if (!pciParent || !*pciParent->pszFileName || !hwndCnr)
     
    422421        else {
    423422          RECORDINSERT ri;
    424           pci->pszFileName = xstrdup(f, pszSrcFile, __LINE__);
    425423          //pci->pszFileName = pci->szFileName;
     424          pci->pszFileName = xstrdup(NullStr, pszSrcFile, __LINE__);
    426425          pci->rc.pszIcon = pci->pszFileName;
    427426          memset(&ri, 0, sizeof(RECORDINSERT));
  • trunk/dll/objcnr.c

    r730 r731  
    6767  RECORDINSERT ri;
    6868  PCNRITEM pciP;
    69   CHAR *f = 0;
    7069
    7170  ffb = xmalloc(sizeof(FILEFINDBUF3), pszSrcFile, __LINE__);
     
    9291
    9392  if ((!rc && (ffb->attrFile & FILE_DIRECTORY))) {
    94     pciP =
    95       WinSendMsg(hwndCnr, CM_ALLOCRECORD, MPFROMLONG(EXTRA_RECORD_BYTES2),
    96                  MPFROMLONG(1L));
     93    pciP = WinSendMsg(hwndCnr,
     94                      CM_ALLOCRECORD,
     95                      MPFROMLONG(EXTRA_RECORD_BYTES2),
     96                      MPFROMLONG(1L));
    9797    if (!pciP) {
    9898      free(ffb);
     
    101101    pciP->pszFileName = xstrdup(filename, pszSrcFile, __LINE__);
    102102    pciP->pszDispAttr = pciP->szDispAttr;
     103    *pciP->szDispAttr = 0;
    103104    //pciP->pszSubject = pciP->szSubject;
     105    pciP->pszSubject = xstrdup(NullStr, pszSrcFile, __LINE__);  // 23 Jul 07 SHL
    104106    //pciP->pszLongname = pciP->szLongname;
    105     pciP->pszDispAttr = pciP->szDispAttr;
    106     *pciP->szDispAttr = 0;
    107     pciP->pszLongname = xstrdup(f, pszSrcFile, __LINE__);
    108     pciP->pszSubject = xstrdup(f, pszSrcFile, __LINE__);
     107    pciP->pszLongname = xstrdup(NullStr, pszSrcFile, __LINE__);
    109108    if (strlen(filename) < 4)
    110109      pciP->pszFileName = pciP->pszFileName;
Note: See TracChangeset for help on using the changeset viewer.