summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRüdiger Timm <rt@openoffice.org>2004-10-28 15:25:00 +0000
committerRüdiger Timm <rt@openoffice.org>2004-10-28 15:25:00 +0000
commitf6c285bb55b79dd187222c6e3c568210177d127a (patch)
tree870013af6d21e4768ac9635637536d68decc576c
parentb73261df29da617c51f29e2aadf8cd53493ace6a (diff)
INTEGRATION: CWS valgrind02 (1.3.340); FILE MERGED
2004/10/20 12:01:57 mhu 1.3.340.4: #i35209# Removed special handling for WinMain() case as standard 'argc' and 'argv' are always provided by msvcrt (as __argc and __argv externals) and can thus be passed to osl_setCommandArgs(). 2004/10/18 17:26:36 mhu 1.3.340.3: #i35209# Corrected forward declaration for 'osl_setCommandArgs()' to be visible for all platforms. 2004/10/11 17:20:47 mhu 1.3.340.2: #i35209# Added formal parameters 'argc', 'argv' to 'sal_main()', added SAL_IMPLEMENT_MAIN_WITH_ARGS(_argc_, _argv_) macro to allow for more widespread usage in classical 'main(int argc, char** argv)' functions. 2004/10/08 15:53:23 mhu 1.3.340.1: #i35209# Added function 'osl_setCommandArgs()', adapted 'osl_getExecutableFile()' and 'osl_getCommandArg[Count]()', cleaned up previous 'getCmdLine()' mess, removed unused / obsolete code.
-rw-r--r--sal/inc/sal/main.h48
1 files changed, 31 insertions, 17 deletions
diff --git a/sal/inc/sal/main.h b/sal/inc/sal/main.h
index ced19b284f13..452de0211ee0 100644
--- a/sal/inc/sal/main.h
+++ b/sal/inc/sal/main.h
@@ -2,9 +2,9 @@
*
* $RCSfile: main.h,v $
*
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
- * last change: $Author: hro $ $Date: 2001-02-27 10:44:53 $
+ * last change: $Author: rt $ $Date: 2004-10-28 16:25:00 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -72,13 +72,19 @@ extern "C" {
/* Prototype of sal main entry */
-int SAL_CALL sal_main();
+int SAL_CALL sal_main (int argc, char ** argv);
+void SAL_CALL osl_setCommandArgs(int argc, char ** argv);
/* Definition macros for CRT entries */
#ifdef SAL_W32
+#ifndef INCLUDED_STDLIB_H
+#include <stdlib.h>
+#define INCLUDED_STDLIB_H
+#endif
+
/* Sorry but this is neccessary cause HINSTANCE is a typedef that differs (C++ causes an error) */
#if 0
@@ -107,42 +113,44 @@ DECLARE_HANDLE(HINSTANCE);
#endif
-
#define SAL_DEFINE_CRT_ENTRY() \
-int __cdecl main() \
+int __cdecl main(int argc, char ** argv) \
{ \
- return sal_main(); \
+ osl_setCommandArgs(argc, argv); \
+ return sal_main(argc, argv); \
} \
int WINAPI WinMain( HINSTANCE _hinst, HINSTANCE _dummy, char* _cmdline, int _nshow ) \
{ \
- return sal_main(); \
+ int argc = __argc; char ** argv = __argv; \
+ osl_setCommandArgs(argc, argv); \
+ return sal_main(argc, argv); \
}
-
#else /* ! SAL_W32 */
#define SAL_DEFINE_CRT_ENTRY() \
-int main() \
+int main(int argc, char ** argv) \
{ \
- return sal_main(); \
+ osl_setCommandArgs(argc, argv); \
+ return sal_main(argc, argv); \
} \
-#endif
+#endif /* ! SAL_W32 */
/* Implementation macro */
-#define SAL_IMPLEMENT_MAIN() \
+#define SAL_IMPLEMENT_MAIN_WITH_ARGS(_argc_, _argv_) \
SAL_DEFINE_CRT_ENTRY() \
- int SAL_CALL sal_main()
+ int SAL_CALL sal_main(int _argc_, char ** _argv_)
+#define SAL_IMPLEMENT_MAIN() SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv)
-/*
- "How to use" Example:
+/*
+ "How to use" Examples:
#include <sal/main.h>
-
SAL_IMPLEMENT_MAIN()
{
DoSomething();
@@ -150,8 +158,14 @@ int main() \
return 0;
}
-*/
+ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv)
+ {
+ DoSomethingWithArgs(argc, argv);
+ return 0;
+ }
+
+*/
#ifdef __cplusplus
} /* extern "C" */