/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the 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