mirror of
https://github.com/reactos/reactos.git
synced 2025-07-31 19:21:38 +00:00
1. remove all hardcode strings to En.rc
2. make it unicode and anis svn path=/trunk/; revision=15476
This commit is contained in:
parent
d920c40eee
commit
ab215aa2bf
4 changed files with 157 additions and 37 deletions
57
reactos/subsys/system/sm/En.rc
Normal file
57
reactos/subsys/system/sm/En.rc
Normal file
|
@ -0,0 +1,57 @@
|
|||
#include "resource.h"
|
||||
/*
|
||||
* Moved all hardcoded strings to En.rc.
|
||||
* By Magnus Olsen 2005 magnus@itkonsult-olsen.com
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
IDS_boot, "boot subsystem_name"
|
||||
|
||||
IDS_help, "help [command]"
|
||||
|
||||
IDS_info, "info [subsystem_id]"
|
||||
|
||||
IDS_reboot, "reboot subsystem_id"
|
||||
|
||||
IDS_shutdown,"shutdown subsystem_id"
|
||||
|
||||
|
||||
|
||||
IDS_boot_msg, "bootstrap an optional environment subsystem;"
|
||||
|
||||
IDS_help_msg, "print help for command;"
|
||||
|
||||
IDS_info_msg, "print information about a booted subsystem\n\
|
||||
if subsystem_id is omitted, a list of booted\n\
|
||||
environment subsystems is printed."
|
||||
|
||||
IDS_reboot_msg, "reboot an optional environment subsystem;"
|
||||
IDS_shutdown_msg, "shutdown an optional environment subsystem;"
|
||||
|
||||
IDS_Unknown, "Unknown command '%s'.\n"
|
||||
|
||||
IDS_Status, "Status 0x%08lx\n"
|
||||
|
||||
IDS_SM1, "SM SubSystem Directory\n\n\
|
||||
SSID PID Flags\n\
|
||||
---- -------- ------------\n"
|
||||
|
||||
IDS_SM2, "%04x %08lx %04x\n"
|
||||
|
||||
IDS_ID, "SubSystem ID: %d\n\
|
||||
Flags: %04x\n\
|
||||
Process ID: %ld\n"
|
||||
|
||||
IDS_Not_Imp, "not implemented\n"
|
||||
|
||||
IDS_Mangers, "ReactOS/Win32 Session Manager Control Tool\n\n"
|
||||
|
||||
IDS_USING, "Usage:\n\
|
||||
\tsm\n\
|
||||
\tsm help [command]\n\
|
||||
\tsm command [arguments]\n\n'sm help' will print the list of valid commands.\n"
|
||||
|
||||
IDS_FAILS_MNG, "Failed to connect to the Session Manager! (Status=0x%08lx)\n"
|
||||
}
|
27
reactos/subsys/system/sm/resource.h
Normal file
27
reactos/subsys/system/sm/resource.h
Normal file
|
@ -0,0 +1,27 @@
|
|||
|
||||
|
||||
|
||||
#define RC_STRING_MAX_SIZE 200
|
||||
#define IDS_boot 100
|
||||
#define IDS_help 101
|
||||
#define IDS_info 102
|
||||
#define IDS_reboot 103
|
||||
#define IDS_shutdown 104
|
||||
#define IDS_boot_msg 205
|
||||
#define IDS_help_msg 206
|
||||
#define IDS_info_msg 207
|
||||
#define IDS_reboot_msg 208
|
||||
#define IDS_shutdown_msg 209
|
||||
|
||||
#define IDS_Unknown 300
|
||||
#define IDS_Not_Imp 301
|
||||
#define IDS_ID 302
|
||||
#define IDS_SM2 303
|
||||
#define IDS_SM1 304
|
||||
#define IDS_Status 305
|
||||
#define IDS_Mangers 306
|
||||
#define IDS_USING 307
|
||||
#define IDS_FAILS_MNG 308
|
||||
|
||||
|
||||
/* EOF */
|
|
@ -26,6 +26,8 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <tchar.h>
|
||||
#include "resource.h"
|
||||
|
||||
#define NTOS_MODE_USER
|
||||
#include <ntos.h>
|
||||
|
@ -39,10 +41,10 @@ HANDLE hSmApiPort = (HANDLE) 0;
|
|||
|
||||
typedef struct _SM_CMD_DESCRIPTOR
|
||||
{
|
||||
const char * Name;
|
||||
int (*EntryPoint)(int,char**);
|
||||
const char * Synopsis;
|
||||
const char * Description;
|
||||
TCHAR Name[RC_STRING_MAX_SIZE];
|
||||
int (*EntryPoint)(int,TCHAR**);
|
||||
TCHAR Synopsis[RC_STRING_MAX_SIZE];
|
||||
TCHAR Description[RC_STRING_MAX_SIZE];
|
||||
|
||||
} SM_CMD_DESCRIPTOR, *PSM_CMD_DESCRIPTOR;
|
||||
|
||||
|
@ -55,16 +57,19 @@ SM_CMD_DECL(shutdown);
|
|||
/* internal commands directory */
|
||||
SM_CMD_DESCRIPTOR Command [] =
|
||||
{
|
||||
{"boot", SM_CMD(boot), "boot subsystem_name", "bootstrap an optional environment subsystem;"},
|
||||
{"help", SM_CMD(help), "help [command]", "print help for command;"},
|
||||
{"info", SM_CMD(info), "info [subsystem_id]", "print information about a booted subsystem\n"
|
||||
{"boot", SM_CMD(boot), _T("boot subsystem_name"), _T("bootstrap an optional environment subsystem;")},
|
||||
{"help", SM_CMD(help), _T("help [command]"), _T("print help for command;")},
|
||||
{"info", SM_CMD(info), _T("info [subsystem_id]"), _T("print information about a booted subsystem\n"
|
||||
"if subsystem_id is omitted, a list of booted\n"
|
||||
"environment subsystems is printed."},
|
||||
{"reboot", SM_CMD(reboot), "reboot subsystem_id", "reboot an optional environment subsystem;"},
|
||||
{"shutdown", SM_CMD(shutdown), "shutdown subsystem_id", "shutdown an optional environment subsystem;"},
|
||||
"environment subsystems is printed.")},
|
||||
{"reboot", SM_CMD(reboot), _T("reboot subsystem_id"), _T("reboot an optional environment subsystem;")},
|
||||
{"shutdown", SM_CMD(shutdown), _T("shutdown subsystem_id"), _T("shutdown an optional environment subsystem;")},
|
||||
};
|
||||
|
||||
PSM_CMD_DESCRIPTOR LookupCommand (const char * CommandName)
|
||||
TCHAR UsageMessage[RC_STRING_MAX_SIZE];
|
||||
void loadlang(PSM_CMD_DESCRIPTOR );
|
||||
|
||||
PSM_CMD_DESCRIPTOR LookupCommand (const TCHAR * CommandName)
|
||||
{
|
||||
int i;
|
||||
const int command_count = (sizeof Command / sizeof Command[0]);
|
||||
|
@ -73,14 +78,16 @@ PSM_CMD_DESCRIPTOR LookupCommand (const char * CommandName)
|
|||
|
||||
for (i=0; (i < command_count); i ++)
|
||||
{
|
||||
if (0 == strcmp(CommandName, Command[i].Name))
|
||||
if (0 == _tcscmp(CommandName, Command[i].Name))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i == command_count)
|
||||
{
|
||||
fprintf(stderr, "Unknown command '%s'.\n", CommandName);
|
||||
LoadString( GetModuleHandle(NULL), IDS_Unknown, (LPTSTR) UsageMessage,RC_STRING_MAX_SIZE);
|
||||
|
||||
_ftprintf(stderr, _T("%s '%s'.\n"), UsageMessage, CommandName);
|
||||
return NULL;
|
||||
}
|
||||
return & Command [i];
|
||||
|
@ -97,18 +104,26 @@ SM_CMD_DECL(boot)
|
|||
|
||||
if (3 == argc)
|
||||
{
|
||||
#ifndef _UNICODE
|
||||
RtlInitAnsiString (& ProgramA, argv[2]);
|
||||
RtlAnsiStringToUnicodeString (& ProgramW, & ProgramA, TRUE);
|
||||
Status = SmExecuteProgram (hSmApiPort, & ProgramW);
|
||||
RtlFreeUnicodeString (& ProgramW);
|
||||
#else
|
||||
ProgramW = &argv[2];
|
||||
Status = SmExecuteProgram (hSmApiPort, & ProgramW);
|
||||
#endif
|
||||
if (STATUS_SUCCESS != Status)
|
||||
{
|
||||
printf ("Status 0x%08lx\n", Status);
|
||||
LoadString( GetModuleHandle(NULL), IDS_Status, (LPTSTR) UsageMessage,RC_STRING_MAX_SIZE);
|
||||
|
||||
_tprintf(UsageMessage, Status);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
argv[2]="boot";
|
||||
argv[2]=_T("boot");
|
||||
return SM_CMD_CALL(help,3,argv);
|
||||
}
|
||||
return rc;
|
||||
|
@ -125,7 +140,7 @@ SM_CMD_DECL(help)
|
|||
case 2:
|
||||
for (i=0; (i < (sizeof Command / sizeof Command[0])); i ++)
|
||||
{
|
||||
printf("%s\n", Command[i].Synopsis);
|
||||
_tprintf(_T("%s\n"), Command[i].Synopsis);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
|
@ -135,7 +150,7 @@ SM_CMD_DECL(help)
|
|||
rc = EXIT_FAILURE;
|
||||
break;
|
||||
}
|
||||
printf("%s\n%s\n\n%s\n",
|
||||
_tprintf(_T("%s\n%s\n\n%s\n"),
|
||||
cmd->Name,
|
||||
cmd->Synopsis,
|
||||
cmd->Description);
|
||||
|
@ -180,27 +195,29 @@ SM_CMD_DECL(info)
|
|||
& ReturnDataLength);
|
||||
if (STATUS_SUCCESS != Status)
|
||||
{
|
||||
printf ("Status 0x%08lx\n", Status);
|
||||
LoadString( GetModuleHandle(NULL), IDS_Status, (LPTSTR) UsageMessage,RC_STRING_MAX_SIZE);
|
||||
_tprintf(UsageMessage, Status);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
switch (argc)
|
||||
{
|
||||
case 2:
|
||||
printf ("SM SubSystem Directory\n\n");
|
||||
printf ("SSID PID Flags\n");
|
||||
printf ("---- -------- ------------\n");
|
||||
LoadString( GetModuleHandle(NULL), IDS_SM1, (LPTSTR) UsageMessage,RC_STRING_MAX_SIZE);
|
||||
_tprintf(UsageMessage);
|
||||
|
||||
LoadString( GetModuleHandle(NULL), IDS_SM2, (LPTSTR) UsageMessage,RC_STRING_MAX_SIZE);
|
||||
for (i = 0; i < Info.bi.SubSystemCount; i ++)
|
||||
{
|
||||
printf ("%04x %08lx %04x\n",
|
||||
_tprintf(UsageMessage,
|
||||
Info.bi.SubSystem[i].Id,
|
||||
Info.bi.SubSystem[i].ProcessId,
|
||||
Info.bi.SubSystem[i].Flags);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
printf ("SubSystem ID: %d\n", Info.ssi.SubSystemId);
|
||||
printf (" Flags: %04x\n", Info.ssi.Flags);
|
||||
printf (" Process ID: %ld\n", Info.ssi.ProcessId);
|
||||
LoadString( GetModuleHandle(NULL), IDS_ID, (LPTSTR) UsageMessage,RC_STRING_MAX_SIZE);
|
||||
|
||||
_tprintf (UsageMessage, Info.ssi.SubSystemId, Info.ssi.Flags, Info.ssi.ProcessId);
|
||||
wprintf(L" NSRootNode: '%s'\n", Info.ssi.NameSpaceRootNode);
|
||||
break;
|
||||
default:
|
||||
|
@ -212,8 +229,10 @@ SM_CMD_DECL(info)
|
|||
SM_CMD_DECL(shutdown)
|
||||
{
|
||||
int rc = EXIT_SUCCESS;
|
||||
|
||||
fprintf(stderr,"not implemented\n");
|
||||
|
||||
LoadString( GetModuleHandle(NULL), IDS_Not_Imp, (LPTSTR) UsageMessage,RC_STRING_MAX_SIZE);
|
||||
|
||||
_ftprintf(stderr,UsageMessage);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
@ -228,19 +247,18 @@ SM_CMD_DECL(reboot)
|
|||
}
|
||||
|
||||
/* print command's synopsys */
|
||||
int print_synopsys (int argc, char *argv[])
|
||||
int print_synopsys (int argc, TCHAR *argv[])
|
||||
{
|
||||
fprintf (stderr, "ReactOS/Win32 Session Manager Control Tool\n\n");
|
||||
printf ("Usage:\n"
|
||||
"\tsm\n"
|
||||
"\tsm help [command]\n"
|
||||
"\tsm command [arguments]\n\n"
|
||||
"'sm help' will print the list of valid commands.\n");
|
||||
LoadString( GetModuleHandle(NULL), IDS_Mangers, (LPTSTR) UsageMessage,RC_STRING_MAX_SIZE);
|
||||
_ftprintf (stderr, UsageMessage);
|
||||
|
||||
LoadString( GetModuleHandle(NULL), IDS_USING, (LPTSTR) UsageMessage,RC_STRING_MAX_SIZE);
|
||||
_tprintf (UsageMessage);
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
/* parse and execute */
|
||||
int pande (int argc, char *argv[])
|
||||
int pande (int argc, TCHAR *argv[])
|
||||
{
|
||||
PSM_CMD_DESCRIPTOR Command = NULL;
|
||||
NTSTATUS Status = STATUS_SUCCESS;
|
||||
|
@ -258,12 +276,26 @@ int pande (int argc, char *argv[])
|
|||
/* ...and execute it */
|
||||
return Command->EntryPoint (argc, argv);
|
||||
}
|
||||
fprintf (stderr, "Failed to connect to the Session Manager! (Status=0x%08lx)\n", Status);
|
||||
LoadString( GetModuleHandle(NULL), IDS_FAILS_MNG, (LPTSTR) UsageMessage,RC_STRING_MAX_SIZE);
|
||||
_ftprintf (stderr, UsageMessage, Status);
|
||||
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
int main (int argc, char *argv[])
|
||||
void loadlang(PSM_CMD_DESCRIPTOR cmd)
|
||||
{
|
||||
int i=0;
|
||||
if (cmd==NULL) return;
|
||||
for (i=0;i < 5; i++)
|
||||
{
|
||||
LoadString( GetModuleHandle(NULL), IDS_boot+i, (LPTSTR) &cmd->Synopsis[i],RC_STRING_MAX_SIZE);
|
||||
}
|
||||
}
|
||||
|
||||
int _tmain (int argc, TCHAR *argv[])
|
||||
{
|
||||
loadlang(Command);
|
||||
|
||||
return (1==argc)
|
||||
? print_synopsys (argc, argv)
|
||||
: pande (argc, argv);
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
#include <windows.h>
|
||||
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS/Win32 Session Manager Control Tool\0"
|
||||
#define REACTOS_STR_INTERNAL_NAME "sm\0"
|
||||
#define REACTOS_STR_ORIGINAL_FILENAME "sm.exe\0"
|
||||
#include <reactos/version.rc>
|
||||
|
||||
#include "En.rc"
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue