tstPath.cpp revision 1ac7b67ad59777e68f9e8010fa09628ea8774f4d
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync * IPRT Testcase - Test various path functions.
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync * Copyright (C) 2006-2007 Sun Microsystems, Inc.
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync * available from http://www.virtualbox.org. This file is free software;
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync * you can redistribute it and/or modify it under the terms of the GNU
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync * General Public License (GPL) as published by the Free Software
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync * The contents of this file may alternatively be used under the terms
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync * of the Common Development and Distribution License Version 1.0
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync * VirtualBox OSE distribution, in which case the provisions of the
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync * CDDL are applicable instead of those of the GPL.
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync * You may elect to license modified versions of this file under the
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync * terms and conditions of either the GPL or the CDDL or both.
6754e49069315bd28137abb0f9241e3aeb99a97evboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync * additional information or have any questions.
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync/*******************************************************************************
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync* Header Files *
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync*******************************************************************************/
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync * Init RT+Test.
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync * RTPathExecDir, RTPathUserHome and RTProcGetExecutableName.
8b98c71a5a01d215eafbc3605cb7a66cc91ea774vboxsync RTTESTI_CHECK_RC(RTPathExecDir(szPath, sizeof(szPath)), VINF_SUCCESS);
8b98c71a5a01d215eafbc3605cb7a66cc91ea774vboxsync RTTestIPrintf(RTTESTLVL_INFO, "ExecDir={%s}\n", szPath);
8b98c71a5a01d215eafbc3605cb7a66cc91ea774vboxsync if (RTProcGetExecutableName(szPath, sizeof(szPath)) == szPath)
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync RTTestIPrintf(RTTESTLVL_INFO, "ExecutableName={%s}\n", szPath);
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync RTTESTI_CHECK_RC(RTPathUserHome(szPath, sizeof(szPath)), VINF_SUCCESS);
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync RTTestIPrintf(RTTESTLVL_INFO, "UserHome={%s}\n", szPath);
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync RTTESTI_CHECK_RC(RTPathTemp(szPath, sizeof(szPath)), VINF_SUCCESS);
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync RTTestIPrintf(RTTESTLVL_INFO, "PathTemp={%s}\n", szPath);
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync RTTESTI_CHECK_RC(RTPathTemp(szPath, cch), VERR_BUFFER_OVERFLOW);
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync RTTESTI_CHECK_RC(RTPathTemp(szPath, cch+1), VINF_SUCCESS);
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync RTTESTI_CHECK_RC(RTPathTemp(szPath, cch+2), VINF_SUCCESS);
6754e49069315bd28137abb0f9241e3aeb99a97evboxsync * RTPathAbsEx
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync static const struct
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync { NULL, "/absolute\\\\../..", VINF_SUCCESS, "%d\\" },
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync { NULL, "/absolute//../path\\", VINF_SUCCESS, "%d\\path" },
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync { NULL, "/absolute/../../path", VINF_SUCCESS, "%d\\path" },
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync { NULL, "relative/../dir\\.\\.\\.\\file.txt", VINF_SUCCESS, "%p\\dir\\file.txt" },
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync { "relative_base/dir\\", "\\from_root", VINF_SUCCESS, "%d\\from_root" },
6754e49069315bd28137abb0f9241e3aeb99a97evboxsync { "relative_base/dir/", "relative_also", VINF_SUCCESS, "%p\\relative_base\\dir\\relative_also" },
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync { NULL, "/absolute//../path/", VINF_SUCCESS, "/path" },
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync { NULL, "/absolute/../../path", VINF_SUCCESS, "/path" },
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync { NULL, "relative/../dir/./././file.txt", VINF_SUCCESS, "%p/dir/file.txt" },
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync { NULL, "relative/../dir\\.\\.\\.\\file.txt", VINF_SUCCESS, "%p/dir\\.\\.\\.\\file.txt" }, /* linux-specific */
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync { "relative_base/dir/", "/from_root", VINF_SUCCESS, "/from_root" },
9c0076729ec8138e89ce8a6af9a772b68f1f8dc7vboxsync { "relative_base/dir/", "relative_also", VINF_SUCCESS, "%p/relative_base/dir/relative_also" },
{ "C:\\VirtualBox/Machines", "..\\VirtualBox.xml", VINF_SUCCESS, "C:\\VirtualBox\\VirtualBox.xml" },
{ "\\\\server\\share_as_base", "relative\\data", VINF_SUCCESS, "\\\\server\\share_as_base\\relative\\data" },
static const char *s_apszStripFilenameTests[] =
static const char *s_apszAppendTests[] =