| www.delorie.com/djgpp/doc/libc-2.01/libc_439.html | search |
#include <fcntl.h> char _lfn_gen_short_fname (const char *long_fname, char *short_fname);
This function generates a short (8+3) filename alias for the long filename pointed to by long_fname and puts it into the buffer pointed to by short_fname. It uses the same algorithm that Windows 9x uses, with the exception that the returned short name will never have a numeric tail, because this function doesn't check the directory to see whether the generated short name will collide with any other file in the directory. Note that long_fname must contain only the name part of a file; elements of a full pathname (like : or / are not allowed (they will cause the function to fail). short_fname will be returned upper-cased, since that is how 8+3 filenames are stored in directory entries.
When the LFN API is not supported (see section _use_lfn), the function simply converts up to 12 characters of long_fname to upper-case and returns that. It will do the same if long_fname includes any characters illegal in a filename.
You might need to call this function if you want to know whether a given
filename is valid on MSDOS: if a case-sensitive string comparison
function such as strcmp (see section strcmp) returns a 0 when it
compares the original long filename with the short one returned by
_lfn_gen_short_fname, then the filename is a valid DOS name.
(Note that if long_fname is in lower case, it might not compare
equal with short_fname because of the case difference.)
The function returns a pointer to short_fname.
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
int dos_check (char *fname)
{
char fshort[13];
int retval;
if (stricmp (_lfn_gen_short_fname (fname, fshort), fname) == 0)
{
printf ("%s is a valid MSDOS 8+3 filename\n", fname);
retval = 1;
}
else
{
printf ("%s will have to be changed for MSDOS\n", fname);
retval = 0;
}
return retval;
}
Go to the first, previous, next, last section, table of contents.
| prev next webmaster | delorie software privacy |
| Copyright © 1997 | Updated Apr 1997 |