/************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite * * This file is part of OpenOffice.org. * * OpenOffice.org is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 3 * only, as published by the Free Software Foundation. * * OpenOffice.org is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License version 3 for more details * (a copy is included in the LICENSE file that accompanied this code). * * You should have received a copy of the GNU Lesser General Public License * version 3 along with OpenOffice.org. If not, see * * for a copy of the LGPLv3 License. * ************************************************************************/ #include #include #include #include #include #include #define INCL_DOS #define INCL_DOSERRORS #define INCL_PM #include // OOo uses popen() to start us, so we cannot show PM dialogs. // log message to disk. void logMessage( char* msg) { PPIB pib; CHAR szApplicationName[_MAX_PATH]; CHAR szDrive[_MAX_PATH]; CHAR szDir[_MAX_PATH]; CHAR szFileName[_MAX_PATH]; CHAR szExt[_MAX_PATH]; FILE* log; time_t timeOfDay; struct tm* localTime; // get executable fullpath DosGetInfoBlocks(NULL, &pib); DosQueryModuleName(pib->pib_hmte, sizeof(szApplicationName), szApplicationName); _splitpath( szApplicationName, szDrive, szDir, szFileName, szExt ); // log name _makepath( szApplicationName, szDrive, szDir, szFileName, (".LOG") ); log = fopen( szApplicationName, "a"); if (!log) return; time( &timeOfDay); localTime = localtime( &timeOfDay); fprintf( log, "%04d/%02d/%02d %02d:%02d:%02d %s\n", localTime->tm_year+1900, localTime->tm_mon+1, localTime->tm_mday, localTime->tm_hour, localTime->tm_min, localTime->tm_sec, msg); fclose( log); } // dump comand line arguments void dumpArgs( int argc, char *argv[] ) { int i; logMessage( "Start of command line arguments dump:"); for( i=0; i --attach "); dumpArgs( argc, argv); return -1; } // check configuration rc = PrfQueryProfileString(HINI_USER, "WPURLDEFAULTSETTINGS", "DefaultMailExe", "", szAppFromINI, sizeof(szAppFromINI)); rc = PrfQueryProfileString(HINI_USER, "WPURLDEFAULTSETTINGS", "DefaultMailWorkingDir", "", szDirFromINI, sizeof(szDirFromINI)); if (*szAppFromINI == 0 || *szDirFromINI == 0) { logMessage( "Unable to find default mail handler in USER.INI; exiting."); dumpArgs( argc, argv); return -1; } // get default parameter list, at leat -compose is required rc = PrfQueryProfileString(HINI_USER, "WPURLDEFAULTSETTINGS", "DefaultMailParameters", "", szCmdLine, sizeof(szCmdLine)); if (strstr( szCmdLine, "-compose") == 0) strcat( szCmdLine, " -compose"); // add if missing! // parse cmdline arguments for( i=1; i