Repository.mk | 2 sal/Executable_getenvvars.mk | 31 +++++++++++ sal/Executable_setgetenv.mk | 31 +++++++++++ sal/Executable_terminateprocess.mk | 31 +++++++++++ sal/Module_sal.mk | 2 sal/workben/osl/batchwait.bat | 23 ++++++++ sal/workben/osl/batchwait.sh | 6 ++ sal/workben/osl/getenvvars.cxx | 47 +++++++++++++++++ sal/workben/osl/setgetenv.cxx | 52 +++++++++++++++++++ sal/workben/osl/terminateprocess.cxx | 92 +++++++++++++++++++++++++++++++++++ 10 files changed, 317 insertions(+)
New commits: commit d068beca518ff4b01b154e8b9ca95bb52f46f8be Author: Chris Sherlock <chris.sherloc...@gmail.com> Date: Mon Aug 14 00:04:20 2017 +1000 sal workben: set and get an environment variable Change-Id: Ifcd5eaf2fbc75752e574081dc736ecf4529e5d22 diff --git a/Repository.mk b/Repository.mk index 7d3b865816eb..abeeaa24a5bd 100644 --- a/Repository.mk +++ b/Repository.mk @@ -85,6 +85,7 @@ $(eval $(call gb_Helper_register_executables,NONE, \ processcmdlineargs \ executeprocess \ terminateprocess \ + setgetenv \ )) $(eval $(call gb_Helper_register_executables_for_install,SDK,sdk, \ diff --git a/sal/Executable_getenvvars.mk b/sal/Executable_getenvvars.mk new file mode 100644 index 000000000000..d82a0b420808 --- /dev/null +++ b/sal/Executable_getenvvars.mk @@ -0,0 +1,31 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_Executable_Executable,getenvvars)) + +$(eval $(call gb_Executable_set_include,getenvvars,\ + $$(INCLUDE) \ + -I$(SRCDIR)/sal/inc \ +)) + +$(eval $(call gb_Library_add_defs,getenvvars,\ + -DSAL_DLLIMPLEMENTATION \ +)) + +$(eval $(call gb_Executable_use_libraries,getenvvars,\ + sal \ +)) + +$(eval $(call gb_Executable_add_exception_objects,getenvvars,\ + sal/workben/osl/getenvvars \ +)) + +$(call gb_Executable_get_clean_target,getenvvars) : + rm -f $(WORKDIR)/LinkTarget/Executable/getenvvars +# vim: set ts=4 sw=4 et: diff --git a/sal/Executable_setgetenv.mk b/sal/Executable_setgetenv.mk new file mode 100644 index 000000000000..6aa4135f073e --- /dev/null +++ b/sal/Executable_setgetenv.mk @@ -0,0 +1,31 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_Executable_Executable,setgetenv)) + +$(eval $(call gb_Executable_set_include,setgetenv,\ + $$(INCLUDE) \ + -I$(SRCDIR)/sal/inc \ +)) + +$(eval $(call gb_Library_add_defs,setgetenv,\ + -DSAL_DLLIMPLEMENTATION \ +)) + +$(eval $(call gb_Executable_use_libraries,setgetenv,\ + sal \ +)) + +$(eval $(call gb_Executable_add_exception_objects,setgetenv,\ + sal/workben/osl/setgetenv \ +)) + +$(call gb_Executable_get_clean_target,setgetenv) : + rm -f $(WORKDIR)/LinkTarget/Executable/setgetenv +# vim: set ts=4 sw=4 et: diff --git a/sal/Module_sal.mk b/sal/Module_sal.mk index 292321d3cbca..5d6563861b82 100644 --- a/sal/Module_sal.mk +++ b/sal/Module_sal.mk @@ -30,6 +30,7 @@ $(eval $(call gb_Module_add_targets,sal,\ Executable_processcmdlineargs \ Executable_executeprocess \ Executable_terminateprocess \ + Executable_setgetenv \ )) $(eval $(call gb_Module_add_check_targets,sal,\ diff --git a/sal/workben/osl/getenvvars.cxx b/sal/workben/osl/getenvvars.cxx new file mode 100644 index 000000000000..c29c20379bbe --- /dev/null +++ b/sal/workben/osl/getenvvars.cxx @@ -0,0 +1,47 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#include <sal/main.h> +#include <osl/process.h> +#include <osl/thread.h> + +#include <cstdio> +#include <wchar.h> + +SAL_IMPLEMENT_MAIN() +{ + sal_Unicode **ppustrEnvVars=nullptr; + + fprintf(stdout, "Getting environment variables.\n"); + + osl_getAllEnvironment(ppustrEnvVars); + + do + { + fprintf(stdout, "In loop\n"); + if (wcslen(reinterpret_cast< wchar_t* >(ppustrEnvVars)) == 0) + break; + fprintf(stdout, " %S", reinterpret_cast< wchar_t* >(ppustrEnvVars)); + ppustrEnvVars += sizeof(wchar_t) * (wcslen(reinterpret_cast< wchar_t* >(ppustrEnvVars)) + 1); + } while(true); + + return 0; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sal/workben/osl/setgetenv.cxx b/sal/workben/osl/setgetenv.cxx new file mode 100644 index 000000000000..481d460674ec --- /dev/null +++ b/sal/workben/osl/setgetenv.cxx @@ -0,0 +1,52 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#include <sal/main.h> +#include <rtl/ustring.h> +#include <osl/thread.h> + +#include <osl/process.h> + +#include <cstdio> + +SAL_IMPLEMENT_MAIN() +{ + rtl_uString *pustrEnvVar = nullptr; + rtl_uString *pustrEnvValue = nullptr; + rtl_uString *pustrRetrieveValue = nullptr; + + fprintf(stdout, "Setting and getting environment variable\n"); + + rtl_uString_newFromAscii(&pustrEnvVar, "animalname"); + rtl_uString_newFromAscii(&pustrEnvValue, "sasquatch"); + + osl_setEnvironment(pustrEnvVar, pustrEnvValue); + osl_getEnvironment(pustrEnvVar, &pustrRetrieveValue); + + rtl_String *pstrVal=nullptr; + + rtl_uString2String(&pstrVal, + rtl_uString_getStr(pustrRetrieveValue), rtl_uString_getLength(pustrRetrieveValue), + osl_getThreadTextEncoding(), OUSTRING_TO_OSTRING_CVTFLAGS); + + fprintf(stdout, "Retrieved value is %s\n", rtl_string_getStr(pstrVal)); + return 0; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 22c93860edc6a8f2543cb3f30115655df588fa7a Author: Chris Sherlock <chris.sherloc...@gmail.com> Date: Sun Aug 13 22:55:47 2017 +1000 sal workben: Demonstrate osl_terminateProcess() Change-Id: I5e7ed1cd08c2d426151afaf4de620b4412c6e9b1 diff --git a/Repository.mk b/Repository.mk index 8413facda420..7d3b865816eb 100644 --- a/Repository.mk +++ b/Repository.mk @@ -84,6 +84,7 @@ $(eval $(call gb_Helper_register_executables,NONE, \ getprocessinfo \ processcmdlineargs \ executeprocess \ + terminateprocess \ )) $(eval $(call gb_Helper_register_executables_for_install,SDK,sdk, \ diff --git a/sal/Executable_terminateprocess.mk b/sal/Executable_terminateprocess.mk new file mode 100644 index 000000000000..9bf751171516 --- /dev/null +++ b/sal/Executable_terminateprocess.mk @@ -0,0 +1,31 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_Executable_Executable,terminateprocess)) + +$(eval $(call gb_Executable_set_include,terminateprocess,\ + $$(INCLUDE) \ + -I$(SRCDIR)/sal/inc \ +)) + +$(eval $(call gb_Library_add_defs,terminateprocess,\ + -DSAL_DLLIMPLEMENTATION \ +)) + +$(eval $(call gb_Executable_use_libraries,terminateprocess,\ + sal \ +)) + +$(eval $(call gb_Executable_add_exception_objects,terminateprocess,\ + sal/workben/osl/terminateprocess \ +)) + +$(call gb_Executable_get_clean_target,terminateprocess) : + rm -f $(WORKDIR)/LinkTarget/Executable/terminateprocess +# vim: set ts=4 sw=4 et: diff --git a/sal/Module_sal.mk b/sal/Module_sal.mk index 4f6118210247..292321d3cbca 100644 --- a/sal/Module_sal.mk +++ b/sal/Module_sal.mk @@ -29,6 +29,7 @@ $(eval $(call gb_Module_add_targets,sal,\ Executable_getprocessinfo \ Executable_processcmdlineargs \ Executable_executeprocess \ + Executable_terminateprocess \ )) $(eval $(call gb_Module_add_check_targets,sal,\ diff --git a/sal/workben/osl/batchwait.bat b/sal/workben/osl/batchwait.bat new file mode 100755 index 000000000000..36d9eedaa1b4 --- /dev/null +++ b/sal/workben/osl/batchwait.bat @@ -0,0 +1,23 @@ +rem +rem This file is part of the LibreOffice project. +rem +rem This Source Code Form is subject to the terms of the Mozilla Public +rem License, v. 2.0. If a copy of the MPL was not distributed with this +rem file, You can obtain one at http://mozilla.org/MPL/2.0/. +rem +rem This file incorporates work covered by the following license notice: +rem +rem Licensed to the Apache Software Foundation (ASF) under one or more +rem contributor license agreements. See the NOTICE file distributed +rem with this work for additional information regarding copyright +rem ownership. The ASF licenses this file to you under the Apache +rem License, Version 2.0 (the "License"); you may not use this file +rem except in compliance with the License. You may obtain a copy of +rem the License at http://www.apache.org/licenses/LICENSE-2.0 . +rem +@echo off +cls +:start +echo "Hello world" +pause +goto start diff --git a/sal/workben/osl/batchwait.sh b/sal/workben/osl/batchwait.sh new file mode 100755 index 000000000000..65b62907b468 --- /dev/null +++ b/sal/workben/osl/batchwait.sh @@ -0,0 +1,6 @@ +#!/bin/sh +while true +do + echo "Hello world" + sleep 1 +done diff --git a/sal/workben/osl/terminateprocess.cxx b/sal/workben/osl/terminateprocess.cxx new file mode 100644 index 000000000000..4b51bb2f2ff5 --- /dev/null +++ b/sal/workben/osl/terminateprocess.cxx @@ -0,0 +1,92 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#include <sal/config.h> +#include <sal/main.h> +#include <sal/log.hxx> +#include <rtl/ustring.hxx> +#include <rtl/alloc.h> +#include <osl/thread.h> +#include <osl/file.h> + +#include <osl/process.h> + +#include <cstdio> + +SAL_IMPLEMENT_MAIN() +{ + oslProcess aProcess; + + fprintf(stdout, "Execute process.\n"); + + rtl_uString *pustrExePath = nullptr; + osl_getExecutableFile(&pustrExePath); + + rtl_uString *pTempExePath = nullptr; + sal_uInt32 nLastChar; + + nLastChar = rtl_ustr_lastIndexOfChar(rtl_uString_getStr(pustrExePath), SAL_PATHDELIMITER); + rtl_uString_newReplaceStrAt(&pTempExePath, pustrExePath, nLastChar, rtl_ustr_getLength(rtl_uString_getStr(pustrExePath)), nullptr); + rtl_freeMemory(pustrExePath); + pustrExePath = pTempExePath; + +#if defined(_WIN32) +# define BATCHFILE "\\..\\sal\\workben\\osl\\batchwait.bat" +# define BATCHFILE_LENGTH 39 +#else +# define BATCHFILE "/../../../sal/workben/osl/batchwait.sh" +# define BATCHFILE_LENGTH 38 +#endif + + rtl_uString_newConcatAsciiL(&pustrExePath, pustrExePath, BATCHFILE, BATCHFILE_LENGTH); + + oslProcessError osl_error = osl_executeProcess( + pustrExePath, // process to execute + nullptr, // no arguments + 0, // no arguments + osl_Process_NORMAL, // process execution mode + nullptr, // security context is current user + nullptr, // current working directory inherited from parent process + nullptr, // no environment variables + 0, // no environment variables + &aProcess); // process handle + + rtl_freeMemory(pustrExePath); + + if (osl_error != osl_Process_E_None) + fprintf(stderr, "Process failed\n"); + + fprintf(stdout, " Process running...\n"); + osl_error = osl_terminateProcess(aProcess); + if (osl_error == osl_Process_E_None) + { + fprintf(stdout, " ...process terminated.\n"); + } + else + { + fprintf(stderr, " ... process could not be terminated.\n"); + osl_joinProcess(aProcess); + } + + osl_freeProcessHandle(aProcess); + + return 0; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits