Changeset 918 for trunk/dll


Ignore:
Timestamp:
Jan 12, 2008, 9:16:37 PM (18 years ago)
Author:
Gregg Young
Message:

Fix CheckApp_QuoteAddExe to return a pointer on the stack instead of a string. Use MAXCOMLINESTRG for command line length.

Location:
trunk/dll
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/assoc.c

    r911 r918  
    4141{
    4242  CHAR mask[CCHMAXPATH];
    43   CHAR cl[1001];
     43  CHAR cl[MAXCOMLINESTRG];
    4444  CHAR sig[CCHMAXPATH];
    4545  LONG offset;
     
    631631      {
    632632        ASSOC temp;
    633         CHAR dummy[34], *psz[1002];
    634 
    635         replace = FALSE;
     633        CHAR dummy[34];
     634        PSZ psz;
     635        replace = FALSE;
     636
    636637        {
    637638          x = (SHORT) WinSendDlgItemMsg(hwnd,
     
    643644                                          LM_SELECTITEM,
    644645                                          MPFROMSHORT(0), MPFROMSHORT(TRUE));
    645         }
     646        }
     647        psz = xmalloc(MAXCOMLINESTRG, pszSrcFile, __LINE__);
    646648        memset(&temp, 0, sizeof(ASSOC));
    647649        WinQueryDlgItemText(hwnd, ASS_MASK, sizeof(temp.mask), temp.mask);
    648650        WinQueryDlgItemText(hwnd, ASS_CL, sizeof(temp.cl), temp.cl);
    649         *psz = CheckApp_QuoteAddExe(temp.cl);
    650         memcpy(temp.cl, *psz, strlen(*psz) + 1);
     651        CheckApp_QuoteAddExe(psz, temp.cl);
     652        memcpy(temp.cl, psz, strlen(psz) + 1);
    651653        WinQueryDlgItemText(hwnd, ASS_SIG, sizeof(temp.sig), temp.sig);
    652654        rstrip(temp.sig);
     
    727729      {
    728730        ASSOC temp;
    729         CHAR dummy[34], *psz[1002];
    730 
     731        CHAR dummy[34];
     732        PSZ psz;
    731733        replace = FALSE;
    732734
     735        psz = xmalloc(MAXCOMLINESTRG, pszSrcFile, __LINE__);
    733736        memset(&temp, 0, sizeof(ASSOC));
    734737        WinQueryDlgItemText(hwnd, ASS_MASK, sizeof(temp.mask), temp.mask);
    735738        WinQueryDlgItemText(hwnd, ASS_CL, sizeof(temp.cl), temp.cl);
    736         *psz = CheckApp_QuoteAddExe(temp.cl);
    737         memcpy(temp.cl, *psz, strlen(*psz) + 1);
     739        CheckApp_QuoteAddExe(psz, temp.cl);
     740        memcpy(temp.cl, psz, strlen(psz) + 1);
    738741        WinQueryDlgItemText(hwnd, ASS_SIG, sizeof(temp.sig), temp.sig);
    739742        rstrip(temp.sig);
     
    836839      {
    837840        ASSOC temp;
    838         CHAR dummy[34], *psz[1002];
    839 
     841        CHAR dummy[34];
     842        PSZ psz;
    840843        replace = TRUE;
    841844
     
    843846                                      ASS_LISTBOX,
    844847                                      LM_QUERYSELECTION,
    845                                       MPFROMSHORT(LIT_CURSOR), MPVOID);
     848                                      MPFROMSHORT(LIT_CURSOR), MPVOID);
     849        psz = xmalloc(MAXCOMLINESTRG, pszSrcFile, __LINE__);
    846850        memset(&temp, 0, sizeof(ASSOC));
    847851        WinQueryDlgItemText(hwnd, ASS_MASK, sizeof(temp.mask), temp.mask);
    848852        WinQueryDlgItemText(hwnd, ASS_CL, sizeof(temp.cl), temp.cl);
    849         *psz = CheckApp_QuoteAddExe(temp.cl);
    850         memcpy(temp.cl, *psz, strlen(*psz) + 1);
     853        CheckApp_QuoteAddExe(psz, temp.cl);
     854        memcpy(temp.cl, psz, strlen(psz) + 1);
    851855        WinQueryDlgItemText(hwnd, ASS_SIG, sizeof(temp.sig), temp.sig);
    852856        rstrip(temp.sig);
  • trunk/dll/avv.c

    r911 r918  
    9191
    9292static PSZ free_and_strdup_quoted_from_window(HWND hwnd, USHORT id, PSZ pszDest)
    93 {
    94   CHAR sz[256], *psz[256];
    95 
     93{ // fixme for command line limit
     94  CHAR sz[256];
     95  PSZ psz;
     96
     97  psz = xmalloc(256, pszSrcFile, __LINE__);
    9698  xfree(pszDest);
    9799  WinQueryDlgItemText(hwnd, id, sizeof(sz), sz);
    98100  if (*sz){
    99     *psz = CheckApp_QuoteAddExe(sz);
    100     pszDest = xstrdup(sz, pszSrcFile, __LINE__);
     101    CheckApp_QuoteAddExe(psz, sz);
     102    pszDest = xstrdup(psz, pszSrcFile, __LINE__);
    101103  }
    102104  else
  • trunk/dll/command.c

    r911 r918  
    4444typedef struct
    4545{
    46   CHAR cl[1001];
     46  CHAR cl[MAXCOMLINESTRG];
    4747  INT flags;
    4848  CHAR title[34];
     
    621621      {
    622622        COMMAND temp;
    623         char *psz[1002];
     623        PSZ psz;
    624624        APIRET ret;
    625625
     626        psz = xmalloc(MAXCOMLINESTRG, pszSrcFile, __LINE__);
    626627        memset(&temp, 0, sizeof(COMMAND));
    627628        WinQueryDlgItemText(hwnd, CMD_CL, sizeof(temp.cl), temp.cl);
    628         *psz = CheckApp_QuoteAddExe(temp.cl);
    629         memcpy(temp.cl, *psz, strlen(*psz) + 1);
     629        CheckApp_QuoteAddExe(psz, temp.cl);
     630        memcpy(temp.cl, psz, strlen(psz) + 1);
    630631        if (!strchr(temp.cl, '%')){
    631632          ret = saymsg(MB_YESNO,
     
    715716      {
    716717        COMMAND temp;
    717         CHAR *psz[1002];
     718        PSZ psz;
    718719        APIRET ret;
    719720
     721        psz = xmalloc(MAXCOMLINESTRG, pszSrcFile, __LINE__);
    720722        memset(&temp, 0, sizeof(COMMAND));
    721723        WinQueryDlgItemText(hwnd, CMD_CL, sizeof(temp.cl), temp.cl);
    722         *psz = CheckApp_QuoteAddExe(temp.cl);
    723         memcpy(temp.cl, *psz, strlen(*psz) + 1);
     724        CheckApp_QuoteAddExe(psz, temp.cl);
     725        memcpy(temp.cl, psz, strlen(psz) + 1);
    724726        if (!strchr(temp.cl, '%')){
    725727          ret = saymsg(MB_YESNO,
     
    814816    case CMD_REPLACE:
    815817      { //Delete first
    816         char *psz[1002];
     818        PSZ psz;
    817819        COMMAND temp;
    818820        APIRET ret;
    819821
     822        psz = xmalloc(MAXCOMLINESTRG, pszSrcFile, __LINE__);
    820823        memset(&temp, 0, sizeof(COMMAND));
    821824        WinQueryDlgItemText(hwnd, CMD_CL, sizeof(temp.cl), temp.cl);
    822         *psz = CheckApp_QuoteAddExe(temp.cl);
    823         memcpy(temp.cl, *psz, strlen(*psz) + 1);
     825        CheckApp_QuoteAddExe(psz, temp.cl);
     826        memcpy(temp.cl, psz, strlen(psz) + 1);
    824827        if (fCancelAction){
    825828          fCancelAction = FALSE;
  • trunk/dll/fm3dll.h

    r917 r918  
    495495char *RootName(char *filename);
    496496APIRET MakeFullName(char *filename);
    497 PSZ CheckApp_QuoteAddExe(PSZ pszPgm);
    498497
    499498/* misc.c */
     
    684683            CHAR * formatstring, ...);
    685684HAPP Exec(HWND hwndNotify, BOOL child, char *startdir, char *env,
    686           PROGTYPE * progt, ULONG fl, char *formatstring, ...);
     685          PROGTYPE * progt, ULONG fl, char *formatstring, ...);
     686PSZ CheckApp_QuoteAddExe(PSZ pszQuotedCompletePgm, PSZ pszPgm);
     687#define MAXCOMLINESTRG (4096)                   /* used to build command line strings */
    687688#define RUNTYPE_MASK  0xf
    688689#define SYNCHRONOUS   1
     
    11821183DATADEF CHAR archiverbb2[CCHMAXPATH], StopPrinting, profile[CCHMAXPATH];
    11831184DATADEF CHAR appname[12], realappname[12];
    1184 DATADEF CHAR editor[CCHMAXPATH], viewer[CCHMAXPATH], virus[CCHMAXPATH],
    1185   compare[CCHMAXPATH], extractpath[CCHMAXPATH],
     1185DATADEF CHAR editor[MAXCOMLINESTRG], viewer[MAXCOMLINESTRG], virus[MAXCOMLINESTRG],
     1186  compare[MAXCOMLINESTRG], extractpath[CCHMAXPATH],
    11861187  lastextractpath[CCHMAXPATH], lasttoolbox[CCHMAXPATH],
    11871188  HomePath[CCHMAXPATH], SwapperDat[CCHMAXPATH],
    1188   binview[CCHMAXPATH], bined[CCHMAXPATH], printer[CCHMAXPATH],
    1189   dircompare[CCHMAXPATH], szDefArc[CCHMAXPATH],
    1190   ftprun[CCHMAXPATH], ftprundir[CCHMAXPATH], httprun[CCHMAXPATH],
     1189  binview[MAXCOMLINESTRG], bined[MAXCOMLINESTRG], printer[CCHMAXPATH],
     1190  dircompare[MAXCOMLINESTRG], szDefArc[CCHMAXPATH],
     1191  ftprun[MAXCOMLINESTRG], ftprundir[CCHMAXPATH], httprun[MAXCOMLINESTRG],
    11911192  httprundir[CCHMAXPATH], mailrundir[CCHMAXPATH],
    1192   mailrun[CCHMAXPATH], targetdir[CCHMAXPATH];
     1193  mailrun[MAXCOMLINESTRG], targetdir[CCHMAXPATH];
    11931194DATADEF HMODULE FM3DllHandle, FM3ModHandle;
    11941195DATADEF CHAR *quicktool[50];
  • trunk/dll/notebook.c

    r917 r918  
    193193    PrfWriteProfileString(fmprof, appname, "DefArc", szDefArc);
    194194    {
    195       CHAR szBuf[CCHMAXPATH], *psz;
    196 
    197       WinQueryDlgItemText(hwnd, CFGA_VIRUS, CCHMAXPATH, szBuf);
    198       szBuf[CCHMAXPATH - 1] = 0;
    199       if (strcmp(szBuf, virus)) {
    200         psz = CheckApp_QuoteAddExe(szBuf);
    201         memcpy(virus, psz, strlen(psz) + 1);
    202         if (!strchr(virus, '%') && strlen(virus) > 3)
    203           strcat(virus, " %p");
     195      CHAR szCLBuf[MAXCOMLINESTRG], szPathBuf[CCHMAXPATH];
     196      PSZ psz;
     197
     198      psz = xmalloc(MAXCOMLINESTRG, pszSrcFile, __LINE__);
     199      WinQueryDlgItemText(hwnd, CFGA_VIRUS, MAXCOMLINESTRG, szCLBuf);
     200      szCLBuf[MAXCOMLINESTRG - 1] = 0;
     201      if (strcmp(szCLBuf, virus)){
     202        CheckApp_QuoteAddExe(psz, szCLBuf);
     203        memcpy(virus, psz, strlen(psz) + 1);
     204        if (!strchr(virus, '%') && strlen(virus) > 3)
     205          strcat(virus, " %p");
    204206      }
    205207      if (!*virus)
    206208        strcpy(virus, "OS2SCAN.EXE %p /SUB /A");
    207       WinQueryDlgItemText(hwnd, CFGA_EXTRACTPATH, CCHMAXPATH, szBuf);
    208       szBuf[CCHMAXPATH - 1] = 0;
    209       bstrip(szBuf);
    210 
    211       if (strcmp(extractpath, szBuf)) {
    212         memcpy(extractpath, szBuf, strlen(szBuf) + 1);
    213         if (*extractpath) {
    214           MakeFullName(extractpath);
    215           if (IsFile(extractpath)) {
    216             ulResult = saymsg(MB_YESNOCANCEL | MB_ICONQUESTION | MB_DEFBUTTON1, HWND_DESKTOP,
    217                               GetPString(IDS_WARNINGTEXT),
    218                               GetPString(IDS_EXTPATHNOTVALIDTEXT),
    219                               extractpath);
    220             if (ulResult == MBID_YES)
    221               *extractpath = 0;
    222             if (ulResult == MBID_CANCEL) {
    223               WinDlgBox(HWND_DESKTOP,
     209      WinQueryDlgItemText(hwnd, CFGA_EXTRACTPATH, CCHMAXPATH, szPathBuf);
     210      szPathBuf[CCHMAXPATH - 1] = 0;
     211      bstrip(szPathBuf);
     212      if (strcmp(extractpath, szPathBuf)) {
     213        memcpy(extractpath, szPathBuf, strlen(szPathBuf) + 1);
     214        if (*extractpath){
     215          MakeFullName(extractpath);
     216          if (IsFile(extractpath)) {
     217            ulResult = saymsg(MB_YESNOCANCEL | MB_ICONQUESTION | MB_DEFBUTTON1, HWND_DESKTOP,
     218                              GetPString(IDS_WARNINGTEXT),
     219                              GetPString(IDS_EXTPATHNOTVALIDTEXT),
     220                              extractpath);
     221            if (ulResult == MBID_YES)
     222              *extractpath = 0;
     223            if (ulResult == MBID_CANCEL){
     224              WinDlgBox(HWND_DESKTOP,
    224225                        hwnd,
    225226                        CfgDlgProc,
     
    227228                        CFG_FRAME,
    228229                        MPFROMLONG(IDM_ARCHIVERSETTINGS));
    229               break;
    230             }
    231           }
    232         }
     230              break;
     231            }
     232          }
     233        }
    233234      }
    234235    }
     
    364365  case WM_INITDLG:
    365366    WinSendDlgItemMsg(hwnd, CFGV_VIEWER, EM_SETTEXTLIMIT,
    366                       MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
     367                      MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
    367368    WinSendDlgItemMsg(hwnd, CFGV_EDITOR, EM_SETTEXTLIMIT,
    368                       MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
     369                      MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
    369370    WinSendDlgItemMsg(hwnd, CFGV_BINVIEW, EM_SETTEXTLIMIT,
    370                       MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
     371                      MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
    371372    WinSendDlgItemMsg(hwnd, CFGV_BINED, EM_SETTEXTLIMIT,
    372                       MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
     373                      MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
    373374    WinEnableWindow(WinWindowFromID(hwnd, CFGV_FIND), FALSE);
    374375    PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
     
    456457  case WM_CLOSE:
    457458    {
    458       CHAR szBuf[CCHMAXPATH], *psz;
    459 
    460       WinQueryDlgItemText(hwnd, CFGV_VIEWER, CCHMAXPATH, szBuf);
    461       szBuf[CCHMAXPATH - 1] = 0;
    462       if (strcmp(szBuf, viewer)) {
    463         psz = CheckApp_QuoteAddExe(szBuf);
    464         memcpy(viewer, psz, strlen(psz) + 1);
    465         if (!strchr(viewer, '%') && strlen(viewer) > 3)
    466           strcat(viewer, " %a");
    467       }
    468       WinQueryDlgItemText(hwnd, CFGV_EDITOR, CCHMAXPATH, szBuf);
    469       szBuf[CCHMAXPATH - 1] = 0;
    470       if (strcmp(szBuf, editor)) {
    471         psz = CheckApp_QuoteAddExe(szBuf);
    472         memcpy(editor, psz, strlen(psz) + 1);
    473         if (!strchr(editor, '%') && strlen(editor) > 3)
    474           strcat(editor, " %a");
    475       }
    476       WinQueryDlgItemText(hwnd, CFGV_BINVIEW, CCHMAXPATH, szBuf);
    477       szBuf[CCHMAXPATH - 1] = 0;
    478       if (strcmp(szBuf, binview)) {
    479         psz = CheckApp_QuoteAddExe(szBuf);
    480         memcpy(binview, psz, strlen(psz) + 1);
    481         if (!strchr(binview, '%') && strlen(binview) > 3)
    482           strcat(binview, " %a");
    483       }
    484       WinQueryDlgItemText(hwnd, CFGV_BINED, CCHMAXPATH, szBuf);
    485       szBuf[CCHMAXPATH - 1] = 0;
    486       if (strcmp(szBuf, bined)) {
    487         psz = CheckApp_QuoteAddExe(szBuf);
    488         memcpy(bined, psz, strlen(psz) + 1);
    489         if (!strchr(bined, '%') && strlen(bined) > 3)
    490           strcat(bined, " %a");
     459      CHAR szCLBuf[MAXCOMLINESTRG];
     460      PSZ psz;
     461
     462      psz = xmalloc(MAXCOMLINESTRG, pszSrcFile, __LINE__);
     463      WinQueryDlgItemText(hwnd, CFGV_VIEWER, MAXCOMLINESTRG, szCLBuf);
     464      szCLBuf[MAXCOMLINESTRG - 1] = 0;
     465      if (strcmp(szCLBuf, viewer)){
     466        CheckApp_QuoteAddExe(psz, szCLBuf);
     467        memcpy(viewer, psz, strlen(psz) + 1);
     468        if (!strchr(viewer, '%') && strlen(viewer) > 3)
     469          strcat(viewer, " %a");
     470      }
     471      WinQueryDlgItemText(hwnd, CFGV_EDITOR, MAXCOMLINESTRG, szCLBuf);
     472      szCLBuf[MAXCOMLINESTRG - 1] = 0;
     473      if (strcmp(szCLBuf, editor)){
     474        CheckApp_QuoteAddExe(psz, szCLBuf);
     475        memcpy(editor, psz, strlen(psz) + 1);
     476        if (!strchr(editor, '%') && strlen(editor) > 3)
     477          strcat(editor, " %a");
     478      }
     479      WinQueryDlgItemText(hwnd, CFGV_BINVIEW, MAXCOMLINESTRG, szCLBuf);
     480      szCLBuf[MAXCOMLINESTRG - 1] = 0;
     481      if (strcmp(szCLBuf, binview)){
     482        CheckApp_QuoteAddExe(psz, szCLBuf);
     483        memcpy(binview, psz, strlen(psz) + 1);
     484        if (!strchr(binview, '%') && strlen(binview) > 3)
     485          strcat(binview, " %a");
     486      }
     487      WinQueryDlgItemText(hwnd, CFGV_BINED, MAXCOMLINESTRG, szCLBuf);
     488      szCLBuf[MAXCOMLINESTRG - 1] = 0;
     489      if (strcmp(szCLBuf, bined)){
     490        CheckApp_QuoteAddExe(psz, szCLBuf);
     491        memcpy(bined, psz, strlen(psz) + 1);
     492        if (!strchr(bined, '%') && strlen(bined) > 3)
     493          strcat(bined, " %a");
    491494      }
    492495      PrfWriteProfileString(fmprof, appname, "Viewer", viewer);
     
    530533                      MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
    531534    WinSendDlgItemMsg(hwnd, CFGH_FTPRUN, EM_SETTEXTLIMIT,
    532                       MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
     535                      MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
    533536    WinSendDlgItemMsg(hwnd, CFGH_HTTPRUN, EM_SETTEXTLIMIT,
    534                       MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
     537                      MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
    535538    WinSendDlgItemMsg(hwnd, CFGH_MAILRUN, EM_SETTEXTLIMIT,
    536                       MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
     539                      MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
    537540    WinSendDlgItemMsg(hwnd, CFGH_RUNMAILWORKDIR, EM_SETTEXTLIMIT,
    538541                      MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
     
    648651    { // fixme these strings can be longer than CCHMAXPATH since
    649652      // they contain args.
    650       CHAR szBuf[CCHMAXPATH], *psz;
    651 
    652       WinQueryDlgItemText(hwnd, CFGH_RUNHTTPWORKDIR, CCHMAXPATH, szBuf);
    653       szBuf[CCHMAXPATH - 1] = 0;
    654       bstrip(szBuf);
    655       memcpy(httprundir, szBuf, strlen(szBuf) + 1);
    656       WinQueryDlgItemText(hwnd, CFGH_RUNFTPWORKDIR, CCHMAXPATH, szBuf);
    657       szBuf[CCHMAXPATH - 1] = 0;
    658       bstrip(szBuf);
    659       memcpy(ftprundir, szBuf, strlen(szBuf) + 1);
    660       WinQueryDlgItemText(hwnd, CFGH_RUNMAILWORKDIR, CCHMAXPATH, szBuf);
    661       szBuf[CCHMAXPATH - 1] = 0;
    662       bstrip(szBuf);
    663       memcpy(mailrundir, szBuf, strlen(szBuf) + 1);
    664       WinQueryDlgItemText(hwnd, CFGH_FTPRUN, CCHMAXPATH, szBuf);
    665       szBuf[CCHMAXPATH - 1] = 0;
    666       if (strcmp(szBuf, ftprun)) {
    667         psz = CheckApp_QuoteAddExe(szBuf);
    668         memcpy(ftprun, psz, strlen(psz) + 1);
    669       }
    670       WinQueryDlgItemText(hwnd, CFGH_HTTPRUN, CCHMAXPATH, szBuf);
    671       szBuf[CCHMAXPATH - 1] = 0;
    672       if (strcmp(szBuf, httprun)) {
    673         psz = CheckApp_QuoteAddExe(szBuf);
    674         memcpy(httprun, psz, strlen(psz) + 1);
    675       }
    676       WinQueryDlgItemText(hwnd, CFGH_MAILRUN, CCHMAXPATH, szBuf);
    677       szBuf[CCHMAXPATH - 1] = 0;
    678       if (strcmp(szBuf, mailrun)) {
    679         psz = CheckApp_QuoteAddExe(szBuf);
    680         memcpy(mailrun, psz, strlen(psz) + 1);
     653      CHAR szCLBuf[MAXCOMLINESTRG], szPathBuf[CCHMAXPATH];
     654      PSZ  psz;
     655
     656      psz = xmalloc(MAXCOMLINESTRG, pszSrcFile, __LINE__);
     657      WinQueryDlgItemText(hwnd, CFGH_RUNHTTPWORKDIR, CCHMAXPATH, szPathBuf);
     658      szPathBuf[CCHMAXPATH - 1] = 0;
     659      bstrip(szPathBuf);
     660      memcpy(httprundir, szPathBuf, strlen(szPathBuf) + 1);
     661      WinQueryDlgItemText(hwnd, CFGH_RUNFTPWORKDIR, CCHMAXPATH, szPathBuf);
     662      szPathBuf[CCHMAXPATH - 1] = 0;
     663      bstrip(szPathBuf);
     664      memcpy(ftprundir, szPathBuf, strlen(szPathBuf) + 1);
     665      WinQueryDlgItemText(hwnd, CFGH_RUNMAILWORKDIR, CCHMAXPATH, szPathBuf);
     666      szPathBuf[CCHMAXPATH - 1] = 0;
     667      bstrip(szPathBuf);
     668      memcpy(mailrundir, szPathBuf, strlen(szPathBuf) + 1);
     669      WinQueryDlgItemText(hwnd, CFGH_FTPRUN, MAXCOMLINESTRG, szCLBuf);
     670      szCLBuf[MAXCOMLINESTRG - 1] = 0;
     671      if (strcmp(szCLBuf, ftprun)){
     672        CheckApp_QuoteAddExe(psz, szCLBuf);
     673        memcpy(ftprun, psz, strlen(psz) + 1);
     674      }
     675      WinQueryDlgItemText(hwnd, CFGH_HTTPRUN, MAXCOMLINESTRG, szCLBuf);
     676      szCLBuf[MAXCOMLINESTRG - 1] = 0;
     677      if (strcmp(szCLBuf, httprun)){
     678        CheckApp_QuoteAddExe(psz, szCLBuf);
     679        memcpy(httprun, psz, strlen(psz) + 1);
     680      }
     681      WinQueryDlgItemText(hwnd, CFGH_MAILRUN, MAXCOMLINESTRG, szCLBuf);
     682      szCLBuf[MAXCOMLINESTRG - 1] = 0;
     683      if (strcmp(szCLBuf, mailrun)){
     684        CheckApp_QuoteAddExe(psz, szCLBuf);
     685        memcpy(mailrun, psz, strlen(psz) + 1);
    681686      }
    682687      PrfWriteProfileString(fmprof, appname, "HttpRunDir", httprundir);
     
    11791184  case WM_INITDLG:
    11801185    WinSendDlgItemMsg(hwnd, CFGC_COMPARE, EM_SETTEXTLIMIT,
    1181                       MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
     1186                      MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
    11821187    WinSendDlgItemMsg(hwnd, CFGC_DIRCOMPARE, EM_SETTEXTLIMIT,
    1183                       MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
     1188                      MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
    11841189    WinEnableWindow(WinWindowFromID(hwnd, CFGC_FIND), FALSE);
    11851190    PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
     
    12571262  case WM_CLOSE:
    12581263    {
    1259       CHAR szBuf[CCHMAXPATH], *psz;
    1260 
    1261       WinQueryDlgItemText(hwnd, CFGC_DIRCOMPARE, CCHMAXPATH, szBuf);
    1262         szBuf[CCHMAXPATH - 1] = 0;
    1263         if (strcmp(szBuf, dircompare)) {
    1264           psz = CheckApp_QuoteAddExe(szBuf);
    1265           memcpy(dircompare, psz, strlen(psz) + 1);
    1266           if (!strchr(dircompare, '%') && strlen(dircompare) > 3)
    1267             strcat(dircompare, " %a");
    1268         }
     1264      CHAR szCLBuf[MAXCOMLINESTRG];
     1265      PSZ psz;
     1266
     1267      psz = xmalloc(MAXCOMLINESTRG, pszSrcFile, __LINE__);
     1268      WinQueryDlgItemText(hwnd, CFGC_DIRCOMPARE, MAXCOMLINESTRG, szCLBuf);
     1269        szCLBuf[MAXCOMLINESTRG - 1] = 0;
     1270        if (strcmp(szCLBuf, dircompare)){
     1271          CheckApp_QuoteAddExe(psz, szCLBuf);
     1272          memcpy(dircompare, psz, strlen(psz) + 1);
     1273          if (!strchr(dircompare, '%') && strlen(dircompare) > 3)
     1274            strcat(dircompare, " %a");
     1275        }
    12691276      PrfWriteProfileString(fmprof, appname, "DirCompare", dircompare);
    1270       WinQueryDlgItemText(hwnd, CFGC_COMPARE, CCHMAXPATH, szBuf);
    1271         szBuf[CCHMAXPATH - 1] = 0;
    1272         if (strcmp(szBuf, compare)) {
    1273           psz = CheckApp_QuoteAddExe(szBuf);
    1274           memcpy(compare, psz, strlen(psz) + 1);
    1275           if (!strchr(compare, '%') && strlen(compare) > 3)
    1276             strcat(compare, " %a");
    1277         }
     1277      WinQueryDlgItemText(hwnd, CFGC_COMPARE, MAXCOMLINESTRG, szCLBuf);
     1278        szCLBuf[MAXCOMLINESTRG - 1] = 0;
     1279        if (strcmp(szCLBuf, compare)){
     1280          CheckApp_QuoteAddExe(psz, szCLBuf);
     1281          memcpy(compare, psz, strlen(psz) + 1);
     1282          if (!strchr(compare, '%') && strlen(compare) > 3)
     1283            strcat(compare, " %a");
     1284        }
    12781285      PrfWriteProfileString(fmprof, appname, "Compare", compare);
    12791286      break;
  • trunk/dll/systemf.c

    r917 r918  
    4343static PSZ pszSrcFile = __FILE__;
    4444
    45 #define MAXSTRG (4096)                  /* used to build command line strings */
    46 
    4745/**
    4846 * Bring session foreground
     
    8381  /* executes the command once for all files in list */
    8482
    85   char path[CCHMAXPATH], commandline[2048], modpath[CCHMAXPATH], listfile[CCHMAXPATH],
     83  char path[CCHMAXPATH], commandline[MAXCOMLINESTRG], modpath[CCHMAXPATH], listfile[CCHMAXPATH],
    8684       *p, *pp, drive, *file, *ext, *dot;
    8785  register int x;
     
    676674
    677675  rc = DosAllocMem((PVOID)&pszPgm,
    678                    MAXSTRG,
     676                   MAXCOMLINESTRG,
    679677                   PAG_COMMIT | OBJ_TILE | PAG_READ | PAG_WRITE);
    680678  if (rc) {
     
    721719      if (temp) {
    722720        rc = DosAllocMem((PVOID)&pszArgs,
    723                          MAXSTRG * 2,
     721                         MAXCOMLINESTRG * 2,
    724722                         PAG_COMMIT | OBJ_TILE | PAG_READ | PAG_WRITE);
    725723        if (rc)
     
    854852      if (~type & FULLSCREEN)
    855853        type |= WINDOWED;
    856       rc = DosAllocMem((PVOID) & pszArgs, MAXSTRG * 2,
     854      rc = DosAllocMem((PVOID) & pszArgs, MAXCOMLINESTRG * 2,
    857855                       PAG_COMMIT | OBJ_TILE | PAG_READ | PAG_WRITE);
    858856      if (rc) {
     
    12371235    ulOptions |= SAF_STARTCHILDAPP;
    12381236
    1239   executable = xmallocz(MAXSTRG,pszSrcFile,__LINE__);
     1237  executable = xmallocz(MAXCOMLINESTRG, pszSrcFile, __LINE__);
    12401238  if (executable) {
    12411239    va_start(parguments, formatstring);
     
    12441242    strip_lead_char(" \t", executable);
    12451243    if (*executable) {
    1246       parameters = xmalloc(MAXSTRG,pszSrcFile,__LINE__);
     1244      parameters = xmalloc(MAXCOMLINESTRG, pszSrcFile, __LINE__);
    12471245      if (parameters) {
    12481246        p = executable;
     
    13181316}
    13191317
    1320 PSZ CheckApp_QuoteAddExe(PSZ pszPgm)
     1318PSZ CheckApp_QuoteAddExe(PSZ pszQuotedCompletePgm, PSZ pszPgm)
    13211319{
    1322   // 11 Jan 08 SHL fixme to not return quoted string on stack
    1323   // 11 Jan 08 SHL fixme to have javadoc comments
    1324   char szTempPgm[2048], tempcom[2048], temparg[2048];
     1320  char tempcom[MAXCOMLINESTRG], temparg[MAXCOMLINESTRG];
    13251321  char *offset = '\0', *offsetexe, *offsetcom, *offsetcmd, *offsetbtm, *offsetbat;
    13261322  APIRET ret;
     
    13311327  HDIR hdirFindHandle = HDIR_CREATE;
    13321328  ULONG ulFindCount = 1;
    1333   PSZ pszQuotedCompletePgm;
     1329  PSZ pszTempPgm = pszQuotedCompletePgm;
    13341330
    13351331  bstrip(pszPgm);
     
    13961392      else
    13971393        ret = DosQueryAppType(tempcom, &ulAppType);
    1398       BldQuotedFileName(szTempPgm, tempcom);
     1394      BldQuotedFileName(pszTempPgm, tempcom);
    13991395      //printf("%d A", ret); fflush(stdout);
    14001396      if (ret) {
    1401         ret = saymsg(MB_YESNO,
    1402                      HWND_DESKTOP,
    1403                      NullStr,
    1404                      GetPString(IDS_PROGRAMNOTFOUNDTEXT),
    1405                      pszPgm);
    1406         if (ret == MBID_YES)
    1407           pszQuotedCompletePgm = pszPgm;
    1408         else {
    1409           fCancelAction = TRUE;
    1410           pszQuotedCompletePgm = pszPgm;
    1411         }
    1412       }
    1413       else {
    1414         if (temparg[0] != ' ')
    1415           strcat(szTempPgm, " ");
    1416         strcat(szTempPgm, temparg);
    1417         pszQuotedCompletePgm = szTempPgm;
     1397        ret = saymsg(MB_YESNO,
     1398                     HWND_DESKTOP,
     1399                     NullStr,
     1400                     GetPString(IDS_PROGRAMNOTFOUNDTEXT),
     1401                     pszPgm);
     1402        if (ret == MBID_YES){
     1403          pszTempPgm = pszPgm;
     1404      }
     1405        else{
     1406          fCancelAction = TRUE;
     1407          pszTempPgm = pszPgm;
     1408        }
     1409      }
     1410      else{
     1411        if (temparg[0] != ' ')
     1412          strcat(pszTempPgm, " ");
     1413        strcat(pszTempPgm, temparg);
    14181414      }
    14191415
     
    14471443        }
    14481444      }
    1449       if (!ret) {
    1450         BldQuotedFileName(szTempPgm, tempcom);
    1451         strcpy(temparg, pszPgm + strlen(tempcom) - 3);
    1452         if ((temparg[0] == '\"' && temparg[1] == ' ') ||
    1453              !strstr(pszPgm, "\\:" ) ||
    1454              strchr(temparg, '\"') == strrchr(temparg, '\"'))
    1455           remove_first_occurence_of_character("\"", temparg);
    1456         if (strchr(temparg, '\"') != strrchr(temparg, '\"'))
    1457           saymsg(MB_OK, HWND_DESKTOP,
    1458                  NullStr,
    1459                  GetPString(IDS_QUOTESINARGSTEXT),
    1460                  pszPgm);
    1461         if (temparg[0] != ' ')
    1462           strcat(szTempPgm, " ");
    1463         strcat(szTempPgm, temparg);
    1464         pszQuotedCompletePgm = szTempPgm;
     1445      if (!ret){
     1446        BldQuotedFileName(pszTempPgm, tempcom);
     1447        strcpy(temparg, pszPgm + strlen(tempcom) - 3);
     1448        if ((temparg[0] == '\"' && temparg[1] == ' ') ||
     1449             !strstr(pszPgm, "\\:" ) ||
     1450             strchr(temparg, '\"') == strrchr(temparg, '\"'))
     1451          remove_first_occurence_of_character("\"", temparg);
     1452        if (strchr(temparg, '\"') != strrchr(temparg, '\"'))
     1453          saymsg(MB_OK, HWND_DESKTOP,
     1454                 NullStr,
     1455                 GetPString(IDS_QUOTESINARGSTEXT),
     1456                 pszPgm);
     1457        if (temparg[0] != ' ')
     1458          strcat(pszTempPgm, " ");
     1459        strcat(pszTempPgm, temparg);
    14651460      }
    14661461      else {
    1467         ret = saymsg(MB_OK,
    1468                      HWND_DESKTOP,
    1469                      NullStr,
    1470                      GetPString(IDS_PROGRAMNOTEXE2TEXT),
    1471                      pszPgm);
    1472           fCancelAction = TRUE;
    1473           pszQuotedCompletePgm = pszPgm;
     1462        ret = saymsg(MB_OK,
     1463                     HWND_DESKTOP,
     1464                     NullStr,
     1465                     GetPString(IDS_PROGRAMNOTEXE2TEXT),
     1466                     pszPgm);
     1467          fCancelAction = TRUE;
     1468          pszTempPgm = pszPgm;
    14741469      }
    14751470    }
     
    14951490                         ulResultBufLen, &ulFindCount, FIL_STANDARD);
    14961491
    1497     BldQuotedFileName(szTempPgm, tempcom);
     1492    BldQuotedFileName(pszTempPgm, tempcom);
    14981493    //printf("%d %s ", ret, tempcom); fflush(stdout);
    14991494    if (ret) {
     
    15121507    }
    15131508    ret = saymsg(MB_YESNOCANCEL,
    1514                    HWND_DESKTOP,
    1515                    NullStr,
    1516                    GetPString(IDS_PROGRAMNOTEXE3TEXT),
    1517                    pszPgm, szTempPgm);
    1518       if (ret == MBID_YES) {
    1519         if (temparg[0] != ' ')
    1520           strcat(szTempPgm, " ");
    1521         strcat(szTempPgm, temparg);
    1522         pszQuotedCompletePgm = szTempPgm;
    1523       }
    1524       if (ret == MBID_CANCEL) {
    1525         fCancelAction = TRUE;
    1526         pszQuotedCompletePgm = pszPgm;
    1527       }
    1528       else
    1529         pszQuotedCompletePgm = pszPgm;
    1530     }
    1531     return pszQuotedCompletePgm;
     1509                   HWND_DESKTOP,
     1510                   NullStr,
     1511                   GetPString(IDS_PROGRAMNOTEXE3TEXT),
     1512                   pszPgm, pszTempPgm);
     1513      if (ret == MBID_YES){
     1514        if (temparg[0] != ' ')
     1515          strcat(pszTempPgm, " ");
     1516        strcat(pszTempPgm, temparg);
     1517      }
     1518      if (ret == MBID_CANCEL){
     1519        fCancelAction = TRUE;
     1520        pszTempPgm = pszPgm;
     1521      }
     1522    }
    15321523  }
    1533   return pszPgm;
     1524  else
     1525    pszTempPgm = pszPgm;
     1526  return pszQuotedCompletePgm;
    15341527}
    15351528
Note: See TracChangeset for help on using the changeset viewer.