1 /**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sal.hxx"
26
27 //########################################
28 // includes
29
30 #if ( defined WNT ) // Windows
31 #include <tools/prewin.h>
32 # define UNICODE
33 # define _UNICODE
34 # define WIN32_LEAN_AND_MEAN
35 // # include <windows.h>
36 # include <tchar.h>
37 #include <tools/postwin.h>
38 #else
39 # include <unistd.h>
40 #endif
41
42 #include <stdio.h>
43 #include <stdlib.h>
44 #include <iostream>
45 #include <fstream>
46
47 #include <rtl/ustring.hxx>
48
49 //########################################
50 // defines
51
52 #ifdef WNT
53 # define SLEEP(t) (Sleep((t)*1000))
54 #else
55 # define SLEEP(t) (sleep((t)))
56 #endif
57
58 //########################################
wait_for_seconds(char * time)59 void wait_for_seconds(char* time)
60 {
61 SLEEP(atoi(time));
62 }
63
64 //########################################
65
66 #ifdef WNT
67 //########################################
w_to_a(LPCTSTR _strW,LPSTR strA,DWORD size)68 void w_to_a(LPCTSTR _strW, LPSTR strA, DWORD size)
69 {
70 LPCWSTR strW = reinterpret_cast<LPCWSTR>(_strW);
71 WideCharToMultiByte(CP_ACP, 0, strW, -1, strA, size, NULL, NULL);
72 }
73 //########################################
dump_env(char * file_path)74 void dump_env(char* file_path)
75 {
76 LPTSTR env = reinterpret_cast<LPTSTR>(
77 GetEnvironmentStrings());
78 LPTSTR p = env;
79
80 std::ofstream file(file_path);
81
82 char buffer[32767];
83 while (size_t l = _tcslen(reinterpret_cast<wchar_t*>(p)))
84 {
85 w_to_a(p, buffer, sizeof(buffer));
86 file << buffer << std::endl;
87 p += l + 1;
88 }
89 FreeEnvironmentStrings(env);
90 }
91 #else
92 extern char** environ;
93
dump_env(char * file_path)94 void dump_env(char* file_path)
95 {
96 std::ofstream file(file_path);
97 for (int i = 0; NULL != environ[i]; i++)
98 file << environ[i] << std::endl;
99 }
100 #endif
101
102 //########################################
main(int argc,char * argv[])103 int main(int argc, char* argv[])
104 {
105 rtl::OUString s;
106
107 //t_print("Parameter: ");
108 printf("child process Parameter: ");
109 for (int i = 1; i < argc; i++)
110 printf("%s ", argv[i]);
111 printf("\n");
112
113 if (argc > 2)
114 {
115 if (0 == strcmp("-join", argv[1]))
116 {
117 wait_for_seconds(argv[2]);
118 }
119 else if (0 == strcmp("-env", argv[1]))
120 {
121 dump_env(argv[2]);
122 }
123 }
124
125 return (0);
126 }
127
128