Changeset 1b3f7e92 in rtems


Ignore:
Timestamp:
Mar 26, 2010, 1:19:51 AM (9 years ago)
Author:
Chris Johns <chrisj@…>
Branches:
4.10, 4.11, master
Children:
f3d3fd2
Parents:
eff93d5
Message:

2010-03-26 Chris Johns <chrisj@…>

  • libfs/src/dosfs/msdos_misc.c: Part fix to PR1491.
Location:
cpukit
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • cpukit/ChangeLog

    reff93d5 r1b3f7e92  
     12010-03-26      Chris Johns <chrisj@rtems.org>
     2
     3        * libfs/src/dosfs/msdos_misc.c: Part fix to PR1491.
     4
    152010-03-22      Joel Sherrill <joel.sherrill@oarcorp.com>
    26
  • cpukit/libfs/src/dosfs/msdos_misc.c

    reff93d5 r1b3f7e92  
    111111msdos_name_type(const char *name, int name_len)
    112112{
    113     bool dot = false;
    114113    bool lowercase = false;
    115114    bool uppercase = false;
    116     int  dot_at = 0;
     115    int  dot_at = -1;
    117116    int  count = 0;
    118117
    119118    while (*name && (count < name_len))
    120119    {
     120        bool is_dot = *name == '.';
    121121        msdos_name_type_t type = msdos_is_valid_name_char(*name);
    122122
     
    124124            return type;
    125125
    126         if (dot)
     126        if (dot_at >= 0)
    127127        {
    128             if ((*name == '.') || ((count - dot_at) > 3))
     128            if (is_dot || ((count - dot_at) > 3))
    129129                return MSDOS_NAME_LONG;
    130130        }
    131131        else
    132132        {
    133             if (count >= 8)
     133            if (count == 8 && !is_dot)
    134134                return MSDOS_NAME_LONG;
    135135        }
    136136
    137         if (*name == '.')
    138         {
    139             dot = true;
     137        if (is_dot)
    140138            dot_at = count;
    141         }
    142139        else if ((*name >= 'A') && (*name <= 'Z'))
    143140            uppercase = true;
     
    195192     */
    196193    for (i = 0; i < lfn_len; i++)
    197         if ((lfn[i] != ' ') && (lfn[i] == '.'))
     194        if ((lfn[i] != ' ') && (lfn[i] != '.'))
    198195            break;
    199196
    200     if (i > lfn_len)
     197    if (i == lfn_len)
    201198        return MSDOS_NAME_INVALID;
    202199
     
    239236    *ret_token_len = 0;
    240237
     238    if (pathlen == 0)
     239        return MSDOS_NO_MORE_PATH;
     240   
    241241    /*
    242242     *  Check for a separator.
Note: See TracChangeset for help on using the changeset viewer.