RCS file: /usr1/CVS/rtems/cpukit/libfs/src/dosfs/msdos_misc.c,v
retrieving revision 1.19
diff -p -u -r1.19 msdos_misc.c
|
|
msdos_short_name_hex(char* sfn, int num) |
110 | 110 | static msdos_name_type_t |
111 | 111 | msdos_name_type(const char *name, int name_len) |
112 | 112 | { |
113 | | bool dot = false; |
114 | 113 | bool lowercase = false; |
115 | 114 | bool uppercase = false; |
116 | | int dot_at = 0; |
| 115 | int dot_at = -1; |
117 | 116 | int count = 0; |
118 | 117 | |
119 | 118 | while (*name && (count < name_len)) |
120 | 119 | { |
| 120 | bool is_dot = *name == '.'; |
121 | 121 | msdos_name_type_t type = msdos_is_valid_name_char(*name); |
122 | 122 | |
123 | 123 | if ((type == MSDOS_NAME_INVALID) || (type == MSDOS_NAME_LONG)) |
124 | 124 | return type; |
125 | 125 | |
126 | | if (dot) |
| 126 | if (dot_at >= 0) |
127 | 127 | { |
128 | | if ((*name == '.') || ((count - dot_at) > 3)) |
| 128 | if (is_dot || ((count - dot_at) > 3)) |
129 | 129 | return MSDOS_NAME_LONG; |
130 | 130 | } |
131 | 131 | else |
132 | 132 | { |
133 | | if (count >= 8) |
| 133 | if (count == 8 && !is_dot) |
134 | 134 | return MSDOS_NAME_LONG; |
135 | 135 | } |
136 | 136 | |
137 | | if (*name == '.') |
138 | | { |
139 | | dot = true; |
| 137 | if (is_dot) |
140 | 138 | dot_at = count; |
141 | | } |
142 | 139 | else if ((*name >= 'A') && (*name <= 'Z')) |
143 | 140 | uppercase = true; |
144 | 141 | else if ((*name >= 'a') && (*name <= 'z')) |
… |
… |
msdos_long_to_short(const char *lfn, int |
194 | 191 | * Filenames with only blanks and dots are not allowed! |
195 | 192 | */ |
196 | 193 | for (i = 0; i < lfn_len; i++) |
197 | | if ((lfn[i] != ' ') && (lfn[i] == '.')) |
| 194 | if ((lfn[i] != ' ') && (lfn[i] != '.')) |
198 | 195 | break; |
199 | 196 | |
200 | | if (i > lfn_len) |
| 197 | if (i == lfn_len) |
201 | 198 | return MSDOS_NAME_INVALID; |
202 | 199 | |
203 | 200 | /* |
… |
… |
msdos_get_token(const char *path, |
238 | 235 | *ret_token = NULL; |
239 | 236 | *ret_token_len = 0; |
240 | 237 | |
| 238 | if (pathlen == 0) |
| 239 | return MSDOS_NO_MORE_PATH; |
| 240 | |
241 | 241 | /* |
242 | 242 | * Check for a separator. |
243 | 243 | */ |