RTFileModeToFlags.cpp revision 306d9cb84eb3658ab739a7d25c4ceca11482ace2
97a22e235416469499b353dfec11fc90c79df178vboxsync * IPRT - RTFileModeToFlags.
97a22e235416469499b353dfec11fc90c79df178vboxsync * Copyright (C) 2013 Oracle Corporation
97a22e235416469499b353dfec11fc90c79df178vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
97a22e235416469499b353dfec11fc90c79df178vboxsync * available from http://www.virtualbox.org. This file is free software;
97a22e235416469499b353dfec11fc90c79df178vboxsync * you can redistribute it and/or modify it under the terms of the GNU
97a22e235416469499b353dfec11fc90c79df178vboxsync * General Public License (GPL) as published by the Free Software
97a22e235416469499b353dfec11fc90c79df178vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
97a22e235416469499b353dfec11fc90c79df178vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
97a22e235416469499b353dfec11fc90c79df178vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
97a22e235416469499b353dfec11fc90c79df178vboxsync * The contents of this file may alternatively be used under the terms
97a22e235416469499b353dfec11fc90c79df178vboxsync * of the Common Development and Distribution License Version 1.0
97a22e235416469499b353dfec11fc90c79df178vboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
97a22e235416469499b353dfec11fc90c79df178vboxsync * VirtualBox OSE distribution, in which case the provisions of the
97a22e235416469499b353dfec11fc90c79df178vboxsync * CDDL are applicable instead of those of the GPL.
97a22e235416469499b353dfec11fc90c79df178vboxsync * You may elect to license modified versions of this file under the
97a22e235416469499b353dfec11fc90c79df178vboxsync * terms and conditions of either the GPL or the CDDL or both.
97a22e235416469499b353dfec11fc90c79df178vboxsync/*******************************************************************************
97a22e235416469499b353dfec11fc90c79df178vboxsync* Header Files *
97a22e235416469499b353dfec11fc90c79df178vboxsync*******************************************************************************/
97a22e235416469499b353dfec11fc90c79df178vboxsyncRTR3DECL(int) RTFileModeToFlags(const char *pszMode, uint64_t *puMode)
97a22e235416469499b353dfec11fc90c79df178vboxsync bool fSkip = false;
306d9cb84eb3658ab739a7d25c4ceca11482ace2vboxsync /* Opens an existing file for writing and places the
306d9cb84eb3658ab739a7d25c4ceca11482ace2vboxsync * file pointer at the end of the file. The file is
306d9cb84eb3658ab739a7d25c4ceca11482ace2vboxsync * created if it does not exist. */
97a22e235416469499b353dfec11fc90c79df178vboxsync /* Just skip as being valid. */
97a22e235416469499b353dfec11fc90c79df178vboxsync /* Creates a file or open an existing one for
97a22e235416469499b353dfec11fc90c79df178vboxsync * writing only. The file pointer will be placed
97a22e235416469499b353dfec11fc90c79df178vboxsync * at the beginning of the file.*/
97a22e235416469499b353dfec11fc90c79df178vboxsync /* Opens an existing file for reading and places the
97a22e235416469499b353dfec11fc90c79df178vboxsync * file pointer at the beginning of the file. If the
97a22e235416469499b353dfec11fc90c79df178vboxsync * file does not exist an error will be returned. */
97a22e235416469499b353dfec11fc90c79df178vboxsync /* Just skip as being valid. */
97a22e235416469499b353dfec11fc90c79df178vboxsync /* Creates a new file or replaces an existing one
97a22e235416469499b353dfec11fc90c79df178vboxsync * for writing. Places the file pointer at the beginning.
97a22e235416469499b353dfec11fc90c79df178vboxsync * An existing file will be truncated to 0 bytes. */
97a22e235416469499b353dfec11fc90c79df178vboxsync /* Creates a new file and opens it for writing. Places
97a22e235416469499b353dfec11fc90c79df178vboxsync * the file pointer at the beginning. If the file
97a22e235416469499b353dfec11fc90c79df178vboxsync * exists an error will be returned. */
97a22e235416469499b353dfec11fc90c79df178vboxsync /* Also open / create file with read access. */
97a22e235416469499b353dfec11fc90c79df178vboxsync /* Also open / create file with write access. */
97a22e235416469499b353dfec11fc90c79df178vboxsync /* Silently eat skipped parameters. */
97a22e235416469499b353dfec11fc90c79df178vboxsync case 0: /* No previous character yet. */
97a22e235416469499b353dfec11fc90c79df178vboxsync /* Eat plusses which don't belong to a command. */
97a22e235416469499b353dfec11fc90c79df178vboxsync /* No action mask set? */
d32bfbceca9cace1f83aebb98cc0f3f0f49f2832vboxsync /** @todo Handle sharing mode. */
97a22e235416469499b353dfec11fc90c79df178vboxsyncRTR3DECL(int) RTFileModeToFlagsEx(const char *pszAccess, const char *pszDisposition,
97a22e235416469499b353dfec11fc90c79df178vboxsync AssertPtrReturn(pszDisposition, VERR_INVALID_POINTER);
97a22e235416469499b353dfec11fc90c79df178vboxsync /* pszSharing is not used yet. */
306d9cb84eb3658ab739a7d25c4ceca11482ace2vboxsync * Handle access mode.
97a22e235416469499b353dfec11fc90c79df178vboxsync bool fSkip = false;
97a22e235416469499b353dfec11fc90c79df178vboxsync /* Just skip as being valid. */
97a22e235416469499b353dfec11fc90c79df178vboxsync /* Just skip as being valid. */
97a22e235416469499b353dfec11fc90c79df178vboxsync /* Also use read access in write mode. */
97a22e235416469499b353dfec11fc90c79df178vboxsync /* Also use write access in read mode. */
97a22e235416469499b353dfec11fc90c79df178vboxsync /* Silently eat skipped parameters. */
97a22e235416469499b353dfec11fc90c79df178vboxsync case 0: /* No previous character yet. */
97a22e235416469499b353dfec11fc90c79df178vboxsync /* Eat plusses which don't belong to a command. */
97a22e235416469499b353dfec11fc90c79df178vboxsync * Handle disposition.
97a22e235416469499b353dfec11fc90c79df178vboxsync /* Create a new file, always, overwrite an existing file. */
97a22e235416469499b353dfec11fc90c79df178vboxsync /* Create a new file if it does not exist, fail if exist. */
97a22e235416469499b353dfec11fc90c79df178vboxsync /* Open existing file, create file if does not exist. */
306d9cb84eb3658ab739a7d25c4ceca11482ace2vboxsync /* Open existing file and place the file pointer at
306d9cb84eb3658ab739a7d25c4ceca11482ace2vboxsync * the end of the file, if opened with write access.
306d9cb84eb3658ab739a7d25c4ceca11482ace2vboxsync * Create the file if does not exist. */
97a22e235416469499b353dfec11fc90c79df178vboxsync /* Open existing, fail if does not exist. */
97a22e235416469499b353dfec11fc90c79df178vboxsync /* Open and truncate existing, fail of not exist. */
97a22e235416469499b353dfec11fc90c79df178vboxsync /* No action mask set? */
97a22e235416469499b353dfec11fc90c79df178vboxsync /** @todo Handle sharing mode. */