Changeset 239


Ignore:
Timestamp:
Dec 3, 2021, 7:50:03 PM (3 years ago)
Author:
Gregg Young
Message:

Fix failure to open help files when using cmd as the default shell

Location:
trunk/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/src/con_os2.cpp

    r201 r239  
    14791479}
    14801480
    1481 int GUI::RunProgram(int mode, char *Command, bool PM)
     1481int GUI::RunProgram(int mode, char *Command, char *CommandLine, bool PM)
    14821482{
    14831483    int rc, W, H, W1, H1;
  • TabularUnified trunk/src/e_os2.cpp

    r115 r239  
    1515{
    1616    char file[MAXPATH] = "";
    17     char cmd[1024];
     17    char cmd[MAXPATH] = {0};
     18    char cmdline[1024] = {0};
    1819    int rc;
    1920
     
    3334        word = wordAsk;
    3435    }
    35     sprintf(cmd, "%s %s %s", HelpCommand, file, word);
     36    sprintf(cmd, "%s", HelpCommand);
     37    sprintf(cmdline, "%s %s", file, word);
    3638#ifdef OS2
    37     rc = gui->RunProgram(RUN_WAIT, cmd, 1);
     39    rc = gui->RunProgram(RUN_WAIT, cmd, cmdline, 1);
    3840#else
    3941    rc = system(cmd);
  • TabularUnified trunk/src/e_unix.cpp

    r201 r239  
    2323{
    2424    char options[128] = "";
    25     char command[1024];
     25    char command[1024]= (0);
    2626    char file[MAXPATH];
    2727
  • TabularUnified trunk/src/egui.cpp

    r206 r239  
    604604        if (view->GetStr("Run", sizeof(Cmd), Cmd, HIST_COMPILE) == 0)
    605605            return 0;
    606     gui->RunProgram(RUN_WAIT, Cmd, 0);
     606    gui->RunProgram(RUN_WAIT, Cmd, NULL, 0);
    607607    return 1;
    608608}
     
    618618        if (view->GetStr("Run", sizeof(Cmd), Cmd, HIST_COMPILE) == 0)
    619619            return 0;
    620     gui->RunProgram(RUN_ASYNC, Cmd, 0);
     620    gui->RunProgram(RUN_ASYNC, Cmd, NULL, 0);
    621621    return 1;
    622622}
  • TabularUnified trunk/src/g_pm.cpp

    r227 r239  
    5555#include "exceptq.h"
    5656
    57 //#define  __PMPRINTF__
    58 //#include "PMPRINTF.H"
     57#if 0
     58#define  __PMPRINTF__
     59#include "PMPRINTF.H"
     60#endif
    5961
    6062#define PM_STACK_SIZE (96 * 1024)
     
    41024104}
    41034105
    4104 int GUI::RunProgram(int mode, char *Command, bool PM)
     4106int GUI::RunProgram(int mode, char *Command, char *CommandLine, bool PM)
    41054107{
    41064108    char FailBuf[256];
    41074109    char *Args;
    41084110    char *Prog;
    4109     int rc;
     4111    int rc = 0;
    41104112    PID pid;
    41114113    ULONG sid;
    41124114    int ArgsSize;
    4113 
    4114     Prog = getenv("COMSPEC");
    4115 
    4116     ArgsSize = 3 + strlen(Command) + 1;
    4117 
     4115    int ProgSize;
     4116
     4117    if (PM) {
     4118        ProgSize = strlen(Command) + 1;
     4119        Prog = (char *)malloc(ProgSize);
     4120        if (Prog == NULL) {
     4121            return -1;
     4122        }
     4123        memset(Prog, 0, ProgSize);
     4124        if (*Command != 0)
     4125            strlcpy(Prog, Command, ProgSize );
     4126        ArgsSize = strlen(CommandLine) + 1;
     4127    }
     4128    else {
     4129        Prog = getenv("COMSPEC");
     4130        ArgsSize = 3 + strlen(Command) + 1;
     4131    }
    41184132    Args = (char *)malloc(ArgsSize);
    41194133    if (Args == NULL) {
    41204134        return -1;
    41214135    }
    4122 
    4123     if (*Command != 0) {
    4124         strlcpy(Args, "/c ", ArgsSize);
    4125         strlcat(Args, Command, ArgsSize);
     4136    memset(Args, 0, ArgsSize);
     4137    if (PM) {
     4138        if (*CommandLine != 0)
     4139            strlcat(Args, CommandLine, ArgsSize);
     4140        else {
     4141            Args[0] = 0;
     4142        }
    41264143    }
    41274144    else {
    4128         Args[0] = 0;
    4129     }
    4130 
     4145        if (*Command != 0) {
     4146            strlcpy(Args, "/c ", ArgsSize);
     4147            strlcat(Args, Command, ArgsSize);
     4148        }
     4149        else {
     4150            Args[0] = 0;
     4151        }
     4152    }
    41314153    {
    41324154        STARTDATA sd;
     
    41364158        sd.Related = SSF_RELATED_INDEPENDENT;
    41374159        sd.FgBg = SSF_FGBG_FORE;
    4138         sd.TraceOpt = SSF_TRACEOPT_NONE;
     4160        sd.TraceOpt = /*SSF_TRACEOPT_TRACEALL;*/ SSF_TRACEOPT_NONE;
    41394161        sd.PgmTitle = (Command && Command[0] != 0) ? Command : 0;
    41404162        sd.PgmName = Prog;
     
    41464168        sd.IconFile = 0;
    41474169        sd.PgmHandle = 0;
    4148         sd.PgmControl = SSF_CONTROL_VISIBLE;    // | ((Command && Command[0] != 0) ? SSF_CONTROL_NOAUTOCLOSE : 0);
     4170        sd.PgmControl = SSF_CONTROL_VISIBLE; // | ((Command && Command[0] != 0) ? SSF_CONTROL_NOAUTOCLOSE : 0);
    41494171        sd.ObjectBuffer = FailBuf;
    41504172        sd.ObjectBuffLen = sizeof(FailBuf);
    4151         rc = DosStartSession(&sd, &sid, &pid);
    4152     }
    4153 
     4173        rc = DosStartSession(&sd, &sid, &pid);
     4174    }
     4175    if (PM)
     4176        free(Prog);
    41544177    free(Args);
    41554178
  • TabularUnified trunk/src/gui.h

    r115 r239  
    137137    void StopLoop();
    138138
    139     int RunProgram(int mode, char *Command, bool PM);
     139    int RunProgram(int mode, char *Command, char *CommandLine, bool PM);
    140140
    141141    int OpenPipe(char *Command, EModel *notify);
Note: See TracChangeset for help on using the changeset viewer.