Author: hyperion
Date: Mon Feb 26 18:32:19 2007
New Revision: 25908
URL: http://svn.reactos.org/svn/reactos?rev=25908&view=rev
Log:
modified include/reactos/libs/pseh/framebased.h
Removed some bad optimization ideas that never worked anyway. If you want optimization, use the uglier _SEHX macros. If you enjoy several huge, non-optimizable nested loops in all of your functions, just keep using the _SEH form
deleted include/reactos/libs/pseh/native.h
deleted include/reactos/libs/pseh/prettybased.h
Deleted some really bad ideas that nobody used or maintained anyway
All and all else
Reformatted. Goodbye one-space indentation, hello tabs
Removed:
trunk/reactos/include/reactos/libs/pseh/native.h
trunk/reactos/include/reactos/libs/pseh/prettybased.h
Modified:
trunk/reactos/include/reactos/libs/pseh/excpt.h
trunk/reactos/include/reactos/libs/pseh/framebased.h
trunk/reactos/include/reactos/libs/pseh/framebased/internal.h
trunk/reactos/include/reactos/libs/pseh/pseh.h
trunk/reactos/include/reactos/libs/pseh/setjmp.h
trunk/reactos/lib/pseh/framebased.c
trunk/reactos/lib/pseh/i386/framebased.asm
trunk/reactos/lib/pseh/i386/setjmp.asm
Modified: trunk/reactos/include/reactos/libs/pseh/excpt.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/libs/pseh/…
==============================================================================
--- trunk/reactos/include/reactos/libs/pseh/excpt.h (original)
+++ trunk/reactos/include/reactos/libs/pseh/excpt.h Mon Feb 26 18:32:19 2007
@@ -1,23 +1,23 @@
/*
- Copyright (c) 2004/2005 KJK::Hyperion
-
- Permission is hereby granted, free of charge, to any person obtaining a copy of
- this software and associated documentation files (the "Software"), to deal in
- the Software without restriction, including without limitation the rights to
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
- of the Software, and to permit persons to whom the Software is furnished to do
- so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
+ Copyright (c) 2004/2005 KJK::Hyperion
+
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and associated documentation files (the "Software"),
+ to deal in the Software without restriction, including without limitation
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ and/or sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
*/
#ifndef KJK_PSEH_EXCPT_H_
Modified: trunk/reactos/include/reactos/libs/pseh/framebased.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/libs/pseh/…
==============================================================================
--- trunk/reactos/include/reactos/libs/pseh/framebased.h (original)
+++ trunk/reactos/include/reactos/libs/pseh/framebased.h Mon Feb 26 18:32:19 2007
@@ -1,23 +1,23 @@
/*
- Copyright (c) 2004/2005 KJK::Hyperion
-
- Permission is hereby granted, free of charge, to any person obtaining a copy of
- this software and associated documentation files (the "Software"), to deal in
- the Software without restriction, including without limitation the rights to
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
- of the Software, and to permit persons to whom the Software is furnished to do
- so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
+ Copyright (c) 2004/2005 KJK::Hyperion
+
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and associated documentation files (the "Software"),
+ to deal in the Software without restriction, including without limitation
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ and/or sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
*/
#ifndef KJK_PSEH_FRAMEBASED_H_
@@ -27,47 +27,47 @@
#include <pseh/excpt.h>
#ifndef offsetof
-# include <stddef.h>
+# include <stddef.h>
#endif
/*
- Fall back to non-optimal, non-native NLG implementation for environments
- without their own (e.g., currently, kernel-mode ReactOS/Windows). THIS IS NOT
- RECOMMENDED AND IT WILL BE DROPPED IN A FUTURE VERSION BECAUSE IT MAY CAUSE
- SEVERE STACK CORRUPTION. REIMPLEMENT OR PORT YOUR COMPILER'S NATIVE NLG
- IMPLEMENTATION INSTEAD.
+ Fall back to non-optimal, non-native NLG implementation for environments
+ without their own (e.g., currently, kernel-mode ReactOS/Windows). THIS IS NOT
+ RECOMMENDED AND IT WILL BE DROPPED IN A FUTURE VERSION BECAUSE IT MAY CAUSE
+ SEVERE STACK CORRUPTION. REIMPLEMENT OR PORT YOUR COMPILER'S NATIVE NLG
+ IMPLEMENTATION INSTEAD.
*/
#ifdef _SEH_NO_NATIVE_NLG
-# include <pseh/setjmp.h>
+# include <pseh/setjmp.h>
#else
-# include <setjmp.h>
-# define _SEHLongJmp longjmp
-# define _SEHSetJmp setjmp
-# define _SEHJmpBuf_t jmp_buf
-#endif
-unsigned long DbgPrint(const char * Format,...);
+# include <setjmp.h>
+# define _SEHLongJmp longjmp
+# define _SEHSetJmp setjmp
+# define _SEHJmpBuf_t jmp_buf
+#endif
+
typedef struct __SEHFrame
{
- _SEHPortableFrame_t SEH_Header;
- void * SEH_Locals;
+ _SEHPortableFrame_t SEH_Header;
+ void * SEH_Locals;
}
_SEHFrame_t;
typedef struct __SEHTryLevel
{
- _SEHPortableTryLevel_t ST_Header;
- _SEHJmpBuf_t ST_JmpBuf;
+ _SEHPortableTryLevel_t ST_Header;
+ _SEHJmpBuf_t ST_JmpBuf;
}
_SEHTryLevel_t;
static __declspec(noreturn) __inline void __stdcall _SEHCompilerSpecificHandler
(
- _SEHPortableTryLevel_t * trylevel
+ _SEHPortableTryLevel_t * trylevel
)
{
- _SEHTryLevel_t * mytrylevel;
- mytrylevel = _SEH_CONTAINING_RECORD(trylevel, _SEHTryLevel_t, ST_Header);
- _SEHLongJmp(mytrylevel->ST_JmpBuf, 1);
+ _SEHTryLevel_t * mytrylevel;
+ mytrylevel = _SEH_CONTAINING_RECORD(trylevel, _SEHTryLevel_t, ST_Header);
+ _SEHLongJmp(mytrylevel->ST_JmpBuf, 1);
}
static const int _SEHScopeKind = 1;
@@ -76,14 +76,14 @@
/* SHARED LOCALS */
/* Access the locals for the current frame */
#define _SEH_ACCESS_LOCALS(LOCALS_) \
- _SEH_LOCALS_TYPENAME(LOCALS_) * _SEHPLocals; \
- _SEHPLocals = \
- _SEH_PVOID_CAST \
- ( \
- _SEH_LOCALS_TYPENAME(LOCALS_) *, \
- _SEH_CONTAINING_RECORD(_SEHPortableFrame, _SEHFrame_t, SEH_Header) \
- ->SEH_Locals \
- );
+ _SEH_LOCALS_TYPENAME(LOCALS_) * _SEHPLocals; \
+ _SEHPLocals = \
+ _SEH_PVOID_CAST \
+ ( \
+ _SEH_LOCALS_TYPENAME(LOCALS_) *, \
+ _SEH_CONTAINING_RECORD(_SEHPortableFrame, _SEHFrame_t, SEH_Header) \
+ ->SEH_Locals \
+ );
/* Access local variable VAR_ */
#define _SEH_VAR(VAR_) _SEHPLocals->VAR_
@@ -91,292 +91,265 @@
/* FILTER FUNCTIONS */
/* Declares a filter function's prototype */
#define _SEH_FILTER(NAME_) \
- long __stdcall NAME_ \
- ( \
- struct _EXCEPTION_POINTERS * _SEHExceptionPointers, \
- struct __SEHPortableFrame * _SEHPortableFrame \
- )
+ long __stdcall NAME_ \
+ ( \
+ struct _EXCEPTION_POINTERS * _SEHExceptionPointers, \
+ struct __SEHPortableFrame * _SEHPortableFrame \
+ )
/* Declares a static filter */
#define _SEH_STATIC_FILTER(ACTION_) ((_SEHFilter_t)((ACTION_) + 2))
/* Declares a PSEH filter wrapping a regular filter function */
#define _SEH_WRAP_FILTER(WRAPPER_, NAME_) \
- static __inline _SEH_FILTER(WRAPPER_) \
- { \
- return (NAME_)(_SEHExceptionPointers); \
- }
+ static __inline _SEH_FILTER(WRAPPER_) \
+ { \
+ return (NAME_)(_SEHExceptionPointers); \
+ }
/* FINALLY FUNCTIONS */
/* Declares a finally function's prototype */
#define _SEH_FINALLYFUNC(NAME_) \
- void __stdcall NAME_ \
- ( \
- struct __SEHPortableFrame * _SEHPortableFrame \
- )
+ void __stdcall NAME_ \
+ ( \
+ struct __SEHPortableFrame * _SEHPortableFrame \
+ )
/* Declares a PSEH finally function wrapping a regular function */
#define _SEH_WRAP_FINALLY(WRAPPER_, NAME_) \
- _SEH_WRAP_FINALLY_ARGS(WRAPPER_, NAME_, ())
+ _SEH_WRAP_FINALLY_ARGS(WRAPPER_, NAME_, ())
#define _SEH_WRAP_FINALLY_ARGS(WRAPPER_, NAME_, ARGS_) \
- static __inline _SEH_FINALLYFUNC(WRAPPER_) \
- { \
- NAME_ ARGS_; \
- }
+ static __inline _SEH_FINALLYFUNC(WRAPPER_) \
+ { \
+ NAME_ ARGS_; \
+ }
#define _SEH_WRAP_FINALLY_LOCALS_ARGS(WRAPPER_, LOCALS_, NAME_, ARGS_) \
- static __inline _SEH_FINALLYFUNC(WRAPPER_) \
- { \
- _SEH_ACCESS_LOCALS(LOCALS_); \
- NAME_ ARGS_; \
- }
+ static __inline _SEH_FINALLYFUNC(WRAPPER_) \
+ { \
+ _SEH_ACCESS_LOCALS(LOCALS_); \
+ NAME_ ARGS_; \
+ }
/* SAFE BLOCKS */
#define _SEHX_TRY_FINALLY(FINALLY_) \
- _SEH_TRY_FILTER_FINALLY \
- ( \
- _SEH_STATIC_FILTER(_SEH_CONTINUE_SEARCH), \
- (FINALLY_) \
- )
+ _SEH_TRY_FILTER_FINALLY \
+ ( \
+ _SEH_STATIC_FILTER(_SEH_CONTINUE_SEARCH), \
+ (FINALLY_) \
+ )
#define _SEHX_END_FINALLY _SEH_HANDLE _SEH_END
#define _SEHX_TRY_FILTER(FILTER_) \
- _SEH_TRY_FILTER_FINALLY((FILTER_), 0)
+ _SEH_TRY_FILTER_FINALLY((FILTER_), 0)
#define _SEHX_TRY_HANDLE_FINALLY(FINALLY_) \
- _SEH_TRY_FILTER_FINALLY \
- ( \
- _SEH_STATIC_FILTER(_SEH_EXECUTE_HANDLER), \
- (FINALLY_) \
- )
+ _SEH_TRY_FILTER_FINALLY \
+ ( \
+ _SEH_STATIC_FILTER(_SEH_EXECUTE_HANDLER), \
+ (FINALLY_) \
+ )
#define _SEHX_TRY \
- _SEH_TRY_HANDLE_FINALLY(0)
+ _SEH_TRY_HANDLE_FINALLY(0)
#ifdef __cplusplus
-# define _SEH_DECLARE_HANDLERS(FILTER_, FINALLY_) \
- static const _SEHHandlers_t _SEHHandlers = { (FILTER_), (FINALLY_) };
+# define _SEH_DECLARE_HANDLERS(FILTER_, FINALLY_) \
+ static const _SEHHandlers_t _SEHHandlers = { (FILTER_), (FINALLY_) };
#else
-# define _SEH_DECLARE_HANDLERS(FILTER_, FINALLY_) \
- _SEHHandlers_t _SEHHandlers = { (0), (0) }; \
- _SEHHandlers.SH_Filter = (FILTER_); \
- _SEHHandlers.SH_Finally = (FINALLY_);
+# define _SEH_DECLARE_HANDLERS(FILTER_, FINALLY_) \
+ _SEHHandlers_t _SEHHandlers = { (0), (0) }; \
+ _SEHHandlers.SH_Filter = (FILTER_); \
+ _SEHHandlers.SH_Finally = (FINALLY_);
#endif
#define _SEHX_TRY_FILTER_FINALLY(FILTER_, FINALLY_) \
- { \
- _SEHPortableFrame_t * const _SEHCurPortableFrame = _SEHPortableFrame; \
- \
- { \
- _SEHFrame_t _SEHFrame; \
- _SEHTryLevel_t _SEHTryLevel; \
- _SEHPortableFrame_t * const _SEHPortableFrame = \
- _SEHScopeKind ? &_SEHFrame.SEH_Header : _SEHCurPortableFrame; \
- \
- (void)_SEHPortableFrame; \
- \
- _SEH_DECLARE_HANDLERS((FILTER_), (FINALLY_)); \
- \
- _SEHTryLevel.ST_Header.SPT_Handlers = &_SEHHandlers; \
- \
- if(_SEHScopeKind) \
- { \
- if(&_SEHLocals != _SEHDummyLocals) \
- _SEHFrame.SEH_Locals = &_SEHLocals; \
- \
- _SEHFrame.SEH_Header.SPF_Handler = _SEHCompilerSpecificHandler; \
- _SEHEnterFrame(&_SEHFrame.SEH_Header, &_SEHTryLevel.ST_Header); \
- } \
- else \
- _SEHEnterTry(&_SEHTryLevel.ST_Header); \
- \
- { \
- static const int _SEHScopeKind = 0; \
- (void)_SEHScopeKind; \
- \
- if(_SEHSetJmp(_SEHTryLevel.ST_JmpBuf) == 0) \
- { \
- for(;;) \
- {
+ { \
+ _SEHPortableFrame_t * const _SEHCurPortableFrame = _SEHPortableFrame; \
+ \
+ { \
+ _SEHFrame_t _SEHFrame; \
+ _SEHTryLevel_t _SEHTryLevel; \
+ _SEHPortableFrame_t * const _SEHPortableFrame = \
+ _SEHScopeKind ? &_SEHFrame.SEH_Header : _SEHCurPortableFrame; \
+ \
+ (void)_SEHPortableFrame; \
+ \
+ _SEH_DECLARE_HANDLERS((FILTER_), (FINALLY_)); \
+ \
+ _SEHTryLevel.ST_Header.SPT_Handlers = &_SEHHandlers; \
+ \
+ if(_SEHScopeKind) \
+ { \
+ if(&_SEHLocals != _SEHDummyLocals) \
+ _SEHFrame.SEH_Locals = &_SEHLocals; \
+ \
+ _SEHFrame.SEH_Header.SPF_Handler = _SEHCompilerSpecificHandler; \
+ _SEHEnterFrame(&_SEHFrame.SEH_Header, &_SEHTryLevel.ST_Header); \
+ } \
+ else \
+ _SEHEnterTry(&_SEHTryLevel.ST_Header); \
+ \
+ { \
+ static const int _SEHScopeKind = 0; \
+ (void)_SEHScopeKind; \
+ \
+ if(_SEHSetJmp(_SEHTryLevel.ST_JmpBuf) == 0) \
+ { \
+ for(;;) \
+ {
#define _SEHX_HANDLE \
- \
- break; \
- } \
- \
- _SEHLeave(); \
- } \
- else \
- { \
- _SEHLeave();
+ \
+ break; \
+ } \
+ \
+ _SEHLeave(); \
+ } \
+ else \
+ { \
+ _SEHLeave();
#define _SEHX_END \
- } \
- \
- if(_SEHHandlers.SH_Finally) \
- _SEHHandlers.SH_Finally(_SEHPortableFrame); \
- } \
- } \
- }
+ } \
+ \
+ if(_SEHHandlers.SH_Finally) \
+ _SEHHandlers.SH_Finally(_SEHPortableFrame); \
+ } \
+ } \
+ }
#define _SEHX_LEAVE break
#define _SEHX_GetExceptionCode() (unsigned long)(_SEHPortableFrame->SPF_Code)
#define _SEHX_GetExceptionPointers() \
- ((struct _EXCEPTION_POINTERS *)_SEHExceptionPointers)
+ ((struct _EXCEPTION_POINTERS *)_SEHExceptionPointers)
#define _SEHX_AbnormalTermination() (_SEHPortableFrame->SPF_Code != 0)
/* New syntax */
-/*
- NOTE: do not move, remove or modify any instance of _SEH2_ASSUME and
- _SEH2_ASSUMING without doing extensive tests for correctness. Compilers can
- generate the wrong code in presence of __assume in unpredictable ways. BE SURE
- IT DOESN'T HAPPEN
-*/
-#if defined(_MSC_VER) && (_MSC_VER > 1200)
-# define _SEH2_ASSUME(X_) __assume(X_)
-# if !defined(_SEH_NO_NATIVE_NLG)
- /*
- If we use the native setjmp, the compiler stops keeping track of variables, so
- their actual values don't matter anymore. Optimize out some assignments
- */
-# define _SEH2_ASSUMING(X_)
-# else
- /* No native setjmp, no magic, no assumptions. Actually set the values */
-# define _SEH2_ASSUMING(X_) X_
-# endif
+#ifdef __cplusplus
+# define _SEH2_INIT_CONST static const
#else
-# define _SEH2_ASSUME(X_)
-# define _SEH2_ASSUMING(X_) X_
-#endif
-
-#ifdef __cplusplus
-# define _SEH2_INIT_CONST static const
-#else
-# define _SEH2_INIT_CONST register const
+# define _SEH2_INIT_CONST register const
#endif
#define _SEH_LEAVE break
#define _SEH_TRY \
- { \
- _SEH2_INIT_CONST int _SEH2TopTryLevel = (_SEHScopeKind != 0); \
- _SEHPortableFrame_t * const _SEH2CurPortableFrame = _SEHPortableFrame; \
- \
- { \
- static const int _SEHScopeKind = 0; \
- register int _SEH2State = 0; \
- register int _SEH2Handle = 0; \
- _SEHFrame_t _SEH2Frame; \
- _SEHTryLevel_t _SEH2TryLevel; \
- _SEHPortableFrame_t * const _SEHPortableFrame = \
- _SEH2TopTryLevel ? &_SEH2Frame.SEH_Header : _SEH2CurPortableFrame; \
- \
- (void)_SEHScopeKind; \
- (void)_SEHPortableFrame; \
- (void)_SEH2Handle; \
- \
- for(;;) \
- { \
- if(_SEH2State) \
- { \
- for(;;) \
- { \
- {
+ { \
+ _SEH2_INIT_CONST int _SEH2TopTryLevel = (_SEHScopeKind != 0); \
+ _SEHPortableFrame_t * const _SEH2CurPortableFrame = _SEHPortableFrame; \
+ \
+ { \
+ static const int _SEHScopeKind = 0; \
+ register int _SEH2State = 0; \
+ register int _SEH2Handle = 0; \
+ _SEHFrame_t _SEH2Frame; \
+ _SEHTryLevel_t _SEH2TryLevel; \
+ _SEHPortableFrame_t * const _SEHPortableFrame = \
+ _SEH2TopTryLevel ? &_SEH2Frame.SEH_Header : _SEH2CurPortableFrame; \
+ \
+ (void)_SEHScopeKind; \
+ (void)_SEHPortableFrame; \
+ (void)_SEH2Handle; \
+ \
+ for(;;) \
+ { \
+ if(_SEH2State) \
+ { \
+ for(;;) \
+ { \
+ {
#define _SEH_EXCEPT(FILTER_) \
- } \
- \
- break; \
- } \
- \
- _SEH2_ASSUME(_SEH2Handle == 0); \
- break; \
- } \
- else \
- { \
- _SEH_DECLARE_HANDLERS((FILTER_), 0); \
- \
- _SEH2TryLevel.ST_Header.SPT_Handlers = &_SEHHandlers; \
- \
- if(_SEH2TopTryLevel) \
- { \
- if(&_SEHLocals != _SEHDummyLocals) \
- _SEH2Frame.SEH_Locals = &_SEHLocals; \
- \
- _SEH2Frame.SEH_Header.SPF_Handler = _SEHCompilerSpecificHandler; \
- _SEHEnterFrame(&_SEH2Frame.SEH_Header, &_SEH2TryLevel.ST_Header); \
- } \
- else \
- _SEHEnterTry(&_SEH2TryLevel.ST_Header); \
- \
- if((_SEH2Handle = _SEHSetJmp(_SEH2TryLevel.ST_JmpBuf)) == 0) \
- { \
- _SEH2_ASSUMING(++ _SEH2State); \
- _SEH2_ASSUME(_SEH2State != 0); \
- continue; \
- } \
- else \
- { \
- break; \
- } \
- } \
- \
- break; \
- } \
- \
- _SEHLeave(); \
- \
- if(_SEH2Handle) \
- {
+ } \
+ \
+ break; \
+ } \
+ \
+ break; \
+ } \
+ else \
+ { \
+ _SEH_DECLARE_HANDLERS((FILTER_), 0); \
+ \
+ _SEH2TryLevel.ST_Header.SPT_Handlers = &_SEHHandlers; \
+ \
+ if(_SEH2TopTryLevel) \
+ { \
+ if(&_SEHLocals != _SEHDummyLocals) \
+ _SEH2Frame.SEH_Locals = &_SEHLocals; \
+ \
+ _SEH2Frame.SEH_Header.SPF_Handler = _SEHCompilerSpecificHandler; \
+ _SEHEnterFrame(&_SEH2Frame.SEH_Header, &_SEH2TryLevel.ST_Header); \
+ } \
+ else \
+ _SEHEnterTry(&_SEH2TryLevel.ST_Header); \
+ \
+ if((_SEH2Handle = _SEHSetJmp(_SEH2TryLevel.ST_JmpBuf)) == 0) \
+ { \
+ continue; \
+ } \
+ else \
+ { \
+ break; \
+ } \
+ } \
+ \
+ break; \
+ } \
+ \
+ _SEHLeave(); \
+ \
+ if(_SEH2Handle) \
+ {
#define _SEH_FINALLY(FINALLY_) \
- } \
- \
- break; \
- } \
- \
- _SEHLeave(); \
- break; \
- } \
- else \
- { \
- _SEH_DECLARE_HANDLERS(0, (FINALLY_)); \
- \
- _SEH2TryLevel.ST_Header.SPT_Handlers = &_SEHHandlers; \
- \
- if(_SEH2TopTryLevel) \
- { \
- if(&_SEHLocals != _SEHDummyLocals) \
- _SEH2Frame.SEH_Locals = &_SEHLocals; \
- \
- _SEH2Frame.SEH_Header.SPF_Handler = 0; \
- _SEHEnterFrame(&_SEH2Frame.SEH_Header, &_SEH2TryLevel.ST_Header); \
- } \
- else \
- _SEHEnterTry(&_SEH2TryLevel.ST_Header); \
- \
- ++ _SEH2State; \
- _SEH2_ASSUME(_SEH2State != 0); \
- continue; \
- } \
- \
- break; \
- } \
- \
- (FINALLY_)(&_SEH2Frame.SEH_Header); \
- if(0) \
- {
+ } \
+ \
+ break; \
+ } \
+ \
+ _SEHLeave(); \
+ break; \
+ } \
+ else \
+ { \
+ _SEH_DECLARE_HANDLERS(0, (FINALLY_)); \
+ \
+ _SEH2TryLevel.ST_Header.SPT_Handlers = &_SEHHandlers; \
+ \
+ if(_SEH2TopTryLevel) \
+ { \
+ if(&_SEHLocals != _SEHDummyLocals) \
+ _SEH2Frame.SEH_Locals = &_SEHLocals; \
+ \
+ _SEH2Frame.SEH_Header.SPF_Handler = 0; \
+ _SEHEnterFrame(&_SEH2Frame.SEH_Header, &_SEH2TryLevel.ST_Header); \
+ } \
+ else \
+ _SEHEnterTry(&_SEH2TryLevel.ST_Header); \
+ \
+ ++ _SEH2State; \
+ continue; \
+ } \
+ \
+ break; \
+ } \
+ \
+ (FINALLY_)(&_SEH2Frame.SEH_Header); \
+ if(0) \
+ {
#define _SEH_END \
- } \
- } \
- }
+ } \
+ } \
+ }
#define _SEH_HANDLE _SEH_EXCEPT(_SEH_STATIC_FILTER(_SEH_EXECUTE_HANDLER))
Modified: trunk/reactos/include/reactos/libs/pseh/framebased/internal.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/libs/pseh/…
==============================================================================
--- trunk/reactos/include/reactos/libs/pseh/framebased/internal.h (original)
+++ trunk/reactos/include/reactos/libs/pseh/framebased/internal.h Mon Feb 26 18:32:19 2007
@@ -1,23 +1,23 @@
/*
- Copyright (c) 2004/2005 KJK::Hyperion
-
- Permission is hereby granted, free of charge, to any person obtaining a copy of
- this software and associated documentation files (the "Software"), to deal in
- the Software without restriction, including without limitation the rights to
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
- of the Software, and to permit persons to whom the Software is furnished to do
- so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
+ Copyright (c) 2004/2005 KJK::Hyperion
+
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and associated documentation files (the "Software"),
+ to deal in the Software without restriction, including without limitation
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ and/or sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
*/
#ifndef KJK_PSEH_FRAMEBASED_INTERNAL_H_
@@ -26,19 +26,19 @@
struct _EXCEPTION_RECORD;
struct _EXCEPTION_POINTERS;
struct _CONTEXT;
-
+
typedef int (__cdecl * _SEHFrameHandler_t)
(
- struct _EXCEPTION_RECORD *,
- void *,
- struct _CONTEXT *,
- void *
+ struct _EXCEPTION_RECORD *,
+ void *,
+ struct _CONTEXT *,
+ void *
);
typedef struct __SEHRegistration
{
- struct __SEHRegistration * SER_Prev;
- _SEHFrameHandler_t SER_Handler;
+ struct __SEHRegistration * SER_Prev;
+ _SEHFrameHandler_t SER_Handler;
}
_SEHRegistration_t;
@@ -47,40 +47,40 @@
typedef long (__stdcall * _SEHFilter_t)
(
- struct _EXCEPTION_POINTERS *,
- struct __SEHPortableFrame *
+ struct _EXCEPTION_POINTERS *,
+ struct __SEHPortableFrame *
);
typedef void (__stdcall * _SEHHandler_t)
(
- struct __SEHPortableTryLevel *
+ struct __SEHPortableTryLevel *
);
typedef void (__stdcall * _SEHFinally_t)
(
- struct __SEHPortableFrame *
+ struct __SEHPortableFrame *
);
typedef struct __SEHHandlers
{
- _SEHFilter_t SH_Filter;
- _SEHFinally_t SH_Finally;
+ _SEHFilter_t SH_Filter;
+ _SEHFinally_t SH_Finally;
}
_SEHHandlers_t;
typedef struct __SEHPortableTryLevel
{
- struct __SEHPortableTryLevel * SPT_Next;
- const _SEHHandlers_t * SPT_Handlers;
+ struct __SEHPortableTryLevel * SPT_Next;
+ const _SEHHandlers_t * SPT_Handlers;
}
_SEHPortableTryLevel_t;
typedef struct __SEHPortableFrame
{
- _SEHRegistration_t SPF_Registration;
- unsigned long SPF_Code;
- _SEHHandler_t SPF_Handler;
- _SEHPortableTryLevel_t * SPF_TopTryLevel;
+ _SEHRegistration_t SPF_Registration;
+ unsigned long SPF_Code;
+ _SEHHandler_t SPF_Handler;
+ _SEHPortableTryLevel_t * SPF_TopTryLevel;
}
_SEHPortableFrame_t;
@@ -91,8 +91,8 @@
extern void __stdcall _SEHEnterFrame_s
(
- _SEHPortableFrame_t *,
- _SEHPortableTryLevel_t *
+ _SEHPortableFrame_t *,
+ _SEHPortableTryLevel_t *
);
extern void __stdcall _SEHEnterTry_s(_SEHPortableTryLevel_t *);
@@ -107,8 +107,8 @@
extern void _SEH_FASTCALL _SEHEnterFrame_f
(
- _SEHPortableFrame_t *,
- _SEHPortableTryLevel_t *
+ _SEHPortableFrame_t *,
+ _SEHPortableTryLevel_t *
);
extern void _SEH_FASTCALL _SEHEnterTry_f(_SEHPortableTryLevel_t *);
Removed: trunk/reactos/include/reactos/libs/pseh/native.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/libs/pseh/…
==============================================================================
--- trunk/reactos/include/reactos/libs/pseh/native.h (original)
+++ trunk/reactos/include/reactos/libs/pseh/native.h (removed)
@@ -1,242 +1,0 @@
-/*
- Copyright (c) 2004/2005 KJK::Hyperion
-
- Permission is hereby granted, free of charge, to any person obtaining a copy of
- this software and associated documentation files (the "Software"), to deal in
- the Software without restriction, including without limitation the rights to
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
- of the Software, and to permit persons to whom the Software is furnished to do
- so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
-*/
-
-#ifndef KJK_PSEH_NATIVE_H_
-#define KJK_PSEH_NATIVE_H_
-
-#include <excpt.h>
-#include <pseh/excpt.h>
-
-/*
- Note: just define __inline to an empty symbol if your C compiler doesn't
- support it
-*/
-#ifdef __cplusplus
-# ifndef __inline
-# define __inline inline
-# endif
-#endif
-
-typedef long (__stdcall * _SEHFilter_t)
-(
- long,
- struct _EXCEPTION_POINTERS *,
- void *
-);
-
-typedef void (__stdcall * _SEHFinally_t)
-(
- int,
- void *
-);
-
-static __inline long _SEHCallFilter
-(
- _SEHFilter_t _SEHFilter,
- long _SEHExceptionCode,
- struct _EXCEPTION_POINTERS * _SEHExceptionPointers,
- void * _SEHPVLocals
-)
-{
- if(_SEHFilter == _SEH_STATIC_FILTER(_SEH_EXECUTE_HANDLER))
- return _SEH_EXECUTE_HANDLER;
- else if(_SEHFilter == _SEH_STATIC_FILTER(_SEH_CONTINUE_SEARCH))
- return _SEH_CONTINUE_SEARCH;
- else if(_SEHFilter == _SEH_STATIC_FILTER(_SEH_CONTINUE_EXECUTION))
- return _SEH_CONTINUE_EXECUTION;
- else if(_SEHFilter)
- return _SEHFilter(_SEHExceptionCode, _SEHExceptionPointers, _SEHPVLocals);
- else
- return _SEH_CONTINUE_SEARCH;
-}
-
-static __inline void _SEHCallFinally
-(
- _SEHFinally_t _SEHFinally,
- int _SEHAbnormalTermination,
- void * _SEHPVLocals
-)
-{
- if(_SEHFinally)
- (_SEHFinally)(_SEHAbnormalTermination, _SEHPVLocals);
-}
-
-/* SHARED LOCALS */
-/* Access the locals for the current frame */
-#define _SEH_ACCESS_LOCALS(LOCALS_) \
- _SEH_LOCALS_TYPENAME(LOCALS_) * _SEHPLocals; \
- _SEHPLocals = _SEH_PVOID_CAST(_SEH_LOCALS_TYPENAME(LOCALS_) *, _SEHPVLocals);
-
-/* Access local variable VAR_ */
-#define _SEH_VAR(VAR_) _SEHPLocals->VAR_
-
-/* FILTER FUNCTIONS */
-/* Declares a filter function's prototype */
-#define _SEH_FILTER(NAME_) \
- long __stdcall NAME_ \
- ( \
- long _SEHExceptionCode, \
- struct _EXCEPTION_POINTERS * _SEHExceptionPointers, \
- void * _SEHPVLocals \
- )
-
-/* Declares a static filter */
-#define _SEH_STATIC_FILTER(ACTION_) ((_SEHFilter_t)((ACTION_) + 2))
-
-/* Declares a PSEH filter wrapping a regular filter function */
-#define _SEH_WRAP_FILTER(WRAPPER_, NAME_) \
- static __inline _SEH_FILTER(WRAPPER_) \
- { \
- return (NAME_)(_SEHExceptionPointers); \
- }
-
-/* FINALLY FUNCTIONS */
-/* Declares a finally function's prototype */
-#define _SEH_FINALLYFUNC(NAME_) \
- void __stdcall NAME_ \
- ( \
- int _SEHAbnormalTermination, \
- void * _SEHPVLocals \
- )
-
-/* Declares a PSEH finally function wrapping a regular function */
-#define _SEH_WRAP_FINALLY(WRAPPER_, NAME_) \
- _SEH_WRAP_FINALLY_ARGS(WRAPPER_, NAME_, ())
-
-#define _SEH_WRAP_FINALLY_ARGS(WRAPPER_, NAME_, ARGS_) \
- static __inline _SEH_FINALLYFUNC(WRAPPER_) \
- { \
- NAME_ ARGS_; \
- }
-
-#define _SEH_WRAP_FINALLY_LOCALS_ARGS(WRAPPER_, LOCALS_, NAME_, ARGS_) \
- static __inline _SEH_FINALLYFUNC(WRAPPER_) \
- { \
- _SEH_ACCESS_LOCALS(LOCALS_); \
- NAME_ ARGS_; \
- }
-
-/* SAFE BLOCKS */
-#define _SEH_TRY_FINALLY(FINALLY_) \
- _SEH_TRY_FILTER_FINALLY \
- ( \
- _SEH_STATIC_FILTER(_SEH_CONTINUE_SEARCH), \
- (FINALLY_) \
- )
-
-#define _SEH_END_FINALLY _SEH_HANDLE _SEH_END
-
-#define _SEH_TRY_FILTER(FILTER_) \
- _SEH_TRY_FILTER_FINALLY((FILTER_), NULL)
-
-#define _SEH_TRY_HANDLE_FINALLY(FINALLY_) \
- _SEH_TRY_FILTER_FINALLY \
- ( \
- _SEH_STATIC_FILTER(_SEH_EXECUTE_HANDLER), \
- (FINALLY_) \
- )
-
-#define _SEH_TRY \
- _SEH_TRY_HANDLE_FINALLY(NULL)
-
-#define _SEH_CALL_FILTER(FILTER_) \
- _SEHCallFilter \
- ( \
- (FILTER_), \
- GetExceptionCode(), \
- GetExceptionPointers(), \
- _SEHPVLocals \
- )
-
-#define _SEH_CALL_FINALLY(FINALLY_) \
- _SEHCallFinally((FINALLY_), (AbnormalTermination() != 0), _SEHPVLocals)
-
-#define _SEH_TRY_FILTER_FINALLY(FILTER_, FINALLY_) \
- __try \
- { \
- _SEHFinally_t _SEHFinally = (FINALLY_); \
- _SEHFilter_t _SEHFilter = (FILTER_); \
- void * _SEHPVLocals = &_SEHLocals; \
- (void)_SEHPVLocals; \
- \
- __try \
- {
-
-#define _SEH_HANDLE \
- } \
- __except(_SEH_CALL_FILTER(_SEHFilter)) \
- { \
- struct _EXCEPTION_POINTERS * _SEHExceptionPointers = GetExceptionPointers();\
- long _SEHExceptionCode = GetExceptionCode(); \
-
-#define _SEH_END \
- } \
- } \
- __finally \
- { \
- _SEH_CALL_FINALLY(_SEHFinally); \
- }
-
-#define _SEH_LEAVE __leave
-
-#define _SEH_GetExceptionCode() (_SEHExceptionCode)
-#define _SEH_GetExceptionPointers() (_SEHExceptionPointers)
-#define _SEH_AbnormalTermination() (_SEHAbnormalTermination)
-
-/* New syntax */
-
-#define _SEH2_TRY \
- { \
- void * _SEHPVLocals = &_SEHLocals; \
- (void)_SEHPVLocals; \
- \
- __try \
- {
-
-#define _SEH2_EXCEPT(FILTER_) \
- } \
- __except(_SEH_CALL_FILTER(FILTER_)) \
- { \
- struct _EXCEPTION_POINTERS * _SEHExceptionPointers = GetExceptionPointers();\
- long _SEHExceptionCode = GetExceptionCode(); \
-
-#define _SEH2_FINALLY(FINALLY_) \
- } \
- __finally \
- { \
- _SEH_CALL_FINALLY(FINALLY_)
-
-#define _SEH2_END \
- } \
- }
-
-#define _SEH2_HANDLE _SEH2_EXCEPT(_SEH_STATIC_FILTER(_SEH_EXECUTE_HANDLER))
-
-#define _SEH2_LEAVE _SEH_LEAVE
-
-#define _SEH2_GetExceptionCode _SEH_GetExceptionCode
-#define _SEH2_GetExceptionPointers _SEH_GetExceptionPointers
-#define _SEH2_AbnormalTermination _SEH_AbnormalTermination
-
-#endif
-
-/* EOF */
Removed: trunk/reactos/include/reactos/libs/pseh/prettybased.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/libs/pseh/…
==============================================================================
--- trunk/reactos/include/reactos/libs/pseh/prettybased.h (original)
+++ trunk/reactos/include/reactos/libs/pseh/prettybased.h (removed)
@@ -1,299 +1,0 @@
-/*
- Copyright (c) 2004 KJK::Hyperion
-
- Permission is hereby granted, free of charge, to any person obtaining a copy of
- this software and associated documentation files (the "Software"), to deal in
- the Software without restriction, including without limitation the rights to
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
- of the Software, and to permit persons to whom the Software is furnished to do
- so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
-*/
-/*
-Pretty PSEH
-
-Made to be macro compatible with ms seh syntax and to be pretty, having the
-finally block inline etc. Being pretty is not cheap. PPSEH has more
-overhead than PSEH, thou mostly during exception/unwinding. Normal execution
-only add the overhead of one setjmp, and only in the try/finally case.
-PPSEH is probably much less portable than PSEH also.....
-
-ALERT!ALERT!ALERT!ALERT!ALERT!ALERT!ALERT!ALERT!ALERT!ALERT!ALERT!ALERT!ALERT!
--must always use non-native NLG cause a special version of longjmp (which doesn't
-restore esp) is needed
-
--compiler must use ebp as stack frame pointer, cause the finally block rely
-on this to access external variables
-
--all external variables that are used in the except/finally block MUST be volatile
-to prevent variables from being optimized into registers.
-See: http://alphalinux.org/archives/axp-list/1998/February1998/0330.html
-
--you can't use return within a try/except/finally block
-
--you can't use __LEAVE within a (for/do/while) loop. it will only leave the loop
-and not the try-block itself
-
-
-USAGE:
-
-__TRY{
- __LEAVE;
-}
-__EXCEPT(_SEH_STATIC_FILTER(EXCEPTION_EXECUTE_HANDLER)){
-}
-__ENDTRY;
-
-
-__TRY{
-}
-__FINALLY{
-}
-__ENDTRY;
-
-
-_SEH_FILTER(filter){
- return EXCEPTION_EXECUTE_HANDLER;
-}
-__TRY2{
-}
-__EXCEPT2(filter){
-}
-__FINALLY2{
-}
-__ENDTRY2;
-
-
-
--Gunnar
-
-*/
-
-
-#ifndef KJK_PPSEH_FRAMEBASED_H_
-#define KJK_PPSEH_FRAMEBASED_H_
-
-#include <pseh/framebased/internal.h>
-#include <pseh/excpt.h>
-#include <malloc.h>
-
-#ifndef offsetof
-# include <stddef.h>
-#endif
-
-/*
-Must always use non-native NLG since we need a special version of longjmp which does
-not restore esp
-*/
-#include <pseh/setjmp.h>
-
-
-typedef struct __SEHFrame
-{
- _SEHPortableFrame_t SEH_Header;
- _SEHJmpBuf_t SEH_JmpBuf;
- _SEHJmpBuf_t* SEH_JmpRetPtr;
-}
-_SEHFrame_t;
-
-/*
- Note: just define __inline to an empty symbol if your C compiler doesn't
- support it
-*/
-#ifdef __cplusplus
-# ifndef __inline
-# define __inline inline
-# endif
-#endif
-
-
-/* FILTER FUNCTIONS */
-/* Declares a filter function's prototype */
-#define _SEH_FILTER(NAME_) \
- long __stdcall NAME_ \
- ( \
- struct _EXCEPTION_POINTERS * _SEHExceptionPointers, \
- struct __SEHPortableFrame * _SEHPortableFrame \
- )
-
-
-/* Declares a static filter */
-#define _SEH_STATIC_FILTER(ACTION_) ((_SEHFilter_t)((ACTION_) + 2))
-
-
-static __declspec(noreturn) __inline void __stdcall _SEHCompilerSpecificHandler
-(
- _SEHPortableFrame_t * frame
-)
-{
- _SEHFrame_t * myframe;
- myframe = (_SEHFrame_t *)(((char *)frame) - offsetof(_SEHFrame_t, SEH_Header));
- _SEHLongJmp(myframe->SEH_JmpBuf, 1);
-}
-
-
-
-void __stdcall _FinallyPretty
-(
- struct __SEHPortableFrame * frame
-)
-{
- _SEHFrame_t * myframe;
- _SEHJmpBuf_t jmpRetBuf;
-
- myframe = (_SEHFrame_t *)(((char *)frame) - offsetof(_SEHFrame_t, SEH_Header));
-
- if(_SEHSetJmp(jmpRetBuf) == 0)
- {
- myframe->SEH_JmpRetPtr = &jmpRetBuf;
- _SEHLongJmp_KeepEsp(myframe->SEH_JmpBuf, 2);
- }
-}
-
-
-
-#define ___EXCEPT_DUAL(filter) \
- } while(0); \
- \
- _SEHLeave(&_SEHFrame->SEH_Header); \
- } \
- else \
- { \
- _SEHHandlers.SH_Filter = (filter); \
- _SEHHandlers.SH_Finally = _FinallyPretty; \
- \
- if(_loop == 2 || (_ret = _SEHSetJmp(_SEHFrame->SEH_JmpBuf))) \
- { \
- if (_ret == 1) \
- { \
- _SEHLeave(&_SEHFrame->SEH_Header); \
- do \
- {
-
-
-
-#define ___FINALLY_DUAL \
- } while (0); \
- } \
- \
- do \
- {
-
-
-
-#define ___EXCEPT_SINGLE(filter) \
- } while(0); \
- \
- _SEHLeave(&_SEHFrame->SEH_Header); \
- break; \
- } \
- else \
- { \
- _SEHHandlers.SH_Filter = (filter); \
- _SEHHandlers.SH_Finally = (NULL); \
- \
- if(_SEHSetJmp(_SEHFrame->SEH_JmpBuf)) \
- { \
- _SEHLeave(&_SEHFrame->SEH_Header); \
- do \
- {
-
-
-
-#define ___TRY \
- do \
- { \
- int _loop =0; int _ret = 0; \
- static _SEHHandlers_t _SEHHandlers = \
- { \
- (NULL), \
- _SEHCompilerSpecificHandler, \
- (NULL) \
- }; \
- \
- _SEHFrame_t * _SEHFrame; \
- volatile _SEHPortableFrame_t * _SEHPortableFrame; \
- \
- _SEHFrame = _alloca(sizeof(_SEHFrame_t)); \
- _SEHFrame->SEH_Header.SPF_Handlers = &_SEHHandlers; \
- \
- _SEHPortableFrame = &_SEHFrame->SEH_Header; \
- (void)_SEHPortableFrame; \
- \
- for(;;_loop++) \
- if (_loop == 1) \
- { \
- _SEHEnter(&_SEHFrame->SEH_Header); \
- \
- do \
- {
-
-
-#define ___FINALLY_SINGLE \
- } while(0); \
- \
- _SEHLeave(&_SEHFrame->SEH_Header); \
- } \
- else \
- { \
- _SEHHandlers.SH_Filter = _SEH_STATIC_FILTER(_SEH_CONTINUE_SEARCH); \
- _SEHHandlers.SH_Finally = _FinallyPretty; \
- \
- if(_loop == 2 || (_ret = _SEHSetJmp(_SEHFrame->SEH_JmpBuf))) \
- { \
- do \
- {
-
-
-
-#define ___ENDTRY \
- } while (0); \
- \
- if (_ret == 2) \
- { \
- _SEHLongJmp(*_SEHFrame->SEH_JmpRetPtr, 1); \
- } \
- break; \
- } \
- } \
- } while (0);
-
-
-
-#ifdef _MSC_VER
- #define __TRY2 __try{__try
- #define __EXCEPT2 __except
- #define __FINALLY2 }__finally
- #define __ENDTRY2
- #define __TRY __try
- #define __EXCEPT __except
- #define __FINALLY __finally
- #define __ENDTRY
- #define _SEH_STATIC_FILTER(ACTION_) (ACTION_)
- #define __LEAVE __leave
- #define __LEAVE2 __leave
-#else
- #define __TRY2 ___TRY
- #define __EXCEPT2 ___EXCEPT_DUAL
- #define __FINALLY2 ___FINALLY_DUAL
- #define __ENDTRY2 __ENDTRY
- #define __TRY ___TRY
- #define __EXCEPT ___EXCEPT_SINGLE
- #define __FINALLY ___FINALLY_SINGLE
- #define __ENDTRY ___ENDTRY
- #define __LEAVE break
- #define __LEAVE2 break
-#endif
-
-
-#endif
Modified: trunk/reactos/include/reactos/libs/pseh/pseh.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/libs/pseh/…
==============================================================================
--- trunk/reactos/include/reactos/libs/pseh/pseh.h (original)
+++ trunk/reactos/include/reactos/libs/pseh/pseh.h Mon Feb 26 18:32:19 2007
@@ -1,23 +1,23 @@
/*
- Copyright (c) 2004/2005 KJK::Hyperion
-
- Permission is hereby granted, free of charge, to any person obtaining a copy of
- this software and associated documentation files (the "Software"), to deal in
- the Software without restriction, including without limitation the rights to
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
- of the Software, and to permit persons to whom the Software is furnished to do
- so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
+ Copyright (c) 2004/2005 KJK::Hyperion
+
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and associated documentation files (the "Software"),
+ to deal in the Software without restriction, including without limitation
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ and/or sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
*/
#ifndef KJK_PSEH_H_
@@ -25,53 +25,53 @@
/* Some useful macros */
#if defined(__cplusplus)
-# define _SEH_PVOID_CAST(TYPE_, P_) ((TYPE_)(P_))
+# define _SEH_PVOID_CAST(TYPE_, P_) ((TYPE_)(P_))
#else
-# define _SEH_PVOID_CAST(TYPE_, P_) (P_)
+# define _SEH_PVOID_CAST(TYPE_, P_) (P_)
#endif
#if defined(FIELD_OFFSET)
-# define _SEH_FIELD_OFFSET FIELD_OFFSET
+# define _SEH_FIELD_OFFSET FIELD_OFFSET
#else
-# include <stddef.h>
-# define _SEH_FIELD_OFFSET offsetof
+# include <stddef.h>
+# define _SEH_FIELD_OFFSET offsetof
#endif
#if defined(CONTAINING_RECORD)
-# define _SEH_CONTAINING_RECORD CONTAINING_RECORD
+# define _SEH_CONTAINING_RECORD CONTAINING_RECORD
#else
-# define _SEH_CONTAINING_RECORD(ADDR_, TYPE_, FIELD_) \
- ((TYPE_ *)(((char *)(ADDR_)) - _SEH_FIELD_OFFSET(TYPE_, FIELD_)))
+# define _SEH_CONTAINING_RECORD(ADDR_, TYPE_, FIELD_) \
+ ((TYPE_ *)(((char *)(ADDR_)) - _SEH_FIELD_OFFSET(TYPE_, FIELD_)))
#endif
#if defined(__CONCAT)
-# define _SEH_CONCAT __CONCAT
+# define _SEH_CONCAT __CONCAT
#else
-# define _SEH_CONCAT1(X_, Y_) X_ ## Y_
-# define _SEH_CONCAT(X_, Y_) _SEH_CONCAT1(X_, Y_)
+# define _SEH_CONCAT1(X_, Y_) X_ ## Y_
+# define _SEH_CONCAT(X_, Y_) _SEH_CONCAT1(X_, Y_)
#endif
/*
- Note: just define __inline to an empty symbol if your C compiler doesn't
- support it
+ Note: just define __inline to an empty symbol if your C compiler doesn't
+ support it
*/
#ifdef __cplusplus
-# ifndef __inline
-# define __inline inline
-# endif
+# ifndef __inline
+# define __inline inline
+# endif
#endif
/* Locals sharing support */
#define _SEH_LOCALS_TYPENAME(BASENAME_) \
- struct _SEH_CONCAT(_SEHLocalsTag, BASENAME_)
+ struct _SEH_CONCAT(_SEHLocalsTag, BASENAME_)
#define _SEH_DEFINE_LOCALS(BASENAME_) \
- _SEH_LOCALS_TYPENAME(BASENAME_)
+ _SEH_LOCALS_TYPENAME(BASENAME_)
#define _SEH_DECLARE_LOCALS(BASENAME_) \
- _SEH_LOCALS_TYPENAME(BASENAME_) _SEHLocals; \
- _SEH_LOCALS_TYPENAME(BASENAME_) * _SEHPLocals; \
- _SEHPLocals = &_SEHLocals;
+ _SEH_LOCALS_TYPENAME(BASENAME_) _SEHLocals; \
+ _SEH_LOCALS_TYPENAME(BASENAME_) * _SEHPLocals; \
+ _SEHPLocals = &_SEHLocals;
/* Dummy locals */
static int _SEHLocals;
Modified: trunk/reactos/include/reactos/libs/pseh/setjmp.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/libs/pseh/…
==============================================================================
--- trunk/reactos/include/reactos/libs/pseh/setjmp.h (original)
+++ trunk/reactos/include/reactos/libs/pseh/setjmp.h Mon Feb 26 18:32:19 2007
@@ -1,23 +1,23 @@
/*
- Copyright (c) 2004/2005 KJK::Hyperion
-
- Permission is hereby granted, free of charge, to any person obtaining a copy of
- this software and associated documentation files (the "Software"), to deal in
- the Software without restriction, including without limitation the rights to
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
- of the Software, and to permit persons to whom the Software is furnished to do
- so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
+ Copyright (c) 2004/2005 KJK::Hyperion
+
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and associated documentation files (the "Software"),
+ to deal in the Software without restriction, including without limitation
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ and/or sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
*/
#ifndef KJK_PSEH_SETJMP_H_
@@ -26,12 +26,12 @@
#ifdef _M_IX86
typedef struct __SEHJmpBuf
{
- unsigned long JB_Ebp;
- unsigned long JB_Esp;
- unsigned long JB_Eip;
- unsigned long JB_Ebx;
- unsigned long JB_Esi;
- unsigned long JB_Edi;
+ unsigned long JB_Ebp;
+ unsigned long JB_Esp;
+ unsigned long JB_Eip;
+ unsigned long JB_Ebx;
+ unsigned long JB_Esi;
+ unsigned long JB_Edi;
}
_SEHJmpBuf_t[1];
#endif
Modified: trunk/reactos/lib/pseh/framebased.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/pseh/framebased.c?rev=…
==============================================================================
--- trunk/reactos/lib/pseh/framebased.c (original)
+++ trunk/reactos/lib/pseh/framebased.c Mon Feb 26 18:32:19 2007
@@ -1,23 +1,23 @@
/*
- Copyright (c) 2004 KJK::Hyperion
-
- Permission is hereby granted, free of charge, to any person obtaining a copy of
- this software and associated documentation files (the "Software"), to deal in
- the Software without restriction, including without limitation the rights to
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
- of the Software, and to permit persons to whom the Software is furnished to do
- so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
+ Copyright (c) 2004/2005 KJK::Hyperion
+
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and associated documentation files (the "Software"),
+ to deal in the Software without restriction, including without limitation
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ and/or sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
*/
#define STRICT
Modified: trunk/reactos/lib/pseh/i386/framebased.asm
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/pseh/i386/framebased.a…
==============================================================================
--- trunk/reactos/lib/pseh/i386/framebased.asm (original)
+++ trunk/reactos/lib/pseh/i386/framebased.asm Mon Feb 26 18:32:19 2007
@@ -22,51 +22,51 @@
global __SEHCleanHandlerEnvironment
__SEHCleanHandlerEnvironment:
- cld
- ret
+ cld
+ ret
global __SEHCurrentRegistration
__SEHCurrentRegistration:
- mov eax, [fs:0]
- ret
+ mov eax, [fs:0]
+ ret
global __SEHRegisterFrame
__SEHRegisterFrame:
- mov ecx, [esp+4]
- mov eax, [fs:0]
- mov [ecx+0], eax
- mov [fs:0], ecx
- ret
+ mov ecx, [esp+4]
+ mov eax, [fs:0]
+ mov [ecx+0], eax
+ mov [fs:0], ecx
+ ret
global __SEHUnregisterFrame
__SEHUnregisterFrame:
- mov ecx, [fs:0]
- mov ecx, [ecx+0]
- mov [fs:0], ecx
- ret
+ mov ecx, [fs:0]
+ mov ecx, [ecx+0]
+ mov [fs:0], ecx
+ ret
global __SEHGlobalUnwind
__SEHGlobalUnwind:
- extern __SEHRtlUnwind
+ extern __SEHRtlUnwind
; RtlUnwind clobbers all the "don't clobber" registers, so we save them
- push ebx
- mov ebx, [esp+8]
- push esi
- push edi
+ push ebx
+ mov ebx, [esp+8]
+ push esi
+ push edi
- push dword 0x0 ; ReturnValue
- push dword 0x0 ; ExceptionRecord
- push dword .RestoreRegisters ; TargetIp
- push ebx ; TargetFrame
- call [__SEHRtlUnwind]
+ push dword 0x0 ; ReturnValue
+ push dword 0x0 ; ExceptionRecord
+ push dword .RestoreRegisters ; TargetIp
+ push ebx ; TargetFrame
+ call [__SEHRtlUnwind]
.RestoreRegisters:
- pop edi
- pop esi
- pop ebx
+ pop edi
+ pop esi
+ pop ebx
- ret
+ ret
; EOF
Modified: trunk/reactos/lib/pseh/i386/setjmp.asm
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/pseh/i386/setjmp.asm?r…
==============================================================================
--- trunk/reactos/lib/pseh/i386/setjmp.asm (original)
+++ trunk/reactos/lib/pseh/i386/setjmp.asm Mon Feb 26 18:32:19 2007
@@ -26,63 +26,63 @@
global __SEHSetJmp@4
_SEHSetJmp:
__SEHSetJmp@4:
- ; jump buffer
- mov eax, [esp+4]
+ ; jump buffer
+ mov eax, [esp+4]
- ; program counter
- mov ecx, [esp+0]
+ ; program counter
+ mov ecx, [esp+0]
- ; stack pointer
- lea edx, [esp+8]
+ ; stack pointer
+ lea edx, [esp+8]
- ; fill the jump buffer
- mov [eax+0], ebp
- mov [eax+4], edx
- mov [eax+8], ecx
- mov [eax+12], ebx
- mov [eax+16], esi
- mov [eax+20], edi
+ ; fill the jump buffer
+ mov [eax+0], ebp
+ mov [eax+4], edx
+ mov [eax+8], ecx
+ mov [eax+12], ebx
+ mov [eax+16], esi
+ mov [eax+20], edi
- xor eax, eax
- ret 4
+ xor eax, eax
+ ret 4
global _SEHLongJmp
global __SEHLongJmp@8
_SEHLongJmp:
__SEHLongJmp@8:
- ; return value
- mov eax, [esp+8]
+ ; return value
+ mov eax, [esp+8]
- ; jump buffer
- mov ecx, [esp+4]
+ ; jump buffer
+ mov ecx, [esp+4]
- ; restore the saved context
- mov ebp, [ecx+0]
- mov esp, [ecx+4]
- mov edx, [ecx+8]
- mov ebx, [ecx+12]
- mov esi, [ecx+16]
- mov edi, [ecx+20]
- jmp edx
+ ; restore the saved context
+ mov ebp, [ecx+0]
+ mov esp, [ecx+4]
+ mov edx, [ecx+8]
+ mov ebx, [ecx+12]
+ mov esi, [ecx+16]
+ mov edi, [ecx+20]
+ jmp edx
global _SEHLongJmp_KeepEsp
global __SEHLongJmp_KeepEsp@8
_SEHLongJmp_KeepEsp:
__SEHLongJmp_KeepEsp@8:
- ; return value
- mov eax, [esp+8]
+ ; return value
+ mov eax, [esp+8]
- ; jump buffer
- mov ecx, [esp+4]
+ ; jump buffer
+ mov ecx, [esp+4]
- ; restore the saved context
- mov ebp, [ecx+0]
-; don't restore esp
+ ; restore the saved context
+ mov ebp, [ecx+0]
+; don't restore esp
; mov esp, [ecx+4]
- mov edx, [ecx+8]
- mov ebx, [ecx+12]
- mov esi, [ecx+16]
- mov edi, [ecx+20]
- jmp edx
+ mov edx, [ecx+8]
+ mov ebx, [ecx+12]
+ mov esi, [ecx+16]
+ mov edi, [ecx+20]
+ jmp edx
; EOF
Author: dgorbachev
Date: Mon Feb 26 01:45:32 2007
New Revision: 25906
URL: http://svn.reactos.org/svn/reactos?rev=25906&view=rev
Log:
Indonesian translation (Zaenal Mutaqin)
Added:
trunk/reactos/base/shell/cmd/id-ID.rc
trunk/reactos/subsystems/ntvdm/id-ID.rc
trunk/reactos/subsystems/win32/csrss/win32csr/lang/id-ID.rc
Modified:
trunk/reactos/base/shell/cmd/cmd.rc
trunk/reactos/base/shell/explorer/explorer_intres.rc
trunk/reactos/ntoskrnl/mm/sysldr.c
trunk/reactos/subsystems/ntvdm/ntvdm.rc
trunk/reactos/subsystems/win32/csrss/win32csr/rsrc.rc
Modified: trunk/reactos/base/shell/cmd/cmd.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/cmd/cmd.rc?rev=…
==============================================================================
--- trunk/reactos/base/shell/cmd/cmd.rc (original)
+++ trunk/reactos/base/shell/cmd/cmd.rc Mon Feb 26 01:45:32 2007
@@ -8,16 +8,17 @@
#define REACTOS_STR_LEGAL_COPYRIGHT "Copyright (C) 1998-2006 Eric Kohl and others\0"
#include <reactos/version.rc>
+#include "de-DE.rc"
#include "en-US.rc"
+#include "es-ES.rc"
#include "fr-FR.rc"
-#include "de-DE.rc"
-#include "es-ES.rc"
+#include "hu-HU.rc"
+#include "id-ID.rc"
+#include "it-IT.rc"
+#include "ja-JP.rc"
+#include "nb-NO.rc"
#include "ru-RU.rc"
-#include "ja-JP.rc"
-#include "hu-HU.rc"
-#include "nb-NO.rc"
#include "uk-UA.rc"
-#include "it-IT.rc"
STRINGTABLE DISCARDABLE
{
Added: trunk/reactos/base/shell/cmd/id-ID.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/cmd/id-ID.rc?re…
==============================================================================
--- trunk/reactos/base/shell/cmd/id-ID.rc (added)
+++ trunk/reactos/base/shell/cmd/id-ID.rc Mon Feb 26 01:45:32 2007
@@ -1,0 +1,651 @@
+/*
+ * Indonesian language file by Zaenal Mutaqin <ade999 at gmail dot com> 2007-02-15
+ */
+
+#include "windows.h"
+#include "resource.h"
+
+LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT
+
+STRINGTABLE DISCARDABLE
+{
+
+STRING_ATTRIB_HELP, "Menampilkan atau mengubah atribut file.\n\n\
+ATTRIB [+R | -R] [+A | -A] [+S | -S] [+H | -H] file ...\n\
+ [/S [/D]]\n\n\
+ + Menyetel atribut\n\
+ - Membersihkan atribut\n\
+ R Atribut file Hanya-baca\n\
+ A Atribut file Arsip\n\
+ S Atribut file Sistem\n\
+ H Atribut file Tersembunyi\n\
+ /S Proses file yang sama dalam direktori dan semua subdirektori\n\
+ saat ini\n\
+ /D Proses direktori juga\n\n\
+Ketik ATTRIB tanpa parameter untuk menampilkan atribut dari semua file.\n"
+
+STRING_ALIAS_HELP, "Menyetel, menghapus atau menampilkan alias.\n\n\
+ALIAS [alias=[command]]\n\n\
+ alias Nama untuk alias.\n\
+ command Teks yang disubstitusi untuk alias.\n\n\
+Untuk mendaftar semua alias:\n\
+ ALIAS\n\n\
+Untuk menyetel alias baru atau menimpa yang sudah ada:\n\
+ ALIAS da=dir a:\n\n\
+Untuk menghapus alias dari daftar alias:\n\
+ ALIAS da="
+
+STRING_BEEP_HELP, "Bunyikan speaker.\n\nBEEP\n"
+
+STRING_CALL_HELP, "Memanggil satu program batch dari yang lainnya.\n\n\
+CALL [drive:][path]filename [batch-parameter]\n\n\
+ batch-parameter Specifies any command-line information required by the\n\
+ batch program."
+
+STRING_CD_HELP, "Mengubah direktori saat ini atau menampilkan namanya\n\n\
+CHDIR [/D][drive:][path]\n\
+CHDIR[..|.]\n\
+CD [/D][drive:][path]\n\
+CD[..|.]\n\n\
+ .. direktori leluhurnya\n\
+ . direktori saat ini\n\
+ /D Akan mengubah drive dan direktori saat ini.\n\n\
+Ketik CD drive: untuk menampilkan direktori saat ini pada drive tertentu.\n\
+Ketik CD tanpa parameter untuk menampilkan drive dan direktori saat ini.\n"
+
+STRING_CHCP_HELP, "Menampilkan atau menyetel nomor halaman kode aktif.\n\n\
+CHCP [nnn]\n\n\
+ nnn Menetapkan nomor halaman kode yang aktif.\n\n\
+Ketik CHCP tanpa parameter untuk menampilkan nomor halaman kode yang aktif.\n"
+
+STRING_CHOICE_HELP, "Menunggu pengguna untuk memilih satu dari set pilihan.\n\n\
+CHOICE [/C[:]pilihan][/N][/S][/T[:]c,nn][text]\n\n\
+ /C[:]pilihan Menetapkan tombol yang dibolehkan. Standarnya YT.\n\
+ /N Jangan tampilkan pilihan dan ? di akhir prompt string.\n\
+ /S Perlakukan tombol pilihan sebagai sensitif huruf.\n\
+ /T[:]c,nn Pilihan standar untuk c setelah nn detik.\n\
+ text Prompt string untuk ditampilkan.\n\n\
+ERRORLEVEL disetel ke ofset tombol yang ditekan pengguna dalam pilihan.\n"
+
+STRING_CLS_HELP, "Membersihkan layar.\n\nCLS\n"
+
+STRING_CMD_HELP1, "\nPerintah internal yang tersedia:\n"
+
+STRING_CMD_HELP2, "\nFitur yang tersedia:"
+
+STRING_CMD_HELP3," [alias]"
+
+STRING_CMD_HELP4," [histori]"
+
+STRING_CMD_HELP5," [pelengkapan nama file unix]"
+
+STRING_CMD_HELP6," [tumpukan direktori]"
+
+STRING_CMD_HELP7," [pengalihan dan piping]"
+
+STRING_CMD_HELP8, "Memulai instan baru dari interpreter baris perintah ReactOS.\n\n\
+CMD [/[C|K] command][/P][/Q][/T:bf]\n\n\
+ /C command Menjalankan perintah yang ditetapkan dan mengakhiri.\n\
+ /K command Menjalankan perintah yang ditetapkan dan tetap tinggal.\n\
+ /P CMD menjadi permanen dan menjalankan autoexec.bat\n\
+ (tidak bisa diakhiri).\n\
+ /T:bf Menyetel warna latar belakang/depan (lihat perintah COLOR).\n"
+
+STRING_COLOR_HELP1, "Menyetel warna standar latar belakang dan depan.\n\n\
+COLOR [attr [/-F]] \n\n\
+ attr Menetapkan atribut warna output konsol\n\
+ /-F Tidak memenuhi ruang kosong konsol dengan atribut warna\n\n\
+Ada tiga cara untuk menetapkan warna:\n\
+1) [bright] nama pada [bright] nama (hanya tiga huruf pertama yang dipakai)\n\
+2) desimal pada desimal\n\
+3) dua digit heksa\n\n\
+Warna adalah:\n\
+des heksa nama des hex nama\n\
+0 0 Black 8 8 Abu-Abu(Hitam terang)\n\
+1 1 Blue 9 9 Biru Terang\n\
+2 2 Green 10 A Hijau Terang\n\
+3 3 Cyan 11 B Biru Muda Terang\n\
+4 4 Red 12 C Merah Terang\n\
+5 5 Magenta 13 D Magenta Terang\n\
+6 6 Yellow 14 E Kuning Terang\n\
+7 7 White 15 F Putih Terang\n"
+
+STRING_COPY_HELP1, "Timpa %s (Ya/Tidak/Semua)? "
+
+STRING_COPY_HELP2, "Mengcopy satu atau lebih file ke lokasi lain.\n\n\
+COPY [/V][/Y|/-Y][/A|/B] sumber [/A|/B]\n\
+ [+ sumber [/A|/B] [+ ...]] [tujuan [/A|/B]]\n\n\
+ sumber Menetapkan file yang akan dicopy.\n\
+ /A Menunjukan file teks ASCII.\n\
+ /B Menunjukan file biner.\n\
+ tujuan Menetapkan direktori dan/atau nama file untuk file baru.\n\
+ /V Verifikasi bahwa file yang baru ditulis dengan benar.\n\
+ /Y Hilangkan pertanyaan untuk konfirmasi anda menimpa\n\
+ file tujuan yang sudah ada.\n\
+ /-Y Menyebabkan pertanyaan untuk konfirmasi anda menimpa\n\
+ file tujuan yang sudah ada.\n\n\
+Saklar /Y mungkin ada dalam variabel lingkungan COPYCMD.\n\
+...\n"
+
+STRING_DATE_HELP1, "\nMasukkan tanggal baru (mm%cdd%cyyyy): "
+
+STRING_DATE_HELP2, "\nMasukkan tanggal baru (dd%cmm%cyyyy): "
+
+STRING_DATE_HELP3, "\nMasukkan tanggal baru (yyyy%cmm%cdd): "
+
+STRING_DATE_HELP4, "Menampilkan atau menyetel tanggal.\n\n\
+DATE [/T][date]\n\n\
+ /T hanya menampilkan\n\n\
+Ketik DATE tanpa parameter untuk menampilkan setelan tanggal saat ini dan\n\
+meminta yang baru. Tekan ENTER untuk membiarkan tanggal tetap sama.\n"
+
+STRING_DEL_HELP1, "Menghapus satu atau lebih file.\n\n\
+DEL [/N /P /T /Q /S /W /Y /Z /A[[:]attributes]] file ...\n\
+DELETE [/N /P /T /Q /S /W /Y /Z /A[[:]attributes]] file ...\n\
+ERASE [/N /P /T /Q /S /W /Y /Z /A[[:]attributes]] file ...\n\n\
+ file Menetapkan file yang dihapus.\n\n\
+ /N Tidak ada.\n\
+ /P Tanya. Menanyakan sebelum menghapus setiap file.\n\
+ /T Total. Tampilkan total file dihapus dan ruang disk yang dibebaskan.\n\
+ /Q Tenang.\n\
+ /W Hapus. Timpa file dengan angka acak sebelum penghapusan.\n\
+ /Y Ya. Matikan bahkan *.* tanpa bertanya.\n\
+ /F Paksa hapus file yang tersembunyi, hanya-baca dan sistem.\n\
+ /S Hapus file dari semua subdirektori\n\
+ /A Pilih file yang dihapus berdasarkan atribut.\n\
+ attributes\n\
+ R File Hanya Baca\n\
+ S File Sistem\n\
+ A File Bisa Diarsipkan\n\
+ H File Tersembunyi\n\
+ - prefiks berarti tidak\n"
+
+STRING_DEL_HELP2, "Semua file dalam direktori akan dihapus!\nAnda yakin (Y/T)?"
+STRING_DEL_HELP3, " %lu file dihapus\n"
+STRING_DEL_HELP4, " %lu file dihapus\n"
+
+STRING_DELAY_HELP, "menunda n detik atau milidetik\n\
+DELAY [/m]n\n\n\
+ /m menetapkan bahwa n adalah milidetik\n\
+ sebaliknya n adalah detik\n"
+
+STRING_DIR_HELP1, "DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]\n\
+ [/O[[:]sortorder]] [/P] [/Q] [/S] [/T[[:]timefield]] [/W] [/X] [/4]\n\n\
+ [drive:][path][filename]\n\
+ Menetapkan drive, direktori, dan/atau files ke daftar.\n\n\
+ /A Menampilkan file dengan atribut yang ditetapkan.\n\
+ attributes D Direktori R File Hanya-baca\n\
+ H File tersemunyi A File siap diarsipkan\n\
+ S File Sistem - Prefiks berarti tidak\n\
+ /B Menggunakan format sembarang (tanpa info heading atau ringkasan).\n\
+ /C Menampikan pemisah ribuan dalam ukuran file. Ini adlah\n\
+ standar. Gunakan /-C untuk mematikan tampilan pemisah.\n\
+ /D Sama seperti lebar tapi file adalah daftar diurut oleh kolom.\n\
+ /L Menggunakan huruf kecil.\n\
+ /N Format daftar panjang baru dimana nama file berada jauh di kanan.\n\
+ /O Daftar file yang diurut berdasarkan sortorder.\n\
+ sortorder N Nama (Alfabetik) S Ukuran (terkecil pertama)\n\
+ E Ekstensi (Alfabetik) D Tanggal/Jam (terlama pertama)\n\
+ G Grup direktori pertama - Prefiks untuk membalik urutan\n\
+ /P Menunda setelah setiap layar penuh informasi.\n\
+ /Q Menampilkan pemilik file.\n\
+ /S Menampilkan file dalam direktori dan semua subdirektorinya.\n\
+ /T Mengontrol field waktu mana atau dipakai untuk mengurut\n\
+ timefield C Pembuatan\n\
+ A Terakhir Diakses\n\
+ W Terakhir Ditulis\n\
+ /W Menggunakan format daftar lebar.\n\
+ /X Ini menampilkan nama pendek yang dibuat untuk nama file\n\
+ non-8dot3. Format yakni /N dengan nama pendek disisipkan\n\
+ sebelum nama panjang. Jika tidak ada nama pendek, kosng\n\
+ ditampilkan dalam tempatnya.\n\
+ /4 Menampilkan tahun empat-digit\n\n\
+Saklar mungkin ada dalam variabel lingkungan DIRCMD. Membatalkan saklar\n\
+preset dengan mengawali setiap saklar dengan - (minus)--contohnya, /-W.\n"
+
+STRING_DIR_HELP2, " Volume di drive %c adalah %s\n"
+STRING_DIR_HELP3, " Volume di drive %c tidak berlabel.\n"
+STRING_DIR_HELP4, " Nomor Seri Volume adalah %04X-%04X\n"
+STRING_DIR_HELP5, "\n Total File Didaftar:\n%16i File% 14s byte\n"
+STRING_DIR_HELP6, "%16i Dir% 15s byte\n"
+STRING_DIR_HELP7, "\n Direktori %s\n\n"
+STRING_DIR_HELP8, "%16i File% 14s byte\n"
+
+STRING_DIRSTACK_HELP1, "Menyimpan direktori sekarang untuk digunakan oleh perintah POPD, lalu\n\
+mengubah ke direktori yang ditetapkan.\n\n\
+PUSHD [path | ..]\n\n\
+ path Menetapkan direktori menjadi direktori sekarang\n"
+
+STRING_DIRSTACK_HELP2, "Mengubah ke direktori yang disimpan oleh perintah PUSHD.\n\nPOPD"
+
+STRING_DIRSTACK_HELP3, "Menampilkan isi tumpukan direktori.\n\nDIRS"
+
+STRING_DIRSTACK_HELP4, "Tumpukan direktori kosong"
+
+STRING_ECHO_HELP1, "Menampilkan pesan tanpa diakhiri carriage return dan line feed.\n\n\
+ ECHOS pesan"
+
+STRING_ECHO_HELP2, "Menampilkan pesan ke output kesalahan standar.\n\n\
+ ECHOERR pesan\n\
+ ECHOERR. menampilkan baris kosong"
+
+STRING_ECHO_HELP3, "Menampilkan pesan ke output kesalahan standar tanpa diakhiri carriage return dan line feed.\n\n\
+ ECHOSERR pesan"
+
+STRING_ECHO_HELP4, "Menampilkan pesan atau menukar perintah echoing on atau off.\n\n\
+ ECHO [ON | OFF]\n\
+ ECHO [pesan]\n\
+ ECHO. Menampilkan baris kosong\n\n\
+Ketik ECHO tanpa parameter untuk menampilkan setelan ECHO saat ini."
+
+STRING_ECHO_HELP5, "ECHO adalah %s\n"
+
+STRING_EXIT_HELP, "Keluar dari interpreter baris perintah.\n\nEXIT [/b] [ExitCode]\n\n\
+ /B Keluar dari hanya file batch. \n\
+ Jika dijalankan di luar file batch ia akan keluar dari cmd.exe\n\
+ ExitCode Nilai ini akan ditempatkan ke ERRORLEVEL saat keluar\n"
+
+STRING_FOR_HELP1, "Menjalankan perintah yang ditetapkan untuk setiap file dalam set file\n\n\
+FOR %variabel IN (set) DO perintah [parameter]\n\n\
+ %variabel Menetapkan parameter yang bisa diganti.\n\
+ (set) Mentetapkan sebuah set dari satu atau lebih file. Wildcards boleh dipakai.\n\
+ perintah Menetapkan perintah yang dilakukan untuk setiap file.\n\
+ parameter Menetapkan parameter atau saklar untuk perintah yang dieteapkan.\n\n\
+Untuk menggunakan perintah FOR dalam program batch, tetapkan %%variable daripada\n\
+%variabel.\n"
+
+STRING_FREE_HELP1, "\nVolume di drive %s adalah %-11s\n\
+ Nomor Seri adalah %s\n\
+ %16s byte total ruang disk\n\
+ %16s byte dipakai\n\
+ %16s byte tersisa\n"
+
+STRING_FREE_HELP2, "Menampilkan informasi drive.\n\nFREE [drive: ...]\n"
+
+STRING_IF_HELP1, "Melakukan pemrosesan kondisional dalam program batch.\n\n\
+ IF [NOT] ERRORLEVEL nomor perintah\n\
+ IF [NOT] string1==string2 perintah\n\
+ IF [NOT] EXIST filename perintah\n\
+ IF [NOT] DEFINED variabel perintah\n\n\
+NOT Menetapkan bahwa CMD harus melakukan hanya perintah jika\n\
+ kondisi adalah salah\n\
+ERRORLEVEL nomor Menetapkan kondisi benar jika program terakhir menghasilkan\n\
+ kode exit sama dengan nomor yang ditetapkan.\n\
+perintah Menetapkan perintah untuk dilakukan jika kondisi dipenuhi.\n\
+string1==string2 Menetapkan kondisi benar jika string teks yang ditetapkan\n\
+ sama.\n\
+EXIST filename Menetapkan kondisi benar jika nama file ada.\n\
+DEFINED variable Menetapkan kondisi benar jika variabel didefinisikan.\n"
+
+STRING_GOTO_HELP1, "Mengarahkan CMD ke baris berlabel dalam naskah batch.\n\n\
+GOTO label\n\n\
+ label Menetapkan string teks yang digunakan dalam naskah batch sebagai label.\n\n\
+Anda mengetik label pada sebuah baris, dimulai dengan titik dua."
+
+STRING_LABEL_HELP1, "Menampilkan atau mengubah label drive.\n\nLABEL [drive:][label]\n"
+
+STRING_LABEL_HELP2, "Volume di drive %c: adalah %s\n"
+STRING_LABEL_HELP3, "Volume di drive %c: tidak berlabel\n"
+STRING_LABEL_HELP4, "Nomor Seri Volume adalah %04X-%04X\n"
+STRING_LABEL_HELP5, "Label Drive (11 Karakter, ENTER jika sudah)? "
+
+STRING_LOCALE_HELP1, "Waktu saat ini"
+
+STRING_MKDIR_HELP, "Membuat direktori.\n\n\
+MKDIR [drive:]path\nMD [drive:]path"
+
+STRING_MEMMORY_HELP1, "Menampilkan jumlah memori sistem.\n\nMEMORY"
+
+STRING_MEMMORY_HELP2, "\n %12s%% beban memori.\n\n\
+ %13s byte total fisik RAM.\n\
+ %13s byte fisik RAM tersedia.\n\n\
+ %13s byte total file page.\n\
+ %13s byte file page tersedia.\n\n\
+ %13s byte total memori virtual.\n\
+ %13s byte memori virtual tersedia.\n"
+
+STRING_MISC_HELP1, "Tekan tombol untuk melanjutkan...\n"
+
+STRING_MOVE_HELP1, "Timpa %s (Ya/Tidak/Semua)? "
+
+STRING_MOVE_HELP2, "Memindahkan file dan mengganti nama file dan direktori.\n\n\
+Untuk memindahkan satu atau lebih file:\n\
+MOVE [/N][drive:][path]filename1[,...] tujuan\n\n\
+Untuk mengganti nama direktori:\n\
+MOVE [/N][drive:][path]dirname1 dirname2\n\n\
+ [drive:][path]filename1 Menetapkan lokasi dan nama file\n\
+ yang ingin anda pindahkan.\n\
+ /N Tidak apapun. Lakukan apapun kecuali memindahkan file dan direktori.\n\n\
+Batasan saat ini:\n\
+ - Anda tidak bisa memindahkan file atau direktori dari satu drive ke lainnya.\n"
+
+STRING_MSGBOX_HELP, "menampilkan kotak pesan dan menghasilkan respon pengguna\n\n\
+MSGBOX type ['title'] prompt\n\n\
+type tombol ditampilkan\n\
+ nilai yang mungkin adalah: OK, OKCANCEL,\n\
+ YESNO, YESNOCANCEL\n\
+title judul kotak pesan\n\
+prompt teks ditampilkan dengan kotak pesan\n\n\n\
+ERRORLEVEL disetel berdasarkan tombol yang ditekan:\n\n\
+YA : 10 | TIDAK : 11\n\
+OK : 10 | BATAL : 12\n"
+
+STRING_PATH_HELP1, "Menampilkan atau menyetel path pencarian untuk file executable.\n\n\
+PATH [[drive:]path[;...]]\nPATH ;\n\n\
+Ketik PATH ; untuk membersihkan semua setelan path-pencarian dan shell\n\
+perintah langsung untuk mencari hanya dalam direktori saat ini.\n\
+Ketik PATH tanpa parameter untuk menampilkan path saat ini.\n"
+
+STRING_PROMPT_HELP1, "Mengubah prompt perintah.\n\n\
+PROMPT [teks]\n\n\
+ teks Menetapkan prompt perintah baru.\n\n\
+Prompt bisa dibuat dari karakter normal dan kode spesial berikut:\n\n\
+ $A & (Ampersand)\n\
+ $B | (pipe)\n\
+ $C ( (Tanda kurung Kiri)\n\
+ $D Tanggal saat ini\n\
+ $E Kode Escape (ASCII code 27)\n\
+ $F ) (Tanda kurung Kanan)\n\
+ $G > (Tanda lebih-dari)\n\
+ $H Backspace (menghapus karakter sebelumnya)\n\
+ $L < (tanda kurang-dari)\n\
+ $N Drive saat ini\n\
+ $P Drive dan path saat ini\n\
+ $Q = (tanda sama dengan)\n\
+ $T Jam saat ini\n\
+ $V Nomor versi OS\n\
+ $_ Carriage return dan linefeed\n\
+ $$ $ (tanda dolar)\n"
+
+STRING_PAUSE_HELP1, "Menunda eksekusi file batch dan menampilkan pesan berikut:\n\
+'Tekan tombol untuk melanjutkan...' atau pesan yang dibuat pengguna.\n\n\
+PAUSE [pesan]"
+
+STRING_PROMPT_HELP2, " $+ Menampilkan kedalaman tumpukan direktori saat ini"
+
+STRING_PROMPT_HELP3, "\nKetik PROMPT tanpa parameter untuk mereset prompt ke setelan standar."
+
+STRING_REM_HELP, "Memulai baris komentar dalam file batch.\n\nREM [Komentar]"
+
+STRING_RMDIR_HELP, "Menghapus direktori.\n\n\
+RMDIR [drive:]path\nRD [drive:]path\n\
+/S Menghapus semua file dan folder di dalam target\n\
+/Q Tidak bertanya pada pengguna\n"
+STRING_RMDIR_HELP2, "Direktori tidak kosong!\n"
+
+STRING_REN_HELP1, "Mengganti nama file/direktori.\n\n\
+RENAME [/E /N /P /Q /S /T] nama_lama ... nama_baru\n\
+REN [/E /N /P /Q /S /T] nama_lama ... nama_baru\n\n\
+ /E Tidak ada pesan.\n\
+ /N Tidak.\n\
+ /P Menanyakan konfirmasi sebelum mengganti nama setiap file.\n\
+ (Belum diimplementasikan!)\n\
+ /Q Diam-diam.\n\
+ /S Mengganti nama subdirektori.\n\
+ /T Menampilkan jumlah total dari file yang diganti nama.\n\n\
+Catatan bahwa anda tidak bisa menetapkan drive baru atau path untuk\n\
+tujuan anda. Gunakan perintah MOVE untuk keperluan itu.\n"
+
+STRING_REN_HELP2, " %lu file diganti nama\n"
+
+STRING_REN_HELP3, " %lu file diganti nama\n"
+
+STRING_SHIFT_HELP, "Mengubah posisi parameter yang bisa diganti dalam file batch.\n\n\
+SHIFT [DOWN]"
+
+STRING_SCREEN_HELP, "memindahkan kursor dan secara opsional mencetak teks\n\n\
+SCREEN row col [text]\n\n\
+ row baris ke mana kursor dipindahkan\n\
+ col kolom ke mana kursor dipindahkan"
+
+STRING_SET_HELP, "Menampilkan, menyetel, atau menghapus variabel lingkungan.\n\n\
+SET [variable[=][string]]\n\n\
+ variable Menetapkan nama variabel-lingkungan.\n\
+ string Menetapkan deretan karakter untuk ditempatkan ke variabel.\n\n\
+Ketik SET tanpa parameter untuk menampilkan variabel lingkungan sekarang.\n"
+
+STRING_START_HELP1, "Memulai sebuah perintah.\n\n\
+START command\n\n\
+ command Menetapkab perintah yang dilaksanakan.\n\n\
+Untuk saat ini semua perintah dimulai secara asinkronos.\n"
+
+STRING_TITLE_HELP, "Menyetel judul jendela untuk jendela prompt perintah.\n\n\
+TITLE [string]\n\n\
+string Menetapkan judul untuk jendela prompt perintah.\n"
+
+STRING_TIME_HELP1, "Menampilkan atau menyetel jam sistem.\n\n\
+TIME [/T][time]\n\n\
+ /T hanya menampilkan\n\n\
+Ketik TIME tanpa parameter untuk menampilkan setelan jam saat ini dan\n\
+meminta yang baru. Tekan ENTER untuk membiarkan jam tetap sama.\n"
+
+STRING_TIME_HELP2, "Masukkan jam baru: "
+
+STRING_TIMER_HELP1, "Berlalu %d mdetik\n"
+
+STRING_TIMER_HELP2, "Berlalu %02d%c%02d%c%02d%c%02d\n"
+
+STRING_TIMER_HELP3, "mengijinkan penggunaan sepuluh stopwatch.\n\n\
+TIMER [ON|OFF] [/S] [/n] [/Fn]\n\n\
+ ON menyetel stopwatch ON\n\
+ OFF menyetel stopwatch OFF\n\
+ /S Memisahkan jam. Mengembalikan pemisahan jam stopwatch\n\
+ tanpa mengubah nilainya\n\
+ /n Menetapkan nomor stopwatch.\n\
+ Stopwatch yang tersedia adalah 0 sampai 9\n\
+ Jika tidak ditetapkan standarnya adalah 1\n\
+ /Fn Format output\n\
+ n bisa berupa:\n\
+ 0 milidetik\n\
+ 1 hh%cmm%css%cdd\n\n\
+jika tidak ada yang ON, OFF atau /S ditetapkan dalam perintah\n\
+akan menghidupkan/mematikan keadaan stopwatch\n\n"
+
+STRING_TYPE_HELP1, "Menampilkan isi dari file teks.\n\nTYPE [drive:][path]filename \n\
+ /P Menampilkan satu layar output sekali waktu.\n"
+
+STRING_VERIFY_HELP1, "Perintah ini hanya dummy!!\n\
+Menyetel apakah memverifikasi bawa file anda ditulis dengan benar ke\n\
+disk.\n\n\
+VERIFY [ON | OFF]\n\n\
+Ketik VERIFY tanpa parameter untuk menampilkan setelan VERIFY sekarang.\n"
+
+STRING_VERIFY_HELP2, "VERIFY adalah %s.\n"
+
+STRING_VERIFY_HELP3, "Harus menetapkan ON atau OFF."
+
+STRING_VERSION_HELP1, "Menampilkan Displays shell version information\n\n\
+VER [/C][/R][/W]\n\n\
+ /C Menampilkan penghargaan.\n\
+ /R Menampilkan informasi redistribusi.\n\
+ /W menampilkan informasi jaminan."
+
+STRING_VERSION_HELP2, " datang dengan MUTLAK TANPA JAMINAN; untuk lengkapnya\n\
+ketik: 'ver /w'. Program ini adalah software bebas; anda bisa membagikannya\n\
+di bawah kondisi tertentu; ketik 'ver /r' untuk lengkapnya. Ketik 'ver /c'\n\
+untuk daftar penghargaan."
+
+STRING_VERSION_HELP3, "\n Program ini didistribusikan dengan harapan berguna,\n\
+ tetapi TANPA JAMINAN APAPUN; bahkan tanpa jaminan berarti dari\n\
+ MERCANTABILITAS atau KECUKUPAN UNTUK KEPERLUAN TERTENTU. Lihat \n\
+ GNU General Public License untuk lebih jelasnya."
+
+STRING_VERSION_HELP4, "\n Program ini adalah software bebas; anda dapat mendistribusikan dan/atau\n\
+ mengubahnya di bawah term GNU General Public License seperti dipublikasikan oleh Free Software Foundation; baik Lisensi versi 2, atau (menurut opini anda) setiap versi berikutnya.\n"
+
+STRING_VERSION_HELP5, "\nKirim laporan bug ke <ros-dev(a)reactos.org>.\n\
+Pemutakiran tersedia di: http://www.reactos.org"
+
+STRING_VERSION_HELP6, "\nVersi FreeDOS ditulis oleh:\n"
+
+STRING_VERSION_HELP7, "\nVersi ReactOS ditulis oleh:\n"
+
+STRING_VOL_HELP1, " Volume dalam drive %c: adalah %s"
+STRING_VOL_HELP2, " Volume dalam drive %c: tidak berlabel"
+STRING_VOL_HELP3, " Nomor Seri Volume adalah %04X-%04X\n"
+STRING_VOL_HELP4, "Menampilkan label dan nomor seri volume disk, jika ada.\n\nVOL [drive:]"
+
+STRING_WINDOW_HELP1, "mengubah aspek jendela konsol\n\n\
+WINDOW [/POS[=]left,top,width,heigth]\n\
+ [MIN|MAX|RESTORE] ['title']\n\n\
+/POS menetapkan penempatan dan dimensi jendela\n\
+MIN mengecilkan jendela\n\
+MAX memaksimalkan jendela\n\
+RESTORE mengembalikan jendela"
+
+STRING_WINDOW_HELP2, "mengubah aspek jendela konsol\n\n\
+ACTIVATE 'window' [/POS[=]left,top,width,heigth]\n\
+ [MIN|MAX|RESTORE] ['title']\n\n\
+window tile jendela yang melakukan aksi\n\
+/POS menetapkan penempatan dan dimensi jendela\n\
+MIN mengecilkan jendela\n\
+MAX memaksimalkan jendela\n\
+RESTORE mengembalikan jendela\n\
+title judul baru\n"
+
+
+STRING_HELP1, "Daftar semua perintah yang tersedia (+ deskripsi)\n\n\
+ command /? Untuk informasi lengkap pada perintah tertentu\n\n\
+? Daftar semua perintah yang tersedia tanpa deskripsi.\n\
+ALIAS Menyetel, menghapus atau menampilkan alias.\n\
+ATTRIB Menampilkan atau mengubah atribut file.\n\
+BEEP Membunyikan speaker.\n\
+CALL Memanggil program batch dari yang lain.\n\
+CD Menampilkan nama atau mengubah direktori saat ini.\n\
+CHCP Menampilkan atau menyetel nomor halaman kode aktif.\n\
+CHOICE Menunggu pengguna untuk memilih satu dari set pilihan.\n\
+CLS Membersihkan layar.\n\
+CMD Memulai instan interpreter perintah ReactOS baru.\n\
+COLOR Menyetel warna standar latar belakang dan depan konsol.\n\
+COPY Mengcopy satu atau lebih file ke lokasi lain.\n\
+DATE Menampilkan atau menyetel tanggal.\n\
+DELETE Menghapus satu atau lebih file.\n\
+DIR Menampilkan daftar file dan subdirektori dalam sebuah direktori.\n\
+ECHO Menampilkan pesan, atau menghidupkan/mematikan echo perintah.\n\
+ERASE Menghapus satu atau lebih file.\n\
+EXIT Keluar dari program CMD.EXE (interpreter perintah).\n\
+FOR Menjalankan perintah tertentu untuk setiap file atau set file.\n\
+FREE (bebas) ruang disc.\n\
+GOTO Melangsungkan interpreter perintah ReactOS ke baris berlabel dalam\n\
+ program batch.\n\
+HELP Menyediakan informasi Bantuan untuk perintah ReactOS.\n\
+HISTORY Mendaftarkan semua perintah yang sudah digunakan\n\
+IF Melakukan pemrosesan kondisional dalam program batch.\n\
+LABEL Membuat, mengubah, atau menghapus label volume disk.\n\
+MD Membuat sebuah direktori.\n\
+MKDIR Membuat sebuah direktori.\n\
+MOVE Memindahkan satu atau lebih file dari satu direktori ke yang lainnya\n\
+ directory.\n\
+PATH Menampilkan atau menyetel path pencarian untuk file executable.\n\
+PAUSE Menunda proses file batch dan menampilkan pesan.\n\
+POPD Mengembalikan nilai sebelumnya dari direktori saat ini yang\n\
+ disimpan oleh PUSHD.\n\
+PROMPT Mengubah prompt perintah.\n\
+PUSHD Menyimpan direktori saat ini lalu mengubahnya.\n\
+RD Menghapus direktori.\n\
+REM Merekam komentar (remarks) dalam file batch.\n\
+REN Mengganti nama file.\n\
+RENAME Mengganti nama file.\n\
+RMDIR Menghapus direktori.\n\
+SCREEN Memindahkan kursor dan secara opsional mencetak teks.\n\
+SET Menampilkan, menyetel, atau menghapus variabel lingkungan ReactOS.\n\
+SHIFT Mengangkat posisi parameter yang bisa diganti dalam file batch.\n"
+STRING_HELP2, "START Memulai jendela terpisah untuk menjalankan perintah atau program tertentu.\n\
+ Menjalankan perintah.\n\
+TIME Menampilkan atau menyetel jam sistem.\n\
+TIMER Mengijinkan penggunaan sepuluh stopwatch.\n\
+TITLE Menyetel judul jendela untuk ses CMD.EXE.\n\
+TYPE Menampilkan isi dari file teks.\n\
+VER Menampilkan versi ReactOS.\n\
+VERIFY Memberitahu ReactOS apakah memverifikasi bahwa file anda ditulis\n\
+ dengan benar ke sebuah disk.\n\
+VOL Menampilkan label volume disk dan nomor seri.\n"
+
+
+STRING_CHOICE_OPTION, "YT"
+STRING_COPY_OPTION, "YTS"
+
+
+STRING_ALIAS_ERROR, "Baris perintah terlalu panjang setelah ekspansi alias!\n"
+STRING_BATCH_ERROR, "Kesalaham membuka file batch\n"
+STRING_CHCP_ERROR1, "Halaman kode aktif: %u\n"
+STRING_CHCP_ERROR4, "Halaman kode tidak benar\n"
+STRING_CHOICE_ERROR, "Opsi tidak benar. Format diharapkan: /C[:]options"
+STRING_CHOICE_ERROR_TXT, "Opsi tidak benar. Format diharapkan: /T[:]c,nn"
+STRING_CHOICE_ERROR_OPTION, "Opsi tidak benar: %s"
+STRING_MD_ERROR, "Subdirektori atau file sudah ada.\n"
+STRING_MD_ERROR2, "Path ke folder baru tidak ada.\n"
+STRING_CMD_ERROR1, "Tidak bisa mengalihkan input dari file %s\n"
+STRING_CMD_ERROR2, "Kesalahan membuat file termporal untuk pipe data\n"
+STRING_CMD_ERROR3, "Tidak bisa mengalihkan ke file %s\n"
+STRING_CMD_ERROR4, "Menjalankan %s...\n"
+STRING_CMD_ERROR5, "Menjalankan cmdexit.bat...\n"
+STRING_COLOR_ERROR1, "Warna sama salah! (Latar belakang dan latar depan tidak bisa berwarna sama)"
+STRING_COLOR_ERROR2, "Kesalahan dalam spesifikasi warna"
+STRING_COLOR_ERROR3, "Warna %x\n"
+STRING_COLOR_ERROR4, "warna sama salah!"
+STRING_CONSOLE_ERROR, "Kesalahan tidak dikenal: %d\n"
+STRING_COPY_ERROR1, "Salah: Tidak dapat membuka sumber - %s!\n"
+STRING_COPY_ERROR2, "Salah: Tidak dapat mengcopy ke dirinya sendiri!\n"
+STRING_COPY_ERROR3, "Kesalahan menulis tujuan!\n"
+STRING_COPY_ERROR4, "Salah: Belum diimplementasikan!\n"
+STRING_DATE_ERROR, "Tanggal tidak benar."
+STRING_DEL_ERROR5, "File %s akan dihapus! "
+STRING_DEL_ERROR6, "Anda yakin (Y/N)?"
+STRING_DEL_ERROR7, "Menghapus: %s\n"
+STRING_ERROR_ERROR1, "Kesalahan tidak dikenal! Kode kesalahan: 0x%lx\n"
+STRING_ERROR_ERROR2, "Sintaks salah"
+STRING_FOR_ERROR1, "'in' kurang dalam pernyataan for."
+STRING_FOR_ERROR2, "tidak ada kurung ditemukan."
+STRING_FOR_ERROR3, "'do' hilang."
+STRING_FOR_ERROR4, "tidak ada perintah setelah 'do'."
+STRING_FREE_ERROR1, "Drive tidak benar"
+STRING_FREE_ERROR2, "tak berlabel"
+STRING_GOTO_ERROR1, "Tidak ada label ditetapkan untuk GOTO"
+STRING_GOTO_ERROR2, "Label '%s' tidak ditemukan\n"
+
+STRING_MOVE_ERROR1, "[OK]\n"
+STRING_MOVE_ERROR2, "[Salah]\n"
+
+STRING_REN_ERROR1, "MoveFile() gagal. Kesalahan: %lu\n"
+
+STRING_START_ERROR1, "Tidak ada dukungan batch untuk saat ini!"
+
+STRING_TIME_ERROR1, "Jam tidak benar."
+
+STRING_TYPE_ERROR1, "Opsi tidak benar '/%s'\n"
+
+STRING_WINDOW_ERROR1, "jendela tidak ditemukan"
+
+
+STRING_ERROR_PARAMETERF_ERROR, "Format parameter tidak benar - %c\n"
+STRING_ERROR_INVALID_SWITCH, "Saklar tidak benar - /%c\n"
+STRING_ERROR_TOO_MANY_PARAMETERS, "Terlalu banyak parameter - %s\n"
+STRING_ERROR_PATH_NOT_FOUND, "Path tidak ditemukan\n"
+STRING_ERROR_FILE_NOT_FOUND, "File tidak ditemukan\n"
+STRING_ERROR_REQ_PARAM_MISSING, "Parameter yang diperlukan kurang\n"
+STRING_ERROR_INVALID_DRIVE, "Spesifikasi drive tidak benar\n"
+STRING_ERROR_INVALID_PARAM_FORMAT, "Format parameter tidak benar - %s\n"
+STRING_ERROR_BADCOMMAND, "Perintah atau nama file salah\n"
+STRING_ERROR_OUT_OF_MEMORY, "Kesalahan kekurangan memori.\n"
+STRING_ERROR_CANNOTPIPE, "Salah! Tidak bisa melakukan pipe! Tidak bisa membuka file temporal!\n"
+STRING_ERROR_D_PAUSEMSG, "Tekan tombol untuk melanjutkan . . ."
+STRING_ERROR_DRIVER_NOT_READY, "Drive tidak siap"
+
+STRING_PATH_ERROR, "CMD: Tidak dalam lingkungan '%s'\n"
+
+STRING_CMD_SHELLINFO, "\nInterpreter Baris Perintah ReactOS"
+STRING_VERSION_RUNVER, " berjalan pada %s"
+STRING_COPY_FILE , " %d file di-copy\n"
+STRING_DELETE_WIPE, "dihapus"
+STRING_FOR_ERROR, "spesifikasi variabel tidak baik."
+STRING_SCREEN_COL, "Nilai untuk kolom tidak benar"
+STRING_SCREEN_ROW, "Nilai untuk baris tidak benar"
+STRING_TIMER_TIME "Timer %d adalah %s: "
+
+STRING_INVALID_OPERAND, "Operand tidak benar."
+STRING_EXPECTED_CLOSE_PAREN, "Diharapkan ')'."
+STRING_EXPECTED_NUMBER_OR_VARIABLE,"Nomor atau nama variabel diharapkan."
+STRING_SYNTAX_COMMAND_INCORRECT, "Sintaks perintah tidak benar."
+
+}
Modified: trunk/reactos/base/shell/explorer/explorer_intres.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/explorer/explor…
==============================================================================
--- trunk/reactos/base/shell/explorer/explorer_intres.rc (original)
+++ trunk/reactos/base/shell/explorer/explorer_intres.rc Mon Feb 26 01:45:32 2007
@@ -114,6 +114,7 @@
"#include ""explorer-fr.rc""\r\n"
"#include ""explorer-gr.rc""\r\n"
"#include ""explorer-hu.rc""\r\n"
+ "#include ""explorer-id.rc""\r\n"
"#include ""explorer-it.rc""\r\n"
"#include ""explorer-jp.rc""\r\n"
"#include ""explorer-nl.rc""\r\n"
Modified: trunk/reactos/ntoskrnl/mm/sysldr.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/sysldr.c?rev=2…
==============================================================================
--- trunk/reactos/ntoskrnl/mm/sysldr.c (original)
+++ trunk/reactos/ntoskrnl/mm/sysldr.c Mon Feb 26 01:45:32 2007
@@ -1545,8 +1545,8 @@
if (!Flags)
{
/* It wasn't, so just return the data */
- *ModuleObject = LdrEntry;
- *ImageBaseAddress = LdrEntry->DllBase;
+ if (ModuleObject) *ModuleObject = LdrEntry;
+ if (ImageBaseAddress) *ImageBaseAddress = LdrEntry->DllBase;
Status = STATUS_IMAGE_ALREADY_LOADED;
}
else
Added: trunk/reactos/subsystems/ntvdm/id-ID.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/ntvdm/id-ID.rc?…
==============================================================================
--- trunk/reactos/subsystems/ntvdm/id-ID.rc (added)
+++ trunk/reactos/subsystems/ntvdm/id-ID.rc Mon Feb 26 01:45:32 2007
@@ -1,0 +1,9 @@
+#include "resource.h"
+
+LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT
+STRINGTABLE DISCARDABLE
+{
+
+STRING_WelcomeMsg, "Dukungan ReactOS Virtual DOS Machine.\n"
+STRING_PromptMsg, "Ketik r<cr> untuk menjalankan, s<cr> untuk mematikan atau q<cr> untuk keluar sekarang."
+}
Modified: trunk/reactos/subsystems/ntvdm/ntvdm.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/ntvdm/ntvdm.rc?…
==============================================================================
--- trunk/reactos/subsystems/ntvdm/ntvdm.rc (original)
+++ trunk/reactos/subsystems/ntvdm/ntvdm.rc Mon Feb 26 01:45:32 2007
@@ -11,6 +11,7 @@
#include "es-ES.rc"
#include "fr-FR.rc"
#include "hu-HU.rc"
+#include "id-ID.rc"
#include "ja-JP.rc"
#include "nb-NO.rc"
#include "th-TH.rc"
Added: trunk/reactos/subsystems/win32/csrss/win32csr/lang/id-ID.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/win…
==============================================================================
--- trunk/reactos/subsystems/win32/csrss/win32csr/lang/id-ID.rc (added)
+++ trunk/reactos/subsystems/win32/csrss/win32csr/lang/id-ID.rc Mon Feb 26 01:45:32 2007
@@ -1,0 +1,48 @@
+LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT
+
+IDD_END_NOW DIALOG DISCARDABLE 0, 0, 200, 95
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Akhir Program - "
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Mengakhiri Program... Harap menunggu",IDC_STATIC,7,7,186,11
+ CONTROL "Progres",IDC_PROGRESS,"msctls_progress32",WS_BORDER,
+ 7,20,186,13
+ LTEXT "Jika anda memilih untuk segera mengakhiri program, anda akan kehilangan data yang belum disimpan. Untuk mengakhiri program sekarang, klik Akhiri Sekarang.",
+ IDC_STATIC,7,40,186,26
+ DEFPUSHBUTTON "&Akhiri Sekarang",IDC_END_NOW,150,71,43,17
+END
+
+IDD_NOT_RESPONDING DIALOG DISCARDABLE 0, 0, 192, 122
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Mengakhiri Program - "
+FONT 8, "MS Shell Dlg"
+BEGIN
+ DEFPUSHBUTTON "Batal",IDCANCEL,142,98,43,17
+ PUSHBUTTON "&Akhiri Sekarang",IDC_END_NOW,78,98,43,17
+ LTEXT "Program ini tidak merespon",IDC_STATIC,7,7,178,8
+ LTEXT "Untuk kembali ke ReactOS dan memeriksa status program, klik Batal",
+ IDC_STATIC,7,26,178,16
+ LTEXT "Jika anda memilih untuk segera mengakhiri program, anda akan kehilangan data yang belum disimpan. Untuk mengakhiri program sekarang, klik Akhiri Sekarang.",
+ IDC_STATIC,7,53,178,26
+END
+
+STRINGTABLE
+BEGIN
+ IDS_EDIT "Edit"
+ IDS_MARK "Tandai"
+ IDS_COPY "Copy\tEnter"
+ IDS_PASTE "Paste"
+ IDS_SELECTALL "Pilih Semua"
+ IDS_SCROLL "Gulung"
+ IDS_FIND "Cari..."
+ IDS_DEFAULTS "Standar"
+ IDS_PROPERTIES "Properti"
+ IDS_SCROLLHERE "Gulung ke Sini"
+ IDS_SCROLLTOP "Gulung ke Atas"
+ IDS_SCROLLBOTTOM "Gulung ke Bawah"
+ IDS_SCROLLPAGE_UP "Halaman Naik"
+ IDS_SCROLLPAGE_DOWN "Halaman Turun"
+ IDS_SCROLLUP "Gulung Naik"
+ IDS_SCROLLDOWN "Gulung Turun"
+END
Modified: trunk/reactos/subsystems/win32/csrss/win32csr/rsrc.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/win…
==============================================================================
--- trunk/reactos/subsystems/win32/csrss/win32csr/rsrc.rc (original)
+++ trunk/reactos/subsystems/win32/csrss/win32csr/rsrc.rc Mon Feb 26 01:45:32 2007
@@ -6,4 +6,5 @@
1 ICON DISCARDABLE res/terminal.ico
#include "lang/en-US.rc"
+#include "lang/id-ID.rc"
#include "lang/uk-UA.rc"
Author: arty
Date: Sun Feb 25 10:18:11 2007
New Revision: 25903
URL: http://svn.reactos.org/svn/reactos?rev=25903&view=rev
Log:
Remove my branch pending reconstruction at known good rev 25750.
Removed:
branches/arty-stable/reactos/