Changeset 1335 for trunk/dll/newview.c


Ignore:
Timestamp:
Dec 13, 2008, 12:49:02 AM (17 years ago)
Author:
Steven Levine
Message:

Ticket 26: Add exception handlers to all threads using xbeginthread

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/newview.c

    r1225 r1335  
    3232  29 Feb 08 GKY Refactor global command line variables to notebook.h
    3333  20 Jul 08 GKY Change ListToClipboardHab call to match changes made to function
     34  10 Dec 08 SHL Integrate exception handler support
    3435
    3536***********************************************************************/
     
    3738#include <stdlib.h>
    3839#include <string.h>
    39 #include <process.h>
     40// #include <process.h>                 // 10 Dec 08 SHL
    4041#include <limits.h>
    4142#include <share.h>
     
    7071#include "newview.h"
    7172#include "strips.h"                     // chop_at_crnl, convert_nl_to_nul
    72                                         // remove_first_occurence_of_character
    73                                         // strip_lead_char, strip_trail_char
     73                                // remove_first_occurence_of_character
     74                                // strip_lead_char, strip_trail_char
    7475#include "common.h"                     // CommonTextButton, CommonTextProc, DecrThreadUsage
    75                                         // IncrThreadUsage
     76                                // IncrThreadUsage
    7677#include "systemf.h"                    // ExecOnList
    7778#include "input.h"                      // InputDlgProc
     
    8687#include "misc.h"                       // PaintRecessedWindow
    8788#include "fortify.h"
     89#include "excputil.h"                   // xbeginthread
    8890
    8991// Data definitions
     
    226228  pszCharCounter = pszSrc;
    227229  while (*pszCharCounter && *pszCharCounter != ' ' && *pszCharCounter != '\r' &&
    228         *pszCharCounter != '\n' && *pszCharCounter != '\"')
     230        *pszCharCounter != '\n' && *pszCharCounter != '\"')
    229231    pszCharCounter++;
    230232  *pszCharCounter = 0;
     
    288290                            MPFROM2SHORT(LIT_END, 0), MPFROMP(urld->url));
    289291          p++;
    290         }
     292        }
    291293      }
    292294      while (p && *p && p < e);
    293295      p = urld->line;
    294296      if (mailstr(p, "@", e - p)) {
    295         pp = mailstr(p, "@", e - p);
    296         strcpy(urld->url, pp);
    297         WinSendDlgItemMsg(hwnd, URL_LISTBOX, LM_INSERTITEM,
    298                           MPFROM2SHORT(LIT_END, 0), MPFROMP(urld->url));
     297        pp = mailstr(p, "@", e - p);
     298        strcpy(urld->url, pp);
     299        WinSendDlgItemMsg(hwnd, URL_LISTBOX, LM_INSERTITEM,
     300                          MPFROM2SHORT(LIT_END, 0), MPFROMP(urld->url));
    299301      }
    300302      *urld->url = 0;
     
    361363                  break;
    362364                }
    363               }
    364               else if (strchr(urld->url, '@')) {
     365              }
     366              else if (strchr(urld->url, '@')) {
    365367                  WinDismissDlg(hwnd, 3);
    366368                  break;
    367               }
     369              }
    368370            }
    369371          }
     
    444446            while (*e != '\r' && *e != '\n' && e < ad->text + ad->textsize)
    445447              e++;
    446             /* fixme to be gone?
    447                if((*e == '\r' || *e == '\n') && e > p)
    448                e--;
    449             */
     448            /* fixme to be gone?
     449               if((*e == '\r' || *e == '\n') && e > p)
     450               e--;
     451            */
    450452            width = e - p;
    451453          }
     
    830832            GpiSetColor(hps, standardcolors[ad->colors[COLORS_HTTPFORE]]);
    831833            GpiSetBackColor(hps, standardcolors[ad->colors[COLORS_HTTPBACK]]);
    832           }
    833 
    834           if (ad->mailin && whichline != ad->cursored - 1
     834          }
     835
     836          if (ad->mailin && whichline != ad->cursored - 1
    835837              && (!ad->markedlines
    836838                  || !(ad->markedlines[whichline] & (VF_SELECTED | VF_FOUND)))
     
    894896            GpiSetColor(hps, standardcolors[ad->colors[COLORS_HTTPFORE]]);
    895897            GpiSetBackColor(hps, standardcolors[ad->colors[COLORS_HTTPBACK]]);
    896           }
    897 
    898           if (ad->mailin && whichline != ad->cursored - 1
     898          }
     899
     900          if (ad->mailin && whichline != ad->cursored - 1
    899901              && (!ad->markedlines
    900902                  || !(ad->markedlines[whichline] & (VF_SELECTED | VF_FOUND)))
     
    13761378                ad->selected = 0;
    13771379              }
    1378               if ((*ftprun || fFtpRunWPSDefault) && !ad->ignoreftp &&
    1379                   strstr(ad->text, "ftp://"))
     1380              if ((*ftprun || fFtpRunWPSDefault) && !ad->ignoreftp &&
     1381                  strstr(ad->text, "ftp://"))
    13801382                ad->ftpin = TRUE;
    1381               if ((*httprun || fHttpRunWPSDefault) && !ad->ignorehttp &&
    1382                   strstr(ad->text, "http://"))
    1383                 ad->httpin = TRUE;
    1384               if (*mailrun && !ad->ignoremail && strstr(ad->text, "@"))
    1385                 ad->mailin = TRUE;
     1383              if ((*httprun || fHttpRunWPSDefault) && !ad->ignorehttp &&
     1384                  strstr(ad->text, "http://"))
     1385                ad->httpin = TRUE;
     1386              if (*mailrun && !ad->ignoremail && strstr(ad->text, "@"))
     1387                ad->mailin = TRUE;
    13861388            }
    13871389          }
     
    15001502                    }
    15011503                    if (ad->textsize) {
    1502                       if (_beginthread
    1503                           (ReLineThread, NULL, 524288, (PVOID) hwnd) == -1)
    1504                         Runtime_Error(pszSrcFile, __LINE__,
    1505                                       GetPString(IDS_COULDNTSTARTTHREADTEXT));
    1506                       else
     1504                      if (xbeginthread(ReLineThread,
     1505                                       524288,
     1506                                       (PVOID)hwnd,
     1507                                       pszSrcFile,
     1508                                       __LINE__) != -1)
     1509                      {
    15071510                        error = FALSE;
     1511                      }
    15081512                    }
    15091513                  }
     
    19561960        WinSetWindowPtr(hwndFrame, QWL_USER, (PVOID) oldproc);
    19571961        ad->hps = InitWindow(hwnd);
    1958         if (_beginthread(LoadFileThread, NULL, 524288, (PVOID) hwnd) == -1)
    1959           Runtime_Error(pszSrcFile, __LINE__,
    1960                         GetPString(IDS_COULDNTSTARTTHREADTEXT));
    1961         else {
     1962        if (xbeginthread(LoadFileThread,
     1963                         524288,
     1964                         (PVOID)hwnd,
     1965                         pszSrcFile,
     1966                         __LINE__) != -1)
     1967        {
    19621968          WinSendMsg(hwnd, UM_SETUP5, MPVOID, MPVOID);
    19631969          DosSleep(16); //05 Aug 07 GKY 32
     
    20702076        ad->oldwidth = newwidth;
    20712077        if (!ad->relining) {
    2072           if (_beginthread(ReLineThread, NULL, 524288, (PVOID) hwnd) == -1) {
    2073             Runtime_Error(pszSrcFile, __LINE__,
    2074                           GetPString(IDS_COULDNTSTARTTHREADTEXT));
     2078          if (xbeginthread(ReLineThread,
     2079                           524288,
     2080                           (PVOID)hwnd,
     2081                           pszSrcFile,
     2082                           __LINE__) == -1)
     2083          {
    20752084            DosReleaseMutexSem(ad->ScanSem);
    20762085            WinDestroyWindow(WinQueryWindow(hwnd, QW_PARENT));
     
    24242433          width = e - p;
    24252434          if (!width)
    2426             goto NoAdd;
     2435            goto NoAdd;
    24272436
    24282437          if ((ad->httpin && (*httprun || fHttpRunWPSDefault) &&
    24292438               strnstr(ad->lines[whichline], "http://", width)) ||
    24302439              (ad->ftpin && (*ftprun || fFtpRunWPSDefault) &&
    2431                strnstr(ad->lines[whichline], "ftp://", width)) ||
    2432               (ad->mailin && *mailrun && mailstr(ad->lines[whichline], "@", width))) {
     2440               strnstr(ad->lines[whichline], "ftp://", width)) ||
     2441              (ad->mailin && *mailrun && mailstr(ad->lines[whichline], "@", width))) {
    24332442
    24342443            USHORT ret;
     
    24442453              switch (ret) {
    24452454              case 0:
    2446                 free(urld);
     2455                free(urld);
    24472456                goto NoAdd;
    24482457              case 1:
    2449                 if (*urld->url) {
    2450                   if (fHttpRunWPSDefault) {
    2451                     CHAR WPSDefaultHttpRun[CCHMAXPATH], WPSDefaultHttpRunDir[CCHMAXPATH];
    2452 
    2453                     size = sizeof(WPSDefaultHttpRun);
    2454                     PrfQueryProfileData(HINI_USERPROFILE, "WPURLDEFAULTSETTINGS",
    2455                                         "DefaultBrowserExe", WPSDefaultHttpRun, &size);
    2456                     size = sizeof(WPSDefaultHttpRunDir);
    2457                     PrfQueryProfileData(HINI_USERPROFILE, "WPURLDEFAULTSETTINGS",
    2458                                         "DefaultWorkingDir", WPSDefaultHttpRunDir, &size);
    2459                     runemf2(SEPARATE | WINDOWED,
    2460                             hwnd, pszSrcFile, __LINE__,
    2461                             WPSDefaultHttpRunDir,
    2462                             fLibPathStrictHttpRun ? "SET LIBPATHSTRICT=TRUE" : NULL,
    2463                             "%s %s", WPSDefaultHttpRun, urld->url);
    2464                   }
    2465                   else
    2466                     runemf2(SEPARATE | WINDOWED,
    2467                             hwnd, pszSrcFile, __LINE__,
    2468                             httprundir,
    2469                             fLibPathStrictHttpRun ? "SET LIBPATHSTRICT=TRUE" : NULL,
    2470                             "%s %s", httprun, urld->url);
    2471                 }
     2458                if (*urld->url) {
     2459                  if (fHttpRunWPSDefault) {
     2460                    CHAR WPSDefaultHttpRun[CCHMAXPATH], WPSDefaultHttpRunDir[CCHMAXPATH];
     2461
     2462                    size = sizeof(WPSDefaultHttpRun);
     2463                    PrfQueryProfileData(HINI_USERPROFILE, "WPURLDEFAULTSETTINGS",
     2464                                        "DefaultBrowserExe", WPSDefaultHttpRun, &size);
     2465                    size = sizeof(WPSDefaultHttpRunDir);
     2466                    PrfQueryProfileData(HINI_USERPROFILE, "WPURLDEFAULTSETTINGS",
     2467                                        "DefaultWorkingDir", WPSDefaultHttpRunDir, &size);
     2468                    runemf2(SEPARATE | WINDOWED,
     2469                            hwnd, pszSrcFile, __LINE__,
     2470                            WPSDefaultHttpRunDir,
     2471                            fLibPathStrictHttpRun ? "SET LIBPATHSTRICT=TRUE" : NULL,
     2472                            "%s %s", WPSDefaultHttpRun, urld->url);
     2473                  }
     2474                  else
     2475                    runemf2(SEPARATE | WINDOWED,
     2476                            hwnd, pszSrcFile, __LINE__,
     2477                            httprundir,
     2478                            fLibPathStrictHttpRun ? "SET LIBPATHSTRICT=TRUE" : NULL,
     2479                            "%s %s", httprun, urld->url);
     2480                }
    24722481                free(urld);
    24732482                goto NoAdd;
    24742483              case 2:
    2475                 if (*urld->url){
    2476                   if (fFtpRunWPSDefault) {
    2477                     CHAR WPSDefaultFtpRun[CCHMAXPATH], WPSDefaultFtpRunDir[CCHMAXPATH];
    2478 
    2479                     size = sizeof(WPSDefaultFtpRun);
    2480                     PrfQueryProfileData(HINI_USERPROFILE, "WPURLDEFAULTSETTINGS",
    2481                                         "DefaultBrowserExe", WPSDefaultFtpRun, &size);
    2482                     size = sizeof(WPSDefaultFtpRunDir);
    2483                     PrfQueryProfileData(HINI_USERPROFILE, "WPURLDEFAULTSETTINGS",
    2484                                         "DefaultWorkingDir", WPSDefaultFtpRunDir, &size);
    2485                     runemf2(SEPARATE | WINDOWED,
    2486                             hwnd, pszSrcFile, __LINE__,
    2487                             WPSDefaultFtpRunDir,
    2488                             fLibPathStrictFtpRun ? "SET LIBPATHSTRICT=TRUE" : NULL,
    2489                             "%s %s", WPSDefaultFtpRun, urld->url);
    2490                   }
    2491                   else
    2492                     runemf2(SEPARATE | WINDOWED,
    2493                             hwnd, pszSrcFile, __LINE__,
    2494                             ftprundir,
    2495                             fLibPathStrictFtpRun ? "SET LIBPATHSTRICT=TRUE" : NULL,
    2496                             "%s %s", ftprun, urld->url);
    2497                 }
    2498                 free(urld);
     2484                if (*urld->url){
     2485                  if (fFtpRunWPSDefault) {
     2486                    CHAR WPSDefaultFtpRun[CCHMAXPATH], WPSDefaultFtpRunDir[CCHMAXPATH];
     2487
     2488                    size = sizeof(WPSDefaultFtpRun);
     2489                    PrfQueryProfileData(HINI_USERPROFILE, "WPURLDEFAULTSETTINGS",
     2490                                        "DefaultBrowserExe", WPSDefaultFtpRun, &size);
     2491                    size = sizeof(WPSDefaultFtpRunDir);
     2492                    PrfQueryProfileData(HINI_USERPROFILE, "WPURLDEFAULTSETTINGS",
     2493                                        "DefaultWorkingDir", WPSDefaultFtpRunDir, &size);
     2494                    runemf2(SEPARATE | WINDOWED,
     2495                            hwnd, pszSrcFile, __LINE__,
     2496                            WPSDefaultFtpRunDir,
     2497                            fLibPathStrictFtpRun ? "SET LIBPATHSTRICT=TRUE" : NULL,
     2498                            "%s %s", WPSDefaultFtpRun, urld->url);
     2499                  }
     2500                  else
     2501                    runemf2(SEPARATE | WINDOWED,
     2502                            hwnd, pszSrcFile, __LINE__,
     2503                            ftprundir,
     2504                            fLibPathStrictFtpRun ? "SET LIBPATHSTRICT=TRUE" : NULL,
     2505                            "%s %s", ftprun, urld->url);
     2506                }
     2507                free(urld);
    24992508                goto NoAdd;
    2500               case 3:
    2501                 if (*urld->url){
    2502                   runemf2(SEPARATE | WINDOWED,
    2503                           hwnd, pszSrcFile, __LINE__,
    2504                           mailrundir,
    2505                           fLibPathStrictMailRun ? "SET LIBPATHSTRICT=TRUE" : NULL,
    2506                           "%s %s", mailrun, urld->url);
    2507                 }
    2508                 free(urld);
    2509                 goto NoAdd;
     2509              case 3:
     2510                if (*urld->url){
     2511                  runemf2(SEPARATE | WINDOWED,
     2512                          hwnd, pszSrcFile, __LINE__,
     2513                          mailrundir,
     2514                          fLibPathStrictMailRun ? "SET LIBPATHSTRICT=TRUE" : NULL,
     2515                          "%s %s", mailrun, urld->url);
     2516                }
     2517                free(urld);
     2518                goto NoAdd;
    25102519              default:
    25112520                break;
    25122521              }
    2513               free(urld);
     2522              free(urld);
    25142523            }
    25152524          }
    2516         }
    2517         //Move line to selection box at top of viewer
     2525        }
     2526        //Move line to selection box at top of viewer
    25182527        numsels = (SHORT) WinSendDlgItemMsg(ad->hwndFrame, NEWVIEW_LISTBOX,
    25192528                                            LM_QUERYITEMCOUNT, MPVOID,
     
    25522561
    25532562            width = ad->textsize - (whichline * 16);
    2554             width = min(width, 16); //standard hexx line length
    2555             //use 80 as width * 5 gives inconsistent format on short lines
     2563            width = min(width, 16); //standard hexx line length
     2564            //use 80 as width * 5 gives inconsistent format on short lines
    25562565            s = xmalloc(80, pszSrcFile, __LINE__);
    25572566            if (!s)
     
    33243333        dummy[0] = ad->filename;
    33253334        dummy[1] = NULL;
    3326         ExecOnList(hwnd, editor, WINDOWED | SEPARATE, NULL, dummy, NULL,
    3327                    pszSrcFile, __LINE__);
     3335        ExecOnList(hwnd, editor, WINDOWED | SEPARATE, NULL, dummy, NULL,
     3336                   pszSrcFile, __LINE__);
    33283337      }
    33293338      else
     
    33373346      ad->ftpin = FALSE;
    33383347      if (ad->text && (*ftprun || fFtpRunWPSDefault) &&
    3339           !ad->ignoreftp && strstr(ad->text, "ftp://"))
     3348          !ad->ignoreftp && strstr(ad->text, "ftp://"))
    33403349        ad->ftpin = TRUE;
    33413350      IgnoreFTP = ad->ignoreftp;
     
    35443553                                      "Viewer.Searchtext",
    35453554                                      (PVOID) ad->searchtext);
    3546               if (_beginthread(SearchThread, NULL, 524288, (PVOID) hwnd) ==
    3547                   -1)
    3548                 Runtime_Error(pszSrcFile, __LINE__,
    3549                               GetPString(IDS_COULDNTSTARTTHREADTEXT));
     3555              xbeginthread(SearchThread,
     3556                           524288,
     3557                           (PVOID)hwnd,
     3558                           pszSrcFile,
     3559                           __LINE__);
    35503560            }
    35513561          }
     
    37813791          if (!ad->busy) {
    37823792            ad->cliptype = SHORT1FROMMP(mp1);
    3783             if (_beginthread(ClipboardThread, NULL, 524288, (PVOID) hwnd) ==
    3784                 -1)
    3785               Runtime_Error(pszSrcFile, __LINE__,
    3786                             GetPString(IDS_COULDNTSTARTTHREADTEXT));
     3793            xbeginthread(ClipboardThread,
     3794                         524288,
     3795                         (PVOID)hwnd,
     3796                         pszSrcFile,
     3797                         __LINE__);
    37873798          }
    37883799          DosReleaseMutexSem(ad->ScanSem);
     
    41084119        size = sizeof(BOOL);
    41094120        PrfQueryProfileData(fmprof, appname, "Viewer.IgnoreHTTP",
    4110                             (PVOID) & IgnoreHTTP, &size);
    4111         size = sizeof(BOOL);
     4121                            (PVOID) & IgnoreHTTP, &size);
     4122        size = sizeof(BOOL);
    41124123        PrfQueryProfileData(fmprof, appname, "Viewer.IgnoreMail",
    41134124                            (PVOID) & IgnoreMail, &size);
Note: See TracChangeset for help on using the changeset viewer.