Author: hbelusca
Date: Tue Jan 31 20:55:30 2017
New Revision: 73649
URL:
http://svn.reactos.org/svn/reactos?rev=73649&view=rev
Log:
Port the following trunk fixes:
[NTOS:MM]: Support MmSpecialPoolTag == '*' to mean all tags. By Serge Gautherie.
CORE-12711 (r73607).
[CMAKE]: Add missing target-level dependency when passing a target to add_rostests_file
(r73613).
[CALC]: Do not push memory stores onto the operation stack since they can't be acted
upon. Based on a patch by Katayama Hirofumi MZ. CORE-12325 (r73620).
[TREE]: Rework the utility (use explicit UNICODE, use WIN32 types, remove useless
dependency to user32...), and add support for console ConUtils streams. CORE-12677
(r73622).
[CMD]: The 'type' command can open & display files opened with write access.
Patch by 'mjw', CORE-12602 (r73623).
Modified:
branches/ReactOS-0.4.4-FOSDEM2017/reactos/ (props changed)
branches/ReactOS-0.4.4-FOSDEM2017/reactos/base/applications/calc/winmain.c
branches/ReactOS-0.4.4-FOSDEM2017/reactos/base/applications/cmdutils/tree/CMakeLists.txt
branches/ReactOS-0.4.4-FOSDEM2017/reactos/base/applications/cmdutils/tree/tree.c
branches/ReactOS-0.4.4-FOSDEM2017/reactos/base/shell/cmd/type.c
branches/ReactOS-0.4.4-FOSDEM2017/reactos/ntoskrnl/mm/ARM3/special.c
branches/ReactOS-0.4.4-FOSDEM2017/reactos/sdk/cmake/CMakeMacros.cmake
Propchange: branches/ReactOS-0.4.4-FOSDEM2017/reactos/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Jan 31 20:55:30 2017
@@ -23,4 +23,4 @@
/branches/usb-bringup:51335,51337,51341-51343,51348,51350,51353,51355,51365-51369,51372,51384-54388,54396-54398,54736-54737,54752-54754,54756-54760,54762,54764-54765,54767-54768,54772,54774-54777,54781,54787,54790-54792,54797-54798,54806,54808,54834-54838,54843,54850,54852,54856,54858-54859
/branches/usb-bringup-trunk:55019-55543,55548-55554,55556-55567
/branches/wlan-bringup:54809-54998
-/trunk/reactos:73522-73601,73633-73636,73642-73643
+/trunk/reactos:73522-73601,73607,73613,73620,73622-73623,73633-73636,73642-73643
Modified: branches/ReactOS-0.4.4-FOSDEM2017/reactos/base/applications/calc/winmain.c
URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.4.4-FOSDEM2017/reacto…
==============================================================================
---
branches/ReactOS-0.4.4-FOSDEM2017/reactos/base/applications/calc/winmain.c [iso-8859-1]
(original)
+++
branches/ReactOS-0.4.4-FOSDEM2017/reactos/base/applications/calc/winmain.c [iso-8859-1]
Tue Jan 31 20:55:30 2017
@@ -212,8 +212,8 @@
{ IDC_BUTTON_DMS, MODIFIER_INV, 1, rpn_dec2dms, rpn_dms2dec, NULL,
NULL },
{ IDC_BUTTON_FE, 0, 1, run_fe, NULL, NULL,
NULL },
{ IDC_BUTTON_DAT, 0, 1, run_dat_sta, NULL, NULL,
NULL, },
- { IDC_BUTTON_MP, MODIFIER_INV, 1, run_mp, run_mm, NULL,
NULL, },
- { IDC_BUTTON_MS, MODIFIER_INV, 1, run_ms, run_mw, NULL,
NULL, },
+ { IDC_BUTTON_MP, MODIFIER_INV|NO_CHAIN, 1, run_mp, run_mm, NULL,
NULL, },
+ { IDC_BUTTON_MS, MODIFIER_INV|NO_CHAIN, 1, run_ms, run_mw, NULL,
NULL, },
{ IDC_BUTTON_CANC, NO_CHAIN, 0, run_canc, NULL, NULL,
NULL, },
{ IDC_BUTTON_RIGHTPAR, NO_CHAIN, 1, run_rpar, NULL, NULL,
NULL, },
{ IDC_BUTTON_LEFTPAR, NO_CHAIN, 0, run_lpar, NULL, NULL,
NULL, },
Modified:
branches/ReactOS-0.4.4-FOSDEM2017/reactos/base/applications/cmdutils/tree/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.4.4-FOSDEM2017/reacto…
==============================================================================
---
branches/ReactOS-0.4.4-FOSDEM2017/reactos/base/applications/cmdutils/tree/CMakeLists.txt [iso-8859-1]
(original)
+++
branches/ReactOS-0.4.4-FOSDEM2017/reactos/base/applications/cmdutils/tree/CMakeLists.txt [iso-8859-1]
Tue Jan 31 20:55:30 2017
@@ -1,6 +1,9 @@
+
+include_directories(${REACTOS_SOURCE_DIR}/sdk/lib/conutils)
add_executable(tree tree.c tree.rc)
set_module_type(tree win32cui UNICODE)
+target_link_libraries(tree conutils ${PSEH_LIB})
+add_importlibs(tree msvcrt kernel32)
set_target_properties(tree PROPERTIES SUFFIX ".com")
-add_importlibs(tree user32 msvcrt kernel32)
add_cd_file(TARGET tree DESTINATION reactos/system32 FOR all)
Modified:
branches/ReactOS-0.4.4-FOSDEM2017/reactos/base/applications/cmdutils/tree/tree.c
URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.4.4-FOSDEM2017/reacto…
==============================================================================
---
branches/ReactOS-0.4.4-FOSDEM2017/reactos/base/applications/cmdutils/tree/tree.c [iso-8859-1]
(original)
+++
branches/ReactOS-0.4.4-FOSDEM2017/reactos/base/applications/cmdutils/tree/tree.c [iso-8859-1]
Tue Jan 31 20:55:30 2017
@@ -1,44 +1,29 @@
-/*
+/*
* PROJECT: ReactOS
* LICENSE: GNU GPLv2 only as published by the Free Software Foundation
- * PURPOSE: Implements
tree.com functionality similar to Windows
+ * PURPOSE: Implements
tree.com command similar to Windows
* PROGRAMMERS: Asif Bahrainwala (asif_bahrainwala(a)hotmail.com)
*/
#include <stdio.h>
#include <stdlib.h>
+
#include <windef.h>
#include <winbase.h>
-#include <winuser.h>
+
+#include <conutils.h>
#include "resource.h"
#define STR_MAX 2048
-static void GetDirectoryStructure(wchar_t* strPath, UINT width, const wchar_t*
prevLine);
-
-/* if this flag is set to true, files will also be listed */
+static VOID GetDirectoryStructure(PWSTR strPath, UINT width, PCWSTR prevLine);
+
+/* If this flag is set to true, files will also be listed within the folder structure */
BOOL bShowFiles = FALSE;
-/* if this flag is true, ASCII characters will be used instead of UNICODE ones */
+/* If this flag is true, ASCII characters will be used instead of UNICODE ones */
BOOL bUseAscii = FALSE;
-
-/*
- * This takes strings from a resource string table
- * and outputs it to the console.
- */
-VOID PrintResourceString(INT resID, ...)
-{
- WCHAR tmpBuffer[STR_MAX];
- CHAR tmpBufferA[STR_MAX];
- va_list arg_ptr;
-
- va_start(arg_ptr, resID);
- LoadStringW(GetModuleHandle(NULL), resID, tmpBuffer, STR_MAX);
- CharToOemW(tmpBuffer, tmpBufferA);
- vfprintf(stdout, tmpBufferA, arg_ptr);
- va_end(arg_ptr);
-}
/**
* @name: HasSubFolder
@@ -47,20 +32,20 @@
* Must specify folder name
*
* @return
-* true if folder has sub folders, else will return false
+* true if folder has sub-folders, else will return false
*/
-static BOOL HasSubFolder(const wchar_t *strPath1)
+static BOOL HasSubFolder(PCWSTR strPath1)
{
BOOL ret = FALSE;
- WIN32_FIND_DATA FindFileData;
+ WIN32_FIND_DATAW FindFileData;
HANDLE hFind = NULL;
- static wchar_t strPath[STR_MAX] = L"";
+ static WCHAR strPath[STR_MAX] = L"";
ZeroMemory(strPath, sizeof(strPath));
wcscat(strPath, strPath1);
wcscat(strPath, L"\\*.");
- hFind = FindFirstFile(strPath, &FindFileData);
+ hFind = FindFirstFileW(strPath, &FindFileData);
do
{
if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
@@ -71,11 +56,11 @@
continue;
}
- ret = TRUE; //found subfolder
+ ret = TRUE; // Sub-folder found
break;
}
}
- while (FindNextFile(hFind, &FindFileData));
+ while (FindNextFileW(hFind, &FindFileData));
FindClose(hFind);
return ret;
@@ -100,22 +85,22 @@
* @return
* void
*/
-static void DrawTree(const wchar_t* strPath,
- const WIN32_FIND_DATA *arrFolder,
+static VOID DrawTree(PCWSTR strPath,
+ const WIN32_FIND_DATAW* arrFolder,
const size_t szArr,
UINT width,
- const wchar_t *prevLine,
+ PCWSTR prevLine,
BOOL drawfolder)
{
BOOL bHasSubFolder = HasSubFolder(strPath);
UINT i = 0;
- /* this will format the spaces required for correct formatting */
+ /* This will format the spaces required for correct formatting */
for (i = 0; i < szArr; ++i)
{
- wchar_t *consoleOut = (wchar_t*)malloc(sizeof(wchar_t) * STR_MAX);
+ PWSTR consoleOut = (PWSTR)malloc(STR_MAX * sizeof(WCHAR));
UINT j = 0;
- static wchar_t str[STR_MAX];
+ static WCHAR str[STR_MAX];
/* As we do not seem to have the _s functions properly set up, use the non-secure
version for now */
//wcscpy_s(consoleOut, STR_MAX, L"");
@@ -125,15 +110,14 @@
for (j = 0; j < width - 1; ++j)
{
- /* if the previous line has 'â' or 'â' then the current
line will
+ /* If the previous line has 'â' or 'â' then the current
line will
add 'â' to continue the connecting line */
- if ((BYTE)prevLine[j] == 195 || (BYTE)prevLine[j] == 179 ||
- (BYTE)prevLine[j] == L'+' || (BYTE)prevLine[j] == L'|')
+ if (prevLine[j] == L'\x251C' || prevLine[j] == L'\x2502' ||
+ prevLine[j] == L'+' || prevLine[j] == L'|')
{
if (!bUseAscii)
{
- wchar_t a[] = {179, 0};
- wcscat(consoleOut, a);
+ wcscat(consoleOut, L"\x2502");
}
else
{
@@ -150,27 +134,27 @@
{
if (drawfolder)
{
- /* will add 'ââââFolder name */
+ /* Add 'ââââFolder name' (\xC3\xC4\xC4\xC4 or
\x251C\x2500\x2500\x2500) */
if (bUseAscii)
- wsprintf(str, L"+---%s",
(wchar_t*)arrFolder[i].cFileName);
- else
- wsprintf(str, L"%c%c%c%c%s", 195, 196, 196, 196,
(wchar_t*)arrFolder[i].cFileName);
+ swprintf(str, L"+---%s", arrFolder[i].cFileName);
+ else
+ swprintf(str, L"\x251C\x2500\x2500\x2500%s",
arrFolder[i].cFileName);
}
else
{
if (bHasSubFolder)
{
- /* will add 'â FileNamw' //thie line is added to
connect
- the belowfolder sub structure */
+ /* Add 'â FileName' (\xB3 or \x2502) */
+ // This line is added to connect the below-folder sub-structure
if (bUseAscii)
- wsprintf(str,L"| %s",
(wchar_t*)arrFolder[i].cFileName);
+ swprintf(str, L"| %s", arrFolder[i].cFileName);
else
- wsprintf(str,L"%c %s", 179,
(wchar_t*)arrFolder[i].cFileName);
- }
- else
- {
- /* will add ' FileNamw' */
- wsprintf(str,L" %s",
(wchar_t*)arrFolder[i].cFileName);
+ swprintf(str, L"\x2502 %s", arrFolder[i].cFileName);
+ }
+ else
+ {
+ /* Add ' FileName' */
+ swprintf(str, L" %s", arrFolder[i].cFileName);
}
}
}
@@ -178,44 +162,44 @@
{
if (drawfolder)
{
- /* 'ââââFolder name' */
+ /* 'ââââFolder name' (\xC0\xC4\xC4\xC4 or
\x2514\x2500\x2500\x2500) */
if (bUseAscii)
- wsprintf(str, L"\\---%s",
(wchar_t*)arrFolder[i].cFileName);
- else
- wsprintf(str, L"%c%c%c%c%s", 192, 196, 196, 196,
(wchar_t*)arrFolder[i].cFileName);
+ swprintf(str, L"\\---%s", arrFolder[i].cFileName);
+ else
+ swprintf(str, L"\x2514\x2500\x2500\x2500%s",
arrFolder[i].cFileName);
}
else
{
if (bHasSubFolder)
{
- /* 'â FileName' */
+ /* 'â FileName' (\xB3 or \x2502) */
if (bUseAscii)
- wsprintf(str, L"| %s",
(wchar_t*)arrFolder[i].cFileName);
+ swprintf(str, L"| %s", arrFolder[i].cFileName);
else
- wsprintf(str, L"%c %s", 179,
(wchar_t*)arrFolder[i].cFileName);
+ swprintf(str, L"\x2502 %s", arrFolder[i].cFileName);
}
else
{
/* ' FileName' */
- wsprintf(str, L" %s",
(wchar_t*)arrFolder[i].cFileName);
+ swprintf(str, L" %s", arrFolder[i].cFileName);
}
}
}
wcscat(consoleOut, str);
- wprintf(L"%s\n", consoleOut);
+ ConPrintf(StdOut, L"%s\n", consoleOut);
if (drawfolder)
{
- wchar_t *str = (wchar_t*)malloc(STR_MAX * sizeof(wchar_t));
- ZeroMemory(str, STR_MAX * sizeof(wchar_t));
-
- wcscat(str, strPath);
- wcscat(str, L"\\");
- wcscat(str, arrFolder[i].cFileName);
- GetDirectoryStructure(str, width + 4, consoleOut);
-
- free(str);
+ PWSTR str = (PWSTR)malloc(STR_MAX * sizeof(WCHAR));
+ ZeroMemory(str, STR_MAX * sizeof(WCHAR));
+
+ wcscat(str, strPath);
+ wcscat(str, L"\\");
+ wcscat(str, arrFolder[i].cFileName);
+ GetDirectoryStructure(str, width + 4, consoleOut);
+
+ free(str);
}
free(consoleOut);
}
@@ -235,27 +219,27 @@
* @return
* void
*/
-static void
-GetDirectoryStructure(wchar_t* strPath, UINT width, const wchar_t* prevLine)
+static VOID
+GetDirectoryStructure(PWSTR strPath, UINT width, PCWSTR prevLine)
{
- WIN32_FIND_DATA FindFileData;
+ WIN32_FIND_DATAW FindFileData;
HANDLE hFind = NULL;
//DWORD err = 0;
- /* will fill up with names of all sub folders */
- WIN32_FIND_DATA *arrFolder = NULL;
+ /* Fill up with names of all sub-folders */
+ WIN32_FIND_DATAW *arrFolder = NULL;
UINT arrFoldersz = 0;
- /* will fill up with names of all sub folders */
- WIN32_FIND_DATA *arrFile = NULL;
+ /* Fill up with names of all sub-folders */
+ WIN32_FIND_DATAW *arrFile = NULL;
UINT arrFilesz = 0;
ZeroMemory(&FindFileData, sizeof(FindFileData));
{
- static wchar_t tmp[STR_MAX] = L"";
+ static WCHAR tmp[STR_MAX] = L"";
ZeroMemory(tmp, sizeof(tmp));
wcscat(tmp, strPath);
wcscat(tmp, L"\\*.*");
- hFind = FindFirstFile(tmp, &FindFileData);
+ hFind = FindFirstFileW(tmp, &FindFileData);
//err = GetLastError();
}
@@ -271,7 +255,7 @@
continue;
++arrFoldersz;
- arrFolder = (WIN32_FIND_DATA*)realloc(arrFolder, arrFoldersz *
sizeof(FindFileData));
+ arrFolder = (WIN32_FIND_DATAW*)realloc(arrFolder, arrFoldersz *
sizeof(FindFileData));
if (arrFolder == NULL)
exit(-1);
@@ -282,7 +266,7 @@
else
{
++arrFilesz;
- arrFile = (WIN32_FIND_DATA*)realloc(arrFile, arrFilesz *
sizeof(FindFileData));
+ arrFile = (WIN32_FIND_DATAW*)realloc(arrFile, arrFilesz *
sizeof(FindFileData));
if(arrFile == NULL)
exit(-1);
@@ -290,17 +274,17 @@
arrFile[arrFilesz - 1] = FindFileData;
}
}
- while (FindNextFile(hFind, &FindFileData));
+ while (FindNextFileW(hFind, &FindFileData));
FindClose(hFind);
if (bShowFiles)
{
- /* will free(arrFile) */
+ /* Will free(arrFile) */
DrawTree(strPath, arrFile, arrFilesz, width, prevLine, FALSE);
}
- /* will free(arrFile) */
+ /* Will free(arrFile) */
DrawTree(strPath, arrFolder, arrFoldersz, width, prevLine, TRUE);
free(arrFolder);
@@ -314,18 +298,21 @@
* @return
* error /success value
*/
-int wmain( int argc, wchar_t *argv[])
+int wmain(int argc, WCHAR* argv[])
{
DWORD dwSerial = 0;
- wchar_t t = 0;
- wchar_t *strPath = NULL;
+ WCHAR t = 0;
+ PWSTR strPath = NULL;
DWORD sz = 0;
- //wchar_t *context = NULL;
- wchar_t *driveLetter = NULL;
+ //PWSTR context = NULL;
+ PWSTR driveLetter = NULL;
int i;
- /* parse the command line */
+ /* Initialize the Console Standard Streams */
+ ConInitStdStreams();
+
+ /* Parse the command line */
for (i = 1; i < argc; ++i)
{
if (argv[i][0] == L'-' || argv[i][0] == L'/')
@@ -333,49 +320,51 @@
switch (towlower(argv[i][1]))
{
case L'?':
- /* will print help and exit after */
- PrintResourceString(IDS_USAGE);
+ /* Print help and exit after */
+ ConResPuts(StdOut, IDS_USAGE);
return 0;
+
case L'f':
- /* if set to true, will populate all the files within the folder
structure */
bShowFiles = TRUE;
break;
+
case L'a':
bUseAscii = TRUE;
break;
+
default:
break;
}
}
else
{
- /* this must be path to some folder */
-
- /* will set the current directory for this executable */
+ /* This must be path to some folder */
+
+ /* Set the current directory for this executable */
BOOL b = SetCurrentDirectoryW(argv[i]);
if (b == FALSE)
{
- PrintResourceString(IDS_NO_SUBDIRECTORIES);
+ ConResPuts(StdOut, IDS_NO_SUBDIRECTORIES);
return 1;
}
}
}
- PrintResourceString(IDS_FOLDER_PATH);
-
- GetVolumeInformation(NULL, NULL, 0, &dwSerial, NULL, NULL, NULL, 0);
- PrintResourceString(IDS_VOL_SERIAL, dwSerial >> 16, dwSerial & 0xffff);
+ ConResPuts(StdOut, IDS_FOLDER_PATH);
+
+ GetVolumeInformationW(NULL, NULL, 0, &dwSerial, NULL, NULL, NULL, 0);
+ ConResPrintf(StdOut, IDS_VOL_SERIAL, dwSerial >> 16, dwSerial & 0xffff);
/* get the buffer size */
- sz = GetCurrentDirectory(1, &t);
+ sz = GetCurrentDirectoryW(1, &t);
/* must not return before calling delete[] */
- strPath = (wchar_t*)malloc(sizeof(wchar_t) * sz);
+ strPath = (PWSTR)malloc(sz * sizeof(WCHAR));
/* get the current directory */
- GetCurrentDirectory(sz, strPath);
+ GetCurrentDirectoryW(sz, strPath);
/* get the drive letter , must not return before calling delete[] */
- driveLetter = (wchar_t*)malloc(sizeof(wchar_t) * sz);
+ driveLetter = (PWSTR)malloc(sz * sizeof(WCHAR));
/* As we do not seem to have the _s functions properly set up, use the non-secure
version for now */
//wcscpy_s(driveLetter,sz,strPath);
@@ -383,15 +372,15 @@
wcscpy(driveLetter, strPath);
wcstok(driveLetter, L":");
- wprintf(L"%s:.\n", driveLetter);
+ ConPrintf(StdOut, L"%s:.\n", driveLetter);
free(driveLetter);
- /* get the sub directories within this current folder */
+ /* get the sub-directories within this current folder */
GetDirectoryStructure(strPath, 1, L" ");
free(strPath);
- wprintf(L"\n");
+ ConPuts(StdOut, L"\n");
return 0;
}
Modified: branches/ReactOS-0.4.4-FOSDEM2017/reactos/base/shell/cmd/type.c
URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.4.4-FOSDEM2017/reacto…
==============================================================================
--- branches/ReactOS-0.4.4-FOSDEM2017/reactos/base/shell/cmd/type.c [iso-8859-1]
(original)
+++ branches/ReactOS-0.4.4-FOSDEM2017/reactos/base/shell/cmd/type.c [iso-8859-1] Tue Jan
31 20:55:30 2017
@@ -82,7 +82,7 @@
hFile = CreateFile(argv[i],
GENERIC_READ,
- FILE_SHARE_READ, NULL,
+ FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);
Modified: branches/ReactOS-0.4.4-FOSDEM2017/reactos/ntoskrnl/mm/ARM3/special.c
URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.4.4-FOSDEM2017/reacto…
==============================================================================
--- branches/ReactOS-0.4.4-FOSDEM2017/reactos/ntoskrnl/mm/ARM3/special.c [iso-8859-1]
(original)
+++ branches/ReactOS-0.4.4-FOSDEM2017/reactos/ntoskrnl/mm/ARM3/special.c [iso-8859-1] Tue
Jan 31 20:55:30 2017
@@ -78,7 +78,14 @@
{
/* Special pool is not suitable for allocations bigger than 1 page */
if (NumberOfBytes > (PAGE_SIZE - sizeof(POOL_HEADER)))
+ {
return FALSE;
+ }
+
+ if (MmSpecialPoolTag == '*')
+ {
+ return TRUE;
+ }
return Tag == MmSpecialPoolTag;
}
Modified: branches/ReactOS-0.4.4-FOSDEM2017/reactos/sdk/cmake/CMakeMacros.cmake
URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.4.4-FOSDEM2017/reacto…
==============================================================================
--- branches/ReactOS-0.4.4-FOSDEM2017/reactos/sdk/cmake/CMakeMacros.cmake [iso-8859-1]
(original)
+++ branches/ReactOS-0.4.4-FOSDEM2017/reactos/sdk/cmake/CMakeMacros.cmake [iso-8859-1] Tue
Jan 31 20:55:30 2017
@@ -837,7 +837,11 @@
set(_ROSTESTS_SUBDIR "/${_ROSTESTS_SUBDIR}")
endif()
- add_cd_file(FILE ${_ROSTESTS_FILE} DESTINATION
"reactos/bin${_ROSTESTS_SUBDIR}" NAME_ON_CD ${_ROSTESTS_RENAME} FOR all)
+ if(_ROSTESTS_TARGET)
+ add_cd_file(TARGET ${_ROSTESTS_TARGET} FILE ${_ROSTESTS_FILE} DESTINATION
"reactos/bin${_ROSTESTS_SUBDIR}" NAME_ON_CD ${_ROSTESTS_RENAME} FOR all)
+ else()
+ add_cd_file(FILE ${_ROSTESTS_FILE} DESTINATION
"reactos/bin${_ROSTESTS_SUBDIR}" NAME_ON_CD ${_ROSTESTS_RENAME} FOR all)
+ endif()
if(DEFINED ENV{ROSTESTS_INSTALL})
install(FILES ${_ROSTESTS_FILE} DESTINATION
"$ENV{ROSTESTS_INSTALL}${_ROSTESTS_SUBDIR}" COMPONENT rostests RENAME
${_ROSTESTS_RENAME})