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 #ifdef WNT // Windows
31 #define UNICODE
32 #define _UNICODE
33 #define WIN32_LEAN_AND_MEAN
34 #include <tchar.h>
35 #else
36 #include <unistd.h>
37 #endif
38 
39 #include <stdio.h>
40 #include <stdlib.h>
41 #include <iostream>
42 #include <fstream>
43 
44 #include <rtl/ustring.hxx>
45 
46 //########################################
47 // defines
48 
49 #ifdef WNT
50 #   define SLEEP(t) (Sleep((t)*1000))
51 #else
52 #   define SLEEP(t) (sleep((t)))
53 #endif
54 
55 //########################################
wait_for_seconds(char * time)56 void wait_for_seconds(char* time)
57 {
58     SLEEP(atoi(time));
59 }
60 
61 //########################################
62 
63 #ifdef WNT
64 //########################################
w_to_a(LPCTSTR _strW,LPSTR strA,DWORD size)65 void w_to_a(LPCTSTR _strW, LPSTR strA, DWORD size)
66 {
67     LPCWSTR strW = reinterpret_cast<LPCWSTR>(_strW);
68     WideCharToMultiByte(CP_ACP, 0, strW, -1, strA, size, NULL, NULL);
69 }
70 //########################################
dump_env(char * file_path)71     void dump_env(char* file_path)
72     {
73         LPTSTR env = reinterpret_cast<LPTSTR>(
74             GetEnvironmentStrings());
75         LPTSTR p   = env;
76 
77         std::ofstream file(file_path);
78 
79         char buffer[32767];
80         while (size_t l = _tcslen(reinterpret_cast<wchar_t*>(p)))
81         {
82             w_to_a(p, buffer, sizeof(buffer));
83             file << buffer << std::endl;
84             p += l + 1;
85         }
86         FreeEnvironmentStrings(env);
87     }
88 #else
89     extern char** environ;
90 
dump_env(char * file_path)91     void dump_env(char* file_path)
92     {
93         std::ofstream file(file_path);
94         for (int i = 0; NULL != environ[i]; i++)
95             file << environ[i] << std::endl;
96     }
97 #endif
98 
99 //########################################
main(int argc,char * argv[])100 int main(int argc, char* argv[])
101 {
102     rtl::OUString s;
103 
104     //t_print("Parameter: ");
105     printf("child process Parameter: ");
106     for (int i = 1; i < argc; i++)
107         printf("%s ", argv[i]);
108     printf("\n");
109 
110     if (argc > 2)
111     {
112         if (0 == strcmp("-join", argv[1]))
113         {
114             wait_for_seconds(argv[2]);
115         }
116         else if (0 == strcmp("-env", argv[1]))
117         {
118             dump_env(argv[2]);
119         }
120     }
121 
122     return (0);
123 }
124 
125