Changeset 730 for trunk/dll/comp.c


Ignore:
Timestamp:
Jul 22, 2007, 7:57:09 PM (18 years ago)
Author:
Gregg Young
Message:

Preliminary work on variable sized container buffers. Removes szFileName etc. Builds fine but traps.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/comp.c

    r689 r730  
    355355  CHAR newname[CCHMAXPATH], dirname[CCHMAXPATH], *p;
    356356  APIRET rc;
     357  CHAR *f = 0;
    357358
    358359  if (!cmp)
     
    414415        pciOn = WinSendMsg(hwndCnrD, CM_QUERYRECORD, MPFROMP(pciO),
    415416                           MPFROM2SHORT(CMA_NEXT, CMA_ITEMORDER));
    416         if (*pci->szFileName && (pci->rc.flRecordAttr & CRA_SELECTED)) {
     417        if (*pci->pszFileName && (pci->rc.flRecordAttr & CRA_SELECTED)) {
    417418          switch (cmp->action) {
    418419          case IDM_DELETE:
    419             if (!unlinkf("%s", pci->szFileName)) {
     420            if (!unlinkf("%s", pci->pszFileName)) {
    420421              WinSendMsg(hwndCnrS, CM_SETRECORDEMPHASIS, MPFROMP(pci),
    421422                         MPFROM2SHORT(FALSE, CRA_SELECTED));
    422               if (!*pciO->szFileName) {
     423              if (!*pciO->pszFileName) {
    423424                WinSendMsg(hwndCnrS, CM_REMOVERECORD, MPFROMP(&pci),
    424425                           MPFROM2SHORT(1, CMA_FREE | CMA_INVALIDATE));
     
    429430                           MPFROM2SHORT(1, CMA_FREE | CMA_INVALIDATE));
    430431              }
    431               else {
    432                 *pci->szFileName = 0;
    433                 pci->pszFileName = pci->szFileName;
     432              else {
     433                pci->pszFileName = xstrdup(f, pszSrcFile, __LINE__);
     434                //pci->pszFileName = pci->szFileName;
    434435                pci->flags = 0;
    435436                WinSendMsg(hwndCnrS, CM_INVALIDATERECORD, MPFROMP(&pci),
     
    463464                MassMkdir(hwndMain, dirname);
    464465            }
    465             rc = docopyf(MOVE, pci->szFileName, "%s", newname);
    466             if (!rc && stricmp(pci->szFileName, newname)) {
     466            rc = docopyf(MOVE, pci->pszFileName, "%s", newname);
     467            if (!rc && stricmp(pci->pszFileName, newname)) {
    467468              WinSendMsg(hwndCnrS, CM_SETRECORDEMPHASIS, MPFROMP(pci),
    468469                         MPFROM2SHORT(FALSE, CRA_SELECTED));
     
    470471                WinSendMsg(hwndCnrD, CM_SETRECORDEMPHASIS, MPFROMP(pciO),
    471472                           MPFROM2SHORT(FALSE, CRA_SELECTED));
    472               strcpy(pciO->szFileName, newname);
     473              pciO->pszFileName = xstrdup(newname, pszSrcFile, __LINE__);
    473474              if (hwndCnrS == WinWindowFromID(cmp->hwnd, COMP_RIGHTDIR)) {
    474                 pciO->pszFileName = pciO->szFileName + strlen(cmp->leftdir);
     475                pciO->pszFileName = pciO->pszFileName + strlen(cmp->leftdir);
    475476                if (cmp->leftdir[strlen(cmp->leftdir) - 1] != '\\')
    476477                  pciO->pszFileName++;
    477478              }
    478479              else {
    479                 pciO->pszFileName = pciO->szFileName + strlen(cmp->rightdir);
     480                pciO->pszFileName = pciO->pszFileName + strlen(cmp->rightdir);
    480481                if (cmp->rightdir[strlen(cmp->rightdir) - 1] != '\\')
    481482                  pciO->pszFileName++;
    482               }
     483              }
    483484              strcpy(pciO->szDispAttr, pci->szDispAttr);
    484485              pciO->attrFile = pci->attrFile;
     
    492493              pciO->cbFile = pci->cbFile;
    493494              pciO->easize = pci->easize;
    494               *pciO->szSubject = 0;
    495               *pci->szFileName = 0;
    496               pci->pszFileName = pci->szFileName;
     495              pciO->pszSubject = xstrdup(f, pszSrcFile, __LINE__);
     496              pci->pszFileName = xstrdup(f, pszSrcFile, __LINE__);
     497              //pci->pszFileName = pci->szFileName;
    497498              pci->flags = 0;
    498499              WinSendMsg(hwndCnrS, CM_INVALIDATERECORD, MPFROMP(&pci),
     
    508509                             __LINE__,
    509510                             GetPString(IDS_COMPMOVEFAILEDTEXT),
    510                              pci->szFileName, newname);
     511                             pci->pszFileName, newname);
    511512              if (rc == MBID_CANCEL)    /* cause loop to break */
    512513                pcin = NULL;
     
    533534                MassMkdir(hwndMain, dirname);
    534535            }
    535             rc = docopyf(COPY, pci->szFileName, "%s", newname);
     536            rc = docopyf(COPY, pci->pszFileName, "%s", newname);
    536537            if (rc) {
    537538              rc = Dos_Error(MB_ENTERCANCEL,
     
    541542                             __LINE__,
    542543                             GetPString(IDS_COMPCOPYFAILEDTEXT),
    543                              pci->szFileName, newname);
     544                             pci->pszFileName, newname);
    544545              if (rc == MBID_CANCEL)
    545546                pcin = NULL;            /* cause loop to break */
     
    551552                WinSendMsg(hwndCnrD, CM_SETRECORDEMPHASIS, MPFROMP(pciO),
    552553                           MPFROM2SHORT(FALSE, CRA_SELECTED));
    553               strcpy(pciO->szFileName, newname);
     554              pciO->pszFileName = xstrdup(newname, pszSrcFile, __LINE__);
    554555              if (hwndCnrS == WinWindowFromID(cmp->hwnd, COMP_RIGHTDIR)) {
    555                 pciO->pszFileName = pciO->szFileName + strlen(cmp->leftdir);
     556                pciO->pszFileName = pciO->pszFileName + strlen(cmp->leftdir);
    556557                if (cmp->leftdir[strlen(cmp->leftdir) - 1] != '\\')
    557558                  pciO->pszFileName++;
    558559              }
    559560              else {
    560                 pciO->pszFileName = pciO->szFileName + strlen(cmp->rightdir);
     561                pciO->pszFileName = pciO->pszFileName + strlen(cmp->rightdir);
    561562                if (cmp->rightdir[strlen(cmp->rightdir) - 1] != '\\')
    562563                  pciO->pszFileName++;
    563               }
     564              }
    564565              strcpy(pciO->szDispAttr, pci->szDispAttr);
    565566              pciO->attrFile = pci->attrFile;
     
    573574              pciO->cbFile = pci->cbFile;
    574575              pciO->easize = pci->easize;
    575               *pci->szSubject = 0;
     576              pci->pszSubject = xstrdup(f, pszSrcFile, __LINE__);
    576577              pci->flags = CNRITEM_EXISTS;
    577578              WinSendMsg(hwndCnrS, CM_INVALIDATERECORD, MPFROMP(&pci),
     
    792793      RECORDINSERT ri;
    793794      CHAR *pch;
     795      CHAR fname[CCHMAXPATH];
    794796
    795797      WinCancelShutdown(hmq, TRUE);
     
    10241026        while ((filesl && filesl[l]) || (filesr && filesr[r])) {
    10251027          pcir->hwndCnr = hwndRight;
    1026           pcir->pszFileName = pcir->szFileName;
     1028          //pcir->pszFileName = pcir->szFileName;
    10271029          pcir->rc.pszIcon = pcir->pszFileName;
    10281030          pcir->rc.hptrIcon = (HPOINTER) 0;
    1029           pcir->pszSubject = pcir->szSubject;
    1030           pcir->pszLongname = pcir->szLongname;
     1031          //pcir->pszSubject = pcir->szSubject;
     1032          //pcir->pszLongname = pcir->szLongname;
    10311033          pcir->pszDispAttr = pcir->szDispAttr;
    10321034          pcil->hwndCnr = hwndLeft;
    1033           pcil->pszFileName = pcil->szFileName;
     1035          //pcil->pszFileName = pcil->szFileName;
    10341036          pcil->rc.pszIcon = pcil->pszFileName;
    10351037          pcil->rc.hptrIcon = (HPOINTER) 0;
    10361038          pcil->pszDispAttr = pcil->szDispAttr;
    1037           pcil->pszSubject = pcil->szSubject;
    1038           pcil->pszLongname = pcil->szLongname;
     1039          //pcil->pszSubject = pcil->szSubject;
     1040          //pcil->pszLongname = pcil->szLongname;
    10391041          if ((filesl && filesl[l]) && (filesr && filesr[r])) {
    10401042            x = stricmp(filesl[l]->fname, filesr[r]->fname);
    10411043            if (!x) {
    1042               // Same
    1043               sprintf(pcil->szFileName, "%s%s%s", cmp->leftdir,
     1044                // Same
     1045              sprintf(fname, "%s%s%s", cmp->leftdir,
    10441046                      (cmp->leftdir[strlen(cmp->leftdir) - 1] == '\\') ?
    10451047                      NullStr : "\\", filesl[l]->fname);
    10461048              // pcil->rc.hptrIcon    = hptrFile;
    1047               pcil->pszFileName = pcil->szFileName + lenl;
     1049              pcil->pszFileName = xstrdup((fname + lenl), pszSrcFile, __LINE__);
    10481050              pcil->attrFile = filesl[l]->attrFile;
    10491051              y = 0;
     
    10811083                }
    10821084              }
    1083               sprintf(pcir->szFileName, "%s%s%s", cmp->rightdir,
     1085              sprintf(fname, "%s%s%s", cmp->rightdir,
    10841086                      (cmp->rightdir[strlen(cmp->rightdir) - 1] == '\\') ?
    10851087                      NullStr : "\\", filesr[r]->fname);
    1086               pcir->pszFileName = pcir->szFileName + lenr;
     1088              pcir->pszFileName = xstrdup((fname + lenr), pszSrcFile, __LINE__);
    10871089              pcir->attrFile = filesr[r]->attrFile;
    10881090              // pcir->rc.hptrIcon    = hptrFile;
     
    11161118              pcil->flags |= CNRITEM_EXISTS;
    11171119              pcir->flags |= CNRITEM_EXISTS;
    1118               pch = pcil->szSubject;
     1120              pch = pcil->pszSubject;
    11191121              if (pcil->cbFile + pcil->easize > pcir->cbFile + pcir->easize) {
    11201122                pcil->flags |= CNRITEM_LARGER;
     
    11441146                pcil->flags |= CNRITEM_NEWER;
    11451147                pcir->flags |= CNRITEM_OLDER;
    1146                 if (pch != pcil->szSubject) {
     1148                if (pch != pcil->pszSubject) {
    11471149                  strcpy(pch, ", ");
    11481150                  pch += 2;
     
    11661168                pcil->flags |= CNRITEM_OLDER;
    11671169                pcir->flags |= CNRITEM_NEWER;
    1168                 if (pch != pcil->szSubject) {
     1170                if (pch != pcil->pszSubject) {
    11691171                  strcpy(pch, ", ");
    11701172                  pch += 2;
     
    11791181            else if (x < 0) {
    11801182              // Just on left
    1181               sprintf(pcil->szFileName, "%s%s%s", cmp->leftdir,
     1183              sprintf(fname, "%s%s%s", cmp->leftdir,
    11821184                      (cmp->leftdir[strlen(cmp->leftdir) - 1] == '\\') ?
    11831185                      NullStr : "\\", filesl[l]->fname);
    1184               pcil->pszFileName = pcil->szFileName + lenl;
     1186              pcil->pszFileName = xstrdup((fname + lenl), pszSrcFile, __LINE__);
    11851187              pcil->attrFile = filesl[l]->attrFile;
    11861188              // pcil->rc.hptrIcon    = hptrFile;
     
    12231225            else {
    12241226              // Just on right
    1225               sprintf(pcir->szFileName, "%s%s%s", cmp->rightdir,
     1227              sprintf(fname, "%s%s%s", cmp->rightdir,
    12261228                      (cmp->rightdir[strlen(cmp->rightdir) - 1] == '\\') ?
    12271229                      NullStr : "\\", filesr[r]->fname);
    1228               pcir->pszFileName = pcir->szFileName + lenr;
     1230              pcir->pszFileName = xstrdup((fname + lenr), pszSrcFile, __LINE__);
    12291231              pcir->attrFile = filesr[r]->attrFile;
    12301232              // pcir->rc.hptrIcon    = hptrFile;
     
    12691271          else if (filesl && filesl[l]) {
    12701272            // Just on left
    1271             sprintf(pcil->szFileName, "%s%s%s", cmp->leftdir,
     1273            sprintf(fname, "%s%s%s", cmp->leftdir,
    12721274                    (cmp->leftdir[strlen(cmp->leftdir) - 1] == '\\') ?
    12731275                    NullStr : "\\", filesl[l]->fname);
    1274             pcil->pszFileName = pcil->szFileName + lenl;
     1276            pcil->pszFileName = xstrdup((fname + lenl), pszSrcFile, __LINE__);
    12751277            pcil->attrFile = filesl[l]->attrFile;
    12761278            // pcil->rc.hptrIcon    = hptrFile;
     
    13131315            /* filesr && filesr[r] */
    13141316            // Just on right
    1315             sprintf(pcir->szFileName, "%s%s%s", cmp->rightdir,
     1317            sprintf(fname, "%s%s%s", cmp->rightdir,
    13161318                    (cmp->rightdir[strlen(cmp->rightdir) - 1] == '\\') ?
    13171319                    NullStr : "\\", filesr[r]->fname);
    1318             pcir->pszFileName = pcir->szFileName + lenr;
     1320            pcir->pszFileName = xstrdup((fname + lenr), pszSrcFile, __LINE__);
    13191321            pcir->attrFile = filesr[r]->attrFile;
    13201322            // pcir->rc.hptrIcon    = hptrFile;
     
    16211623      if (pcown) {
    16221624        pci = (PCNRITEM) pcown->pRecord;
    1623         if (pci && (INT) pci != -1 && !*pci->szFileName)
     1625        if (pci && (INT) pci != -1 && !*pci->pszFileName)
    16241626          return MRFROMLONG(TRUE);
    16251627      }
     
    17611763          SetShiftState();
    17621764          if (pci) {
    1763             if ((pci->rc.flRecordAttr & CRA_INUSE) || !*pci->szFileName)
     1765            if ((pci->rc.flRecordAttr & CRA_INUSE) || !*pci->pszFileName)
    17641766              break;
    17651767            WinSendMsg(hwndCnr, CM_SETRECORDEMPHASIS, MPFROMP(pci),
     
    17671769            if (pci->attrFile & FILE_DIRECTORY) {
    17681770              if ((shiftstate & (KC_CTRL | KC_SHIFT)) == (KC_CTRL | KC_SHIFT))
    1769                 OpenObject(pci->szFileName, Settings, hwnd);
     1771                OpenObject(pci->pszFileName, Settings, hwnd);
    17701772              else
    1771                 OpenObject(pci->szFileName, Default, hwnd);
     1773                OpenObject(pci->pszFileName, Default, hwnd);
    17721774            }
    17731775            else
    17741776              DefaultViewKeys(hwnd, hwnd, HWND_DESKTOP, NULL,
    1775                               pci->szFileName);
     1777                              pci->pszFileName);
    17761778            WinSendMsg(hwndCnr, CM_SETRECORDEMPHASIS,
    17771779                       MPFROMP(pci),
     
    17941796          cmp->hwndCalling = WinWindowFromID(hwnd, SHORT1FROMMP(mp1));
    17951797          if (pci) {
    1796             if (!*pci->szFileName || *cmp->rightlist)
     1798            if (!*pci->pszFileName || *cmp->rightlist)
    17971799              break;
    17981800            id = COMP_MENU;
     
    18421844            pci = (PCNRITEM) pre->pRecord;
    18431845            if (pci) {
    1844               if (!*pci->szFileName) {
     1846              if (!*pci->pszFileName) {
    18451847                if (pci->rc.flRecordAttr & CRA_SELECTED)
    18461848                  WinSendDlgItemMsg(hwnd, SHORT1FROMMP(mp1),
     
    20882090            CHAR *fakelist[3];
    20892091
    2090             fakelist[0] = pci->szFileName;
     2092            fakelist[0] = pci->pszFileName;
    20912093            fakelist[1] = ofile;
    20922094            fakelist[2] = NULL;
     
    21012103            fc.size = sizeof(fc);
    21022104            fc.hwndParent = hwnd;
    2103             strcpy(fc.file1, pci->szFileName);
     2105            strcpy(fc.file1, pci->pszFileName);
    21042106            strcpy(fc.file2, ofile);
    21052107            WinDlgBox(HWND_DESKTOP, hwnd,
     
    21272129          fSelectedAlways = temp;
    21282130          if (pci && !(pci->attrFile & FILE_DIRECTORY)) {
    2129             p = strrchr(pci->szFileName, '\\');
     2131            p = strrchr(pci->pszFileName, '\\');
    21302132            if (p) {
    21312133              p++;
Note: See TracChangeset for help on using the changeset viewer.