From 1d18d087d47d7a54f68950f983029642a54d6f43 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sun, 7 Jun 2015 12:10:26 +0000 Subject: - common.props divided into app.props & plugin.props; - MimCmd & CmdLine converted to Unicode; git-svn-id: http://svn.miranda-ng.org/main/trunk@14048 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/MimCmd/src/MimCmd.cpp | 112 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 plugins/MimCmd/src/MimCmd.cpp (limited to 'plugins/MimCmd/src/MimCmd.cpp') diff --git a/plugins/MimCmd/src/MimCmd.cpp b/plugins/MimCmd/src/MimCmd.cpp new file mode 100644 index 0000000000..6bad9d81aa --- /dev/null +++ b/plugins/MimCmd/src/MimCmd.cpp @@ -0,0 +1,112 @@ +/* +CmdLine plugin for Miranda IM + +Copyright © 2007 Cristian Libotean + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program 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 General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include "stdafx.h" + +int hLangpack = 0; + +int lpprintf(const char *format, ...) +{ + va_list va; + va_start(va, format); + const int MAX_SIZE = 16192; + char buffer[MAX_SIZE] = {0}; + int len = mir_vsnprintf(buffer, MAX_SIZE - 1, format, va); + buffer[MAX_SIZE - 1] = 0; + va_end(va); + CharToOemBuffA(buffer, buffer, len); + printf("%s", buffer); + + return len; +} + +char* GetProgramName(char *programName, int size) +{ + char name[512]; + GetModuleFileNameA(GetModuleHandle(NULL), name, sizeof(name)); + char *p = strrchr(name, '\\'); + if (p) + strncpy_s(programName, size, p + 1, _TRUNCATE); + else + strncpy_s(programName, size, name, _TRUNCATE); + + return programName; +} + +void PrintUsage() +{ + char name[128]; + GetProgramName(name, sizeof(name)); + + lpprintf(Translate("%s usage:\n"), name); + lpprintf(Translate("%s [ [ [...]]].\n"), name); + lpprintf(Translate("This will tell Miranda to run the specified command. The commands can have zero, one or more parameters. Use '%s help' to get a list of possible commands.\n"), name); + lpprintf(Translate("No command can have more than %d parameters.\n"), MAX_ARGUMENTS - 1); +} + +void ShowVersion() +{ + char name[128]; + char message[1024]; + GetProgramName(name, sizeof(name)); + mir_snprintf(message, sizeof(message), Translate("%s version %s"), name, __VERSION_STRING_DOTS); + + lpprintf("%s\n", message); +} + +int main(int argc, char *argv[]) +{ + int error = 0; + if ((argc == 2) && (mir_strcmp(argv[1], "-v") == 0)) + { + ShowVersion(); + + return 0; + } + + if ((InitClient()) || (ConnectToMiranda()) || (GetKnownCommands()) || (LoadLangPackModule())) + { + lpprintf("Could not create connection with Miranda or could not retrieve list of known commands.\n"); + error = MIMRES_NOMIRANDA; + } + else{ + if ((argc <= 1) || (argc > MAX_ARGUMENTS)) + { + PrintUsage(); + } + else{ + PReply reply = ParseCommand(argv, argc); + if (reply) + { + error = reply->code; + lpprintf("%s\n", reply->message); + } + else{ + lpprintf(Translate("Unknown command '%s'.\n"), argv[1]); + } + + DestroyKnownCommands(); + DisconnectFromMiranda(); + DestroyClient(); + } + } + + return error; +} -- cgit v1.2.3