RTPathFilename.cpp revision dfcbb91064758c0b770c83bd795edaaa6ba2bb58
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync/* $Id$ */
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync/** @file
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync * IPRT - RTPathFilename
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync */
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync/*
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync * Copyright (C) 2006-2007 Oracle Corporation
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync *
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync * available from http://www.virtualbox.org. This file is free software;
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync * you can redistribute it and/or modify it under the terms of the GNU
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync * General Public License (GPL) as published by the Free Software
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync *
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync * The contents of this file may alternatively be used under the terms
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync * of the Common Development and Distribution License Version 1.0
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync * VirtualBox OSE distribution, in which case the provisions of the
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync * CDDL are applicable instead of those of the GPL.
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync *
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync * You may elect to license modified versions of this file under the
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync * terms and conditions of either the GPL or the CDDL or both.
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync */
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync
4651430e55b9df9726347e3e3968618e540fe729vboxsync
4651430e55b9df9726347e3e3968618e540fe729vboxsync/*******************************************************************************
4651430e55b9df9726347e3e3968618e540fe729vboxsync* Header Files *
4651430e55b9df9726347e3e3968618e540fe729vboxsync*******************************************************************************/
4651430e55b9df9726347e3e3968618e540fe729vboxsync#include "internal/iprt.h"
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync#include <iprt/path.h>
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync#include <iprt/string.h>
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync/**
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync * Finds the filename in a path.
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync *
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync * @returns Pointer to filename within pszPath.
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync * @returns NULL if no filename (i.e. empty string or ends with a slash).
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync * @param pszPath Path to find filename in.
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync */
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsyncRTDECL(char *) RTPathFilename(const char *pszPath)
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync{
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync const char *psz = pszPath;
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync const char *pszName = pszPath;
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync for (;; psz++)
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync {
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync switch (*psz)
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync {
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync /* handle separators. */
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync#if defined(RT_OS_WINDOWS) || defined(RT_OS_OS2)
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync case ':':
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync pszName = psz + 1;
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync break;
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync case '\\':
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync#endif
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync case '/':
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync pszName = psz + 1;
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync break;
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync /* the end */
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync case '\0':
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync if (*pszName)
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync return (char *)(void *)pszName;
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync return NULL;
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync }
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync }
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync /* not reached */
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync}
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync
4a4d0b7611a832602800898d4ec5da6d588b535avboxsync