Ignore:
Timestamp:
Mar 3, 2003, 5:37:27 PM (22 years ago)
Author:
sandervl
Message:

Move OSLibWinCreateObject to KERNEL32

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/user32/oslibres.cpp

    r9852 r9889  
    1 /* $Id: oslibres.cpp,v 1.36 2003-02-25 11:00:29 sandervl Exp $ */
     1/* $Id: oslibres.cpp,v 1.37 2003-03-03 16:36:26 sandervl Exp $ */
    22/*
    33 * Window API wrappers for OS/2
     
    704704//******************************************************************************
    705705//******************************************************************************
    706 static char *OSLibStripPath(char *path)
    707 {
    708   char *pszFilename;
    709   char *pszFilename1;
    710 
    711   pszFilename  = strrchr(path, '\\');                 /* find rightmost backslash */
    712   pszFilename1 = strrchr(path, '/');                  /* find rightmost slash */
    713   if(pszFilename > pszFilename1 && pszFilename != NULL)
    714     return (++pszFilename);              /* return pointer to next character */
    715 
    716   if (pszFilename1 != NULL)
    717     return (++pszFilename1);              /* return pointer to next character */
    718 
    719   return (path);                                     /* default return value */
    720 }
    721 //******************************************************************************
    722 //******************************************************************************
    723 void OSLibStripFile(char *path)
    724 {
    725   char *pszFilename;
    726   char *pszFilename1;
    727 
    728    pszFilename  = strrchr(path, '\\');                 /* find rightmost backslash */
    729    pszFilename1 = strrchr(path, '/');                  /* find rightmost slash */
    730    if(pszFilename > pszFilename1 && pszFilename != NULL)
    731      *pszFilename = 0;
    732    else
    733    if (pszFilename1 != NULL)
    734      *pszFilename1 = 0;
    735 }
    736 //******************************************************************************
    737 //******************************************************************************
    738 BOOL WIN32API OSLibWinCreateObject(LPSTR pszPath, LPSTR pszArgs,
    739                                    LPSTR pszWorkDir, LPSTR pszLink,
    740                                    LPSTR pszDescription, LPSTR pszIcoPath,
    741                                    INT iIcoNdx, BOOL fDesktop)
    742 {
    743    HOBJECT hObject = 0;
    744    LPSTR   pszName;
    745    LPSTR   pszSetupString;
    746    LPSTR   pszFolder;
    747    char    szSystemDir[256];
    748    char    temp[128];
    749    char    szWorkDir[256];
    750    char    szPEGUILoaderPath[256];
    751    BOOL    fWin32App;
    752 
    753    if(pszLink) {
    754        char *tmp;
    755        pszName = OSLibStripPath(pszLink);
    756        tmp = pszName;
    757        while(*tmp) {
    758            if(*tmp == '.') {
    759                *tmp = 0;
    760                break;
    761            }
    762            tmp++;
    763        }
    764    }
    765    else { 
    766        dprintf(("OSLibWinCreateObject: pszLink == NULL!!"));
    767        return FALSE;
    768    }
    769    dprintf(("OSLibWinCreateObject %s %s %s\n    %s %s %s %d %d", pszPath, pszArgs,
    770             pszWorkDir, pszName, pszDescription, pszIcoPath, iIcoNdx, fDesktop));
    771    dprintf(("Link path %s", pszLink));
    772 
    773    GetSystemDirectoryA(szSystemDir, sizeof(szSystemDir));
    774    if(pszWorkDir && *pszWorkDir) {
    775        strcpy(szWorkDir, pszWorkDir);
    776    }
    777    else {
    778        strcpy(szWorkDir, pszPath);
    779        OSLibStripFile(szWorkDir);
    780    }
    781 
    782    ODIN_QueryLoaders(NULL, 0, szPEGUILoaderPath, sizeof(szPEGUILoaderPath), NULL, 0);
    783 
    784    pszSetupString = (LPSTR)malloc(128 + strlen(pszPath) + strlen(pszName) +
    785                                   strlen(pszLink) + strlen(szSystemDir) +
    786                                   strlen(szWorkDir) + strlen(pszIcoPath) +
    787                                   strlen(szPEGUILoaderPath) +
    788                                   ((pszArgs) ? strlen(pszArgs) : 0) +
    789                                   ((pszWorkDir) ? strlen(pszWorkDir) : 0));
    790    if(pszSetupString == NULL) {
    791        DebugInt3();
    792        return FALSE;
    793    }
    794 
    795    fWin32App = ODIN_IsWin32App(pszPath);
    796    if(!fWin32App)
    797    {//don't use the PE loader; use the program path directly
    798         sprintf(pszSetupString, "PROGTYPE=PM;OBJECTID=<%s%s>;EXENAME=%s;SET BEGINLIBPATH=%s;STARTUPDIR=%s;ICONFILE=%s;PARAMETERS=", (fDesktop) ? "DESKTOP_" : "", pszName, pszPath, szSystemDir, szWorkDir, pszIcoPath);
    799    }
    800    else sprintf(pszSetupString, "PROGTYPE=PM;OBJECTID=<%s%s>;EXENAME=%s;SET BEGINLIBPATH=%s;STARTUPDIR=%s;ICONFILE=%s;PARAMETERS=\"%s\"", (fDesktop) ? "DESKTOP_" : "", pszName, szPEGUILoaderPath, szSystemDir, szWorkDir, pszIcoPath, pszPath);
    801    if(pszArgs && *pszArgs) {
    802        strcat(pszSetupString, " ");
    803        strcat(pszSetupString, pszArgs);
    804    }
    805    strcat(pszSetupString, ";");
    806 
    807    if(fDesktop) {
    808        dprintf(("Name = %s", pszName));
    809        dprintf(("Setup string = %s", pszSetupString));
    810 
    811        //Use a different name for desktop objects
    812        hObject = WinCreateObject("WPProgram", pszName, pszSetupString,
    813                                  "<WP_DESKTOP>", CO_REPLACEIFEXISTS);
    814    }
    815    else {
    816        //e.g.: Link path k:\source\odin32\bin\win\Start Menu\Programs\Winamp\Winamp
    817        OSLibStripFile(pszLink);
    818        pszFolder = OSLibStripPath(pszLink);
    819        sprintf(temp, "<FOLDER_%s>", pszFolder);
    820        sprintf(szWorkDir, "OBJECTID=%s;", temp);
    821        hObject = WinCreateObject("WPFolder", pszFolder, szWorkDir,
    822                                  "<ODINFOLDER>", CO_UPDATEIFEXISTS);
    823        if(hObject) {
    824            hObject = WinCreateObject("WPProgram", pszName, pszSetupString,
    825                                      temp, CO_REPLACEIFEXISTS);
    826        }
    827        else {
    828            hObject = 1; //force silent failure
    829        }
    830    }
    831 
    832    free(pszSetupString);
    833    if(!hObject) {
    834        dprintf(("ERROR: WinCreateObject failed!!"));
    835    }
    836    return hObject != 0;
    837 }
    838 //******************************************************************************
    839 //******************************************************************************
    840 
Note: See TracChangeset for help on using the changeset viewer.