Changeset 1803 for trunk/dll/shadow.c


Ignore:
Timestamp:
May 2, 2015, 11:56:39 PM (10 years ago)
Author:
Gregg Young
Message:

Changes to allow a JAVA executable object to be created using "Real object" menu item on a jar file. (Ticket [37]) Eliminate redundant prompts and error messages when telling FM/2 not to delete a R/O file. (Ticket [548]) Limit attempts to unlock files to exes and dlls. (Ticket [549])

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/shadow.c

    r1782 r1803  
    1717  17 JAN 10 GKY Changes to get working with Watcom 1.9 Beta (1/16/10). Mostly cast CHAR CONSTANT * as CHAR *.
    1818  28 Jun 14 GKY Fix errors identified with CPPCheck;
     19  02 May 15 GKY Changes to allow a JAVA executable object to be created using "Real object"
     20                menu item on a jar file.
    1921
    2022***********************************************************************/
     
    4345#include "fortify.h"
    4446#include "init.h"                       // Data declaration(s)
     47#include "notebook.h"                   // Data declaration(s)
     48#include "getnames.h"                   // insert_filename
     49#include "srchpath.h"                   // SearchMultiplePathsForFile
    4550
    4651#pragma data_seg(DATA1)
     
    5358
    5459static HOBJECT CreateProgramObject(CHAR * objtitle, CHAR * location, CHAR * path,
     60                                   CHAR * cnr);
     61static HOBJECT CreateJAVAProgramObject(CHAR * objtitle, CHAR * location, CHAR * path,
    5562                            CHAR * cnr);
    5663static HOBJECT CreateShadowObject(CHAR * objtitle, CHAR * location, CHAR * path,
     
    6269  HOBJECT obj = (HOBJECT) 0;
    6370  CHAR *s;
    64 
    65   if (!cnr)
    66     return obj;
     71  CHAR objecttmp[CCHMAXPATH];
     72
     73  if (!cnr)
     74    return obj;
     75  strcpy(objecttmp, objtitle);
     76  s = strchr(objecttmp, '.');
     77  if (s)
     78    *s = 0;
    6779  obj = WinCreateObject((CHAR *) WPProgram,
    68                         objtitle,
     80                        objecttmp,
    6981                        "NODELETE=NO;TEMPLATE=NO;NOCOPY=NO;NOMOVE=NO",
    7082                        (location) ? location : cnr, CO_FAILIFEXISTS);
     
    8597}
    8698
     99HOBJECT CreateJAVAProgramObject(CHAR * objtitle, CHAR * location, CHAR * path,
     100                            CHAR * cnr)
     101{
     102  HOBJECT obj = (HOBJECT) 0;
     103  CHAR *s;
     104  CHAR objecttmp[CCHMAXPATH];
     105  CHAR javaexe[CCHMAXPATH] = {0};
     106  CHAR icon[CCHMAXPATH] = {0};
     107  //PSZ env = 0;
     108  //FILESTATUS3 fsa;
     109
     110  if (!cnr)
     111    return obj;
     112  if (!PrfQueryProfileString(fmprof, appname, "JavaExe", NULL, javaexe, CCHMAXPATH - 1)) {
     113    strcpy(javaexe, PCSZ_STARDOTEXE);
     114    if (insert_filename(HWND_DESKTOP, javaexe, TRUE, FALSE) &&
     115        *javaexe && !strchr(javaexe, '*') && !strchr(javaexe, '?'))
     116      PrfWriteProfileString(fmprof, appname, "JavaExe", javaexe);
     117    else
     118      return obj;
     119  }
     120  strcpy(objecttmp, objtitle);
     121  s = strchr(objecttmp, '.');
     122  if (s)
     123    *s = 0;
     124  strcpy(icon, path);
     125  strcat(icon, "\\*.ico");
     126  insert_filename(HWND_DESKTOP, icon, TRUE, FALSE);
     127  obj = WinCreateObject((CHAR *) WPProgram,
     128                        objecttmp,
     129                        "NOPRINT=YES;DEFAULTVIEW=RUNNING",
     130                        (location) ? location : cnr, CO_FAILIFEXISTS);
     131  if (obj) {
     132    s = xmalloc(5192, pszSrcFile, __LINE__);
     133    if (s) {
     134      sprintf(s,
     135              "%s%s;EXENAME=%s%s%s;PARAMETERS= %s%s%s%s %%*;%sOBJECTID=<FM2_%s>",
     136              "ICONFILE=",
     137              icon,
     138              javaexe,
     139              (path) ? ";STARTUPDIR=" : NullStr,
     140              (path) ? path : NullStr,
     141              "-jar ",
     142              (path) ? path : NullStr,
     143              (path) ? PCSZ_BACKSLASH : NullStr,
     144              objtitle,
     145              "PROGTYPE=PM;",
     146              objecttmp);
     147      WinSetObjectData(obj, s);
     148      free(s);
     149    }
     150  }
     151  return obj;
     152}
     153
    87154HOBJECT CreateDataObject(CHAR * objtitle, CHAR * location, CHAR * path,
    88155                         CHAR * cnr)
     
    189256  HOBJECT obj = (HOBJECT) 0;
    190257  FILESTATUS3 fsa;
     258  BOOL JAVA = FALSE;
    191259
    192260  *szBuff = 0;
     
    233301          if (!stricmp(p, PCSZ_DOTBAT) || !stricmp(p, PCSZ_DOTCMD) ||
    234302              !stricmp(p, PCSZ_DOTBTM))
    235             apt |= FAPPTYP_BOUND;
     303            apt |= FAPPTYP_BOUND;
     304          else if(!stricmp(p, ".jar"))
     305            JAVA = TRUE;
    236306        }
    237307        *szBuffer = 0;
     
    262332          *szBuffer = 0;
    263333        if ((fsa.attrFile & FILE_DIRECTORY) || Shadows)
    264           CreateShadowObject(p, (obj) ? szBuffer : NULL, szDir, 0, cnr);
     334          CreateShadowObject(p, (obj) ? szBuffer : NULL, szDir, 0, cnr);
     335        else if (JAVA)
     336          if (CreateJAVAProgramObject(p, (obj) ? szBuffer : NULL, szDir, cnr))
     337            apt |= FAPPTYP_BOUND;
    265338        else if (!(apt & (FAPPTYP_NOTWINDOWCOMPAT | FAPPTYP_WINDOWCOMPAT | FAPPTYP_WINDOWAPI |
    266339                          FAPPTYP_BOUND | FAPPTYP_DOS | FAPPTYP_WINDOWSREAL |
Note: See TracChangeset for help on using the changeset viewer.