VirtualBox

Changeset 62559 in vbox for trunk/src


Ignore:
Timestamp:
Jul 26, 2016 1:54:52 PM (8 years ago)
Author:
vboxsync
Message:

RTFileModeToFlags.cpp: Code cleanup.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/misc/RTFileModeToFlags.cpp

    r62477 r62559  
    3636
    3737
    38 RTR3DECL(int) RTFileModeToFlags(const char *pszMode, uint64_t *puMode)
     38RTR3DECL(int) RTFileModeToFlags(const char *pszMode, uint64_t *pfMode)
    3939{
    4040    AssertPtrReturn(pszMode, VERR_INVALID_POINTER);
    41     AssertPtrReturn(puMode, VERR_INVALID_POINTER);
    42 
    43     int rc = VINF_SUCCESS;
     41    AssertPtrReturn(pfMode, VERR_INVALID_POINTER);
    4442
    4543    const char *pszCur = pszMode;
    46     uint64_t uMode = 0;
    47     char chPrev = 0;
    48 
    4944    if (*pszCur == '\0')
    5045        return VERR_INVALID_PARAMETER;
    5146
     47    uint64_t    fMode  = 0;
     48    char        chPrev = '\0';
    5249    while (    pszCur
    5350           && *pszCur != '\0')
     
    6057             * created if it does not exist. */
    6158            case 'a':
    62                 if ((uMode & RTFILE_O_ACTION_MASK) == 0)
    63                 {
    64                     uMode |=   RTFILE_O_OPEN_CREATE
    65                              | RTFILE_O_WRITE
    66                              | RTFILE_O_APPEND;
    67                 }
    68                 else
    69                     rc = VERR_INVALID_PARAMETER;
     59                if ((fMode & RTFILE_O_ACTION_MASK) == 0)
     60                    fMode |= RTFILE_O_OPEN_CREATE
     61                           | RTFILE_O_WRITE
     62                           | RTFILE_O_APPEND;
     63                else
     64                    return VERR_INVALID_PARAMETER;
    7065                break;
    7166
     
    7974             * at the beginning of the file.*/
    8075            case 'c':
    81                 if ((uMode & RTFILE_O_ACTION_MASK) == 0)
    82                 {
    83                     uMode |=   RTFILE_O_OPEN_CREATE
    84                              | RTFILE_O_WRITE;
    85                 }
    86                 else
    87                     rc = VERR_INVALID_PARAMETER;
     76                if ((fMode & RTFILE_O_ACTION_MASK) == 0)
     77                    fMode |= RTFILE_O_OPEN_CREATE
     78                           | RTFILE_O_WRITE;
     79                else
     80                    return VERR_INVALID_PARAMETER;
    8881                break;
    8982
     
    9285             * file does not exist an error will be returned. */
    9386            case 'r':
    94                 if ((uMode & RTFILE_O_ACTION_MASK) == 0)
    95                 {
    96                     uMode |=   RTFILE_O_OPEN
    97                              | RTFILE_O_READ;
    98                 }
    99                 else
    100                     rc = VERR_INVALID_PARAMETER;
     87                if ((fMode & RTFILE_O_ACTION_MASK) == 0)
     88                    fMode |=  RTFILE_O_OPEN
     89                           | RTFILE_O_READ;
     90                else
     91                    return VERR_INVALID_PARAMETER;
    10192                break;
    10293
     
    110101             * An existing file will be truncated to 0 bytes. */
    111102            case 'w':
    112                 if ((uMode & RTFILE_O_ACTION_MASK) == 0)
    113                 {
    114                     uMode |=   RTFILE_O_CREATE_REPLACE
    115                              | RTFILE_O_WRITE
    116                              | RTFILE_O_TRUNCATE;
    117                 }
    118                 else
    119                     rc = VERR_INVALID_PARAMETER;
     103                if ((fMode & RTFILE_O_ACTION_MASK) == 0)
     104                    fMode |= RTFILE_O_CREATE_REPLACE
     105                           | RTFILE_O_WRITE
     106                           | RTFILE_O_TRUNCATE;
     107                else
     108                    return VERR_INVALID_PARAMETER;
    120109                break;
    121110
     
    124113             * exists an error will be returned. */
    125114            case 'x':
    126                 if ((uMode & RTFILE_O_ACTION_MASK) == 0)
    127                 {
    128                     uMode |=   RTFILE_O_CREATE
    129                              | RTFILE_O_WRITE;
    130                 }
    131                 else
    132                     rc = VERR_INVALID_PARAMETER;
     115                if ((fMode & RTFILE_O_ACTION_MASK) == 0)
     116                    fMode |= RTFILE_O_CREATE
     117                           | RTFILE_O_WRITE;
     118                else
     119                    return VERR_INVALID_PARAMETER;
    133120                break;
    134121
     
    142129                    case 'x':
    143130                        /* Also open / create file with read access. */
    144                         uMode |= RTFILE_O_READ;
     131                        fMode |= RTFILE_O_READ;
    145132                        break;
    146133
    147134                    case 'r':
    148135                        /* Also open / create file with write access. */
    149                         uMode |= RTFILE_O_WRITE;
     136                        fMode |= RTFILE_O_WRITE;
    150137                        break;
    151138
     
    163150
    164151                    default:
    165                         rc = VERR_INVALID_PARAMETER;
    166                         break;
     152                        return VERR_INVALID_PARAMETER;
    167153                }
    168154
     
    171157
    172158            default:
    173                 rc = VERR_INVALID_PARAMETER;
    174                 break;
     159                return VERR_INVALID_PARAMETER;
    175160        }
    176 
    177         if (RT_FAILURE(rc))
    178             break;
    179161
    180162        if (!fSkip)
     
    184166
    185167    /* No action mask set? */
    186     if (   RT_SUCCESS(rc)
    187         && (uMode & RTFILE_O_ACTION_MASK) == 0)
    188         rc = VERR_INVALID_PARAMETER;
    189 
    190     /** @todo Handle sharing mode. */
    191     uMode |= RTFILE_O_DENY_NONE;
    192 
    193     if (RT_SUCCESS(rc))
    194         *puMode = uMode;
    195 
    196     return rc;
     168    if ((fMode & RTFILE_O_ACTION_MASK) == 0)
     169        return VERR_INVALID_PARAMETER;
     170
     171    /** @todo Handle sharing mode */
     172    fMode |= RTFILE_O_DENY_NONE;
     173
     174    /* Return. */
     175    *pfMode = fMode;
     176    return VINF_SUCCESS;
    197177}
    198178RT_EXPORT_SYMBOL(RTFileModeToFlags);
     
    200180
    201181RTR3DECL(int) RTFileModeToFlagsEx(const char *pszAccess, const char *pszDisposition,
    202                                   const char *pszSharing, uint64_t *puMode)
     182                                  const char *pszSharing, uint64_t *pfMode)
    203183{
    204184    AssertPtrReturn(pszAccess, VERR_INVALID_POINTER);
    205185    AssertPtrReturn(pszDisposition, VERR_INVALID_POINTER);
    206     /* pszSharing is not used yet. */
    207     AssertPtrReturn(puMode, VERR_INVALID_POINTER);
    208 
    209     int rc = VINF_SUCCESS;
     186    AssertPtrNullReturn(pszSharing, VERR_INVALID_POINTER);
     187    AssertPtrReturn(pfMode, VERR_INVALID_POINTER);
    210188
    211189    const char *pszCur = pszAccess;
    212     uint64_t uMode = 0;
    213     char chPrev = 0;
    214 
    215190    if (*pszCur == '\0')
    216191        return VERR_INVALID_PARAMETER;
     
    219194     * Handle access mode.
    220195     */
     196    uint64_t fMode  = 0;
     197    char     chPrev = '\0';
    221198    while (    pszCur
    222199           && *pszCur != '\0')
     
    231208
    232209            case 'r': /* Read. */
    233                 uMode |= RTFILE_O_READ;
     210                fMode |= RTFILE_O_READ;
    234211                break;
    235212
     
    240217
    241218            case 'w': /* Write. */
    242                 uMode |= RTFILE_O_WRITE;
     219                fMode |= RTFILE_O_WRITE;
    243220                break;
    244221
     
    249226                    case 'w':
    250227                        /* Also use read access in write mode. */
    251                         uMode |= RTFILE_O_READ;
     228                        fMode |= RTFILE_O_READ;
    252229                        break;
    253230
    254231                    case 'r':
    255232                        /* Also use write access in read mode. */
    256                         uMode |= RTFILE_O_WRITE;
     233                        fMode |= RTFILE_O_WRITE;
    257234                        break;
    258235
     
    270247
    271248                    default:
    272                         rc = VERR_INVALID_PARAMETER;
    273                         break;
     249                        return VERR_INVALID_PARAMETER;
    274250                }
    275251
     
    278254
    279255            default:
    280                 rc = VERR_INVALID_PARAMETER;
    281                 break;
     256                return VERR_INVALID_PARAMETER;
    282257        }
    283 
    284         if (RT_FAILURE(rc))
    285             break;
    286258
    287259        if (!fSkip)
     
    290262    }
    291263
    292     if (RT_FAILURE(rc))
    293         return rc;
    294 
    295264    /*
    296265     * Handle disposition.
     
    300269    /* Create a new file, always, overwrite an existing file. */
    301270    if (!RTStrCmp(pszCur, "ca"))
    302         uMode |= RTFILE_O_CREATE_REPLACE;
     271        fMode |= RTFILE_O_CREATE_REPLACE;
    303272    /* Create a new file if it does not exist, fail if exist. */
    304273    else if (!RTStrCmp(pszCur, "ce"))
    305         uMode |= RTFILE_O_CREATE;
     274        fMode |= RTFILE_O_CREATE;
    306275    /* Open existing file, create file if does not exist. */
    307276    else if (!RTStrCmp(pszCur, "oc"))
    308         uMode |= RTFILE_O_OPEN_CREATE;
     277        fMode |= RTFILE_O_OPEN_CREATE;
    309278    /* Open existing file and place the file pointer at
    310279     * the end of the file, if opened with write access.
    311280     * Create the file if does not exist. */
    312281    else if (!RTStrCmp(pszCur, "oa"))
    313         uMode |= RTFILE_O_OPEN_CREATE | RTFILE_O_APPEND;
     282        fMode |= RTFILE_O_OPEN_CREATE | RTFILE_O_APPEND;
    314283    /* Open existing, fail if does not exist. */
    315284    else if (!RTStrCmp(pszCur, "oe"))
    316         uMode |= RTFILE_O_OPEN;
     285        fMode |= RTFILE_O_OPEN;
    317286    /* Open and truncate existing, fail of not exist. */
    318287    else if (!RTStrCmp(pszCur, "ot"))
    319         uMode |= RTFILE_O_OPEN | RTFILE_O_TRUNCATE;
     288        fMode |= RTFILE_O_OPEN | RTFILE_O_TRUNCATE;
    320289    else
    321         rc = VERR_INVALID_PARAMETER;
     290        return VERR_INVALID_PARAMETER;
    322291
    323292    /* No action mask set? */
    324     if (   RT_SUCCESS(rc)
    325         && (uMode & RTFILE_O_ACTION_MASK) == 0)
    326         rc = VERR_INVALID_PARAMETER;
     293    if ((fMode & RTFILE_O_ACTION_MASK) == 0)
     294        return VERR_INVALID_PARAMETER;
    327295
    328296    /** @todo Handle sharing mode. */
    329     uMode |= RTFILE_O_DENY_NONE;
    330 
    331     if (RT_SUCCESS(rc))
    332         *puMode = uMode;
    333 
    334     return rc;
     297    fMode |= RTFILE_O_DENY_NONE;
     298
     299    /* Return. */
     300    *pfMode = fMode;
     301    return VINF_SUCCESS;
    335302}
    336303RT_EXPORT_SYMBOL(RTFileModeToFlagsEx);
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette