mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 17:42:58 +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 <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <tchar.h>
|
||||||
|
#include "resource.h"
|
||||||
|
|
||||||
#define NTOS_MODE_USER
|
#define NTOS_MODE_USER
|
||||||
#include <ntos.h>
|
#include <ntos.h>
|
||||||
|
@ -39,10 +41,10 @@ HANDLE hSmApiPort = (HANDLE) 0;
|
||||||
|
|
||||||
typedef struct _SM_CMD_DESCRIPTOR
|
typedef struct _SM_CMD_DESCRIPTOR
|
||||||
{
|
{
|
||||||
const char * Name;
|
TCHAR Name[RC_STRING_MAX_SIZE];
|
||||||
int (*EntryPoint)(int,char**);
|
int (*EntryPoint)(int,TCHAR**);
|
||||||
const char * Synopsis;
|
TCHAR Synopsis[RC_STRING_MAX_SIZE];
|
||||||
const char * Description;
|
TCHAR Description[RC_STRING_MAX_SIZE];
|
||||||
|
|
||||||
} SM_CMD_DESCRIPTOR, *PSM_CMD_DESCRIPTOR;
|
} SM_CMD_DESCRIPTOR, *PSM_CMD_DESCRIPTOR;
|
||||||
|
|
||||||
|
@ -55,16 +57,19 @@ SM_CMD_DECL(shutdown);
|
||||||
/* internal commands directory */
|
/* internal commands directory */
|
||||||
SM_CMD_DESCRIPTOR Command [] =
|
SM_CMD_DESCRIPTOR Command [] =
|
||||||
{
|
{
|
||||||
{"boot", SM_CMD(boot), "boot subsystem_name", "bootstrap an optional environment subsystem;"},
|
{"boot", SM_CMD(boot), _T("boot subsystem_name"), _T("bootstrap an optional environment subsystem;")},
|
||||||
{"help", SM_CMD(help), "help [command]", "print help for command;"},
|
{"help", SM_CMD(help), _T("help [command]"), _T("print help for command;")},
|
||||||
{"info", SM_CMD(info), "info [subsystem_id]", "print information about a booted subsystem\n"
|
{"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"
|
"if subsystem_id is omitted, a list of booted\n"
|
||||||
"environment subsystems is printed."},
|
"environment subsystems is printed.")},
|
||||||
{"reboot", SM_CMD(reboot), "reboot subsystem_id", "reboot an optional environment subsystem;"},
|
{"reboot", SM_CMD(reboot), _T("reboot subsystem_id"), _T("reboot an optional environment subsystem;")},
|
||||||
{"shutdown", SM_CMD(shutdown), "shutdown subsystem_id", "shutdown 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;
|
int i;
|
||||||
const int command_count = (sizeof Command / sizeof Command[0]);
|
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 ++)
|
for (i=0; (i < command_count); i ++)
|
||||||
{
|
{
|
||||||
if (0 == strcmp(CommandName, Command[i].Name))
|
if (0 == _tcscmp(CommandName, Command[i].Name))
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (i == command_count)
|
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 NULL;
|
||||||
}
|
}
|
||||||
return & Command [i];
|
return & Command [i];
|
||||||
|
@ -97,18 +104,26 @@ SM_CMD_DECL(boot)
|
||||||
|
|
||||||
if (3 == argc)
|
if (3 == argc)
|
||||||
{
|
{
|
||||||
|
#ifndef _UNICODE
|
||||||
RtlInitAnsiString (& ProgramA, argv[2]);
|
RtlInitAnsiString (& ProgramA, argv[2]);
|
||||||
RtlAnsiStringToUnicodeString (& ProgramW, & ProgramA, TRUE);
|
RtlAnsiStringToUnicodeString (& ProgramW, & ProgramA, TRUE);
|
||||||
Status = SmExecuteProgram (hSmApiPort, & ProgramW);
|
Status = SmExecuteProgram (hSmApiPort, & ProgramW);
|
||||||
RtlFreeUnicodeString (& ProgramW);
|
RtlFreeUnicodeString (& ProgramW);
|
||||||
|
#else
|
||||||
|
ProgramW = &argv[2];
|
||||||
|
Status = SmExecuteProgram (hSmApiPort, & ProgramW);
|
||||||
|
#endif
|
||||||
if (STATUS_SUCCESS != Status)
|
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
|
else
|
||||||
{
|
{
|
||||||
argv[2]="boot";
|
argv[2]=_T("boot");
|
||||||
return SM_CMD_CALL(help,3,argv);
|
return SM_CMD_CALL(help,3,argv);
|
||||||
}
|
}
|
||||||
return rc;
|
return rc;
|
||||||
|
@ -125,7 +140,7 @@ SM_CMD_DECL(help)
|
||||||
case 2:
|
case 2:
|
||||||
for (i=0; (i < (sizeof Command / sizeof Command[0])); i ++)
|
for (i=0; (i < (sizeof Command / sizeof Command[0])); i ++)
|
||||||
{
|
{
|
||||||
printf("%s\n", Command[i].Synopsis);
|
_tprintf(_T("%s\n"), Command[i].Synopsis);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
|
@ -135,7 +150,7 @@ SM_CMD_DECL(help)
|
||||||
rc = EXIT_FAILURE;
|
rc = EXIT_FAILURE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
printf("%s\n%s\n\n%s\n",
|
_tprintf(_T("%s\n%s\n\n%s\n"),
|
||||||
cmd->Name,
|
cmd->Name,
|
||||||
cmd->Synopsis,
|
cmd->Synopsis,
|
||||||
cmd->Description);
|
cmd->Description);
|
||||||
|
@ -180,27 +195,29 @@ SM_CMD_DECL(info)
|
||||||
& ReturnDataLength);
|
& ReturnDataLength);
|
||||||
if (STATUS_SUCCESS != Status)
|
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;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
switch (argc)
|
switch (argc)
|
||||||
{
|
{
|
||||||
case 2:
|
case 2:
|
||||||
printf ("SM SubSystem Directory\n\n");
|
LoadString( GetModuleHandle(NULL), IDS_SM1, (LPTSTR) UsageMessage,RC_STRING_MAX_SIZE);
|
||||||
printf ("SSID PID Flags\n");
|
_tprintf(UsageMessage);
|
||||||
printf ("---- -------- ------------\n");
|
|
||||||
|
LoadString( GetModuleHandle(NULL), IDS_SM2, (LPTSTR) UsageMessage,RC_STRING_MAX_SIZE);
|
||||||
for (i = 0; i < Info.bi.SubSystemCount; i ++)
|
for (i = 0; i < Info.bi.SubSystemCount; i ++)
|
||||||
{
|
{
|
||||||
printf ("%04x %08lx %04x\n",
|
_tprintf(UsageMessage,
|
||||||
Info.bi.SubSystem[i].Id,
|
Info.bi.SubSystem[i].Id,
|
||||||
Info.bi.SubSystem[i].ProcessId,
|
Info.bi.SubSystem[i].ProcessId,
|
||||||
Info.bi.SubSystem[i].Flags);
|
Info.bi.SubSystem[i].Flags);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
printf ("SubSystem ID: %d\n", Info.ssi.SubSystemId);
|
LoadString( GetModuleHandle(NULL), IDS_ID, (LPTSTR) UsageMessage,RC_STRING_MAX_SIZE);
|
||||||
printf (" Flags: %04x\n", Info.ssi.Flags);
|
|
||||||
printf (" Process ID: %ld\n", Info.ssi.ProcessId);
|
_tprintf (UsageMessage, Info.ssi.SubSystemId, Info.ssi.Flags, Info.ssi.ProcessId);
|
||||||
wprintf(L" NSRootNode: '%s'\n", Info.ssi.NameSpaceRootNode);
|
wprintf(L" NSRootNode: '%s'\n", Info.ssi.NameSpaceRootNode);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -212,8 +229,10 @@ SM_CMD_DECL(info)
|
||||||
SM_CMD_DECL(shutdown)
|
SM_CMD_DECL(shutdown)
|
||||||
{
|
{
|
||||||
int rc = EXIT_SUCCESS;
|
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;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -228,19 +247,18 @@ SM_CMD_DECL(reboot)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* print command's synopsys */
|
/* 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");
|
LoadString( GetModuleHandle(NULL), IDS_Mangers, (LPTSTR) UsageMessage,RC_STRING_MAX_SIZE);
|
||||||
printf ("Usage:\n"
|
_ftprintf (stderr, UsageMessage);
|
||||||
"\tsm\n"
|
|
||||||
"\tsm help [command]\n"
|
LoadString( GetModuleHandle(NULL), IDS_USING, (LPTSTR) UsageMessage,RC_STRING_MAX_SIZE);
|
||||||
"\tsm command [arguments]\n\n"
|
_tprintf (UsageMessage);
|
||||||
"'sm help' will print the list of valid commands.\n");
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* parse and execute */
|
/* parse and execute */
|
||||||
int pande (int argc, char *argv[])
|
int pande (int argc, TCHAR *argv[])
|
||||||
{
|
{
|
||||||
PSM_CMD_DESCRIPTOR Command = NULL;
|
PSM_CMD_DESCRIPTOR Command = NULL;
|
||||||
NTSTATUS Status = STATUS_SUCCESS;
|
NTSTATUS Status = STATUS_SUCCESS;
|
||||||
|
@ -258,12 +276,26 @@ int pande (int argc, char *argv[])
|
||||||
/* ...and execute it */
|
/* ...and execute it */
|
||||||
return Command->EntryPoint (argc, argv);
|
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;
|
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)
|
return (1==argc)
|
||||||
? print_synopsys (argc, argv)
|
? print_synopsys (argc, argv)
|
||||||
: pande (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_FILE_DESCRIPTION "ReactOS/Win32 Session Manager Control Tool\0"
|
||||||
#define REACTOS_STR_INTERNAL_NAME "sm\0"
|
#define REACTOS_STR_INTERNAL_NAME "sm\0"
|
||||||
#define REACTOS_STR_ORIGINAL_FILENAME "sm.exe\0"
|
#define REACTOS_STR_ORIGINAL_FILENAME "sm.exe\0"
|
||||||
#include <reactos/version.rc>
|
#include <reactos/version.rc>
|
||||||
|
|
||||||
|
#include "En.rc"
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue