Changeset 9889 for trunk/src/user32/oslibres.cpp
- Timestamp:
- Mar 3, 2003, 5:37:27 PM (22 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/user32/oslibres.cpp
r9852 r9889 1 /* $Id: oslibres.cpp,v 1.3 6 2003-02-25 11:00:29sandervl Exp $ */1 /* $Id: oslibres.cpp,v 1.37 2003-03-03 16:36:26 sandervl Exp $ */ 2 2 /* 3 3 * Window API wrappers for OS/2 … … 704 704 //****************************************************************************** 705 705 //****************************************************************************** 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 else733 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 directly798 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 objects812 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\Winamp817 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 failure829 }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.