Ignore:
Timestamp:
Mar 19, 2006, 6:18:20 AM (19 years ago)
Author:
bird
Message:
  • *:

o Synced over changed from 0.6.1 bugfixing.

  • libc:

o Try put the log file handle above the range of the standard handles
o #71: Fixed incorrect fmutex padding in FILE which cause _fcloseall

(and perhaps others) to crash. (thanks to froloff)

o #69: Corrected a few problems related to dos drives and slashes in basename and dirname.
o read & write logging, and added support for more size flags to the log formatter.
o #68: Implemented the _GETOPT_DECLARED blocker in getopt.h too.
o #67: Removed termcap.h, curses.h, bsd/curses.h, bsd/termcap.h,

gnu/curses.h and gnu/termcap.h because we never built the libs for them.

o #65: Added sys/_timespec.h and uncommented it's inclusion in

sys/stat.h. This fixes the bustage in non-BSD source mode.

o Fixed wrong target name written into the symlink.
o #62: Fixed incorrect EOF treatment in getdelim (and in getline since that's just a

special case of getdelim).

o #49: Fixed stat backend so ctime is set, and made fstat, lstat and stat convert birthtime too.
o #61: Fixed incorrect ENOENT errno on symlink when it should return EEXIST.
o #60: Fixed blunder in exec/spawn filehandle inheritance code.
o #58: The standard file handles are always initialized as open.
o #54: Fixed unitialized directory handle member fInUnixTree.
o #53: Fixed LIBC panic when _openstream locks the stream vector

in any of it's error cases.

o #52: Fixed two 'symlink/' problems in the path resolver.
o #51: Made unlink able to delete readonly files.
o #50: Inherit umask.
o #30: Committed forgotten header.
o #48: Quick implementation of the freopen(NULL) operation

to make cat from coreutils happy.

o memalign and valloc shouldn't be in USE_GNU in malloc.h.
o #30: Fixed toupper / tolower EOF regression.
o Fixed incorrect assertion in
libc_back_fsInfoObjRelease.
o #41: And added special file mode mask getter and extra validations to check that

the mode mask we read has a valid type. This also shuts up some bad [f]chmod paths.

o #41: Calc st_ino and st_dev at the end of the unix attrib getter if they are not present.
o #40: Fixed double slash preventing root directories from being opened.
o #23: Fixed two incorrect EA size fields, now creating symlinks really works.
o #21: Restrict reading and writing of UnixEAs to HPFS, JFS, FAT and RAMFS.
o #38: Added DosSysCtl prototype and use it on panic to check for debugger.
o #33: Fixed a return path in libc_back_signalWait which didn't reacquire the semaphore.
o #32: Fixed incorrect readdir_r return code when out of files.
o #30: Fixed two locale bugs. First, setlocale called a locale

dependent function for getting ctype flags. Second, all the
is<>() macros / functions was busted for non-ascii chars (-1..-128).

o #23: Corrected EA name in template from "FLAGS" to "SYMLINK".
o #24: Fixed chdir() crash in fts.c.
o #24: Fixed dirfd() problem in fts.c which prevent us from getting

any results in child directories.

o #22: Added DosFindFirst() as fallback when DosQueryPathInfo() fails

to query the symlink EA in the path resolver. This problem occurs
when doing stat() on an open file (pwd_mkdb example).

  • libsocket:

o #25: Ensure correct address length returns from recvmsg and recvfrom.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libc/include/InnoTekLIBC/locale.h

    r2163 r2672  
    316316/** @} */
    317317
     318#include <ctype.h>
     319
     320/**
     321 * Convert the type info we get from the unicode lib to libc talk.
     322 * ASSUMES that none of the locals differs from the unicode spec
     323 *
     324 * @returns libc ctype flags.
     325 * @param   pUniType    The unicode type info to translate.
     326 * @param   wc          The unicode code point.
     327 */
     328static inline unsigned ___wctype_uni(const UNICTYPE *pUniType, wchar_t wc)
     329{
     330    unsigned    ufType = 0;
     331    /* ASSUMES CT_* << 8 == __* ! */
     332    ufType = ((unsigned)pUniType->itype << 8)
     333           & (__CT_UPPER  | __CT_LOWER  | __CT_DIGIT | __CT_SPACE |
     334              __CT_PUNCT  | __CT_CNTRL  | __CT_BLANK | __CT_XDIGIT |
     335              __CT_ALPHA  | __CT_ALNUM  | __CT_GRAPH | __CT_PRINT |
     336              __CT_NUMBER | __CT_SYMBOL | __CT_ASCII);
     337    if (pUniType->extend & C3_IDEOGRAPH)
     338        ufType |= __CT_IDEOGRAM;
     339    if (ufType & (__CT_XDIGIT | __CT_DIGIT))
     340    {
     341        if (     (unsigned)wc - 0x30U <= (0x39 - 0x30))
     342            ufType |= (unsigned)wc - 0x30;
     343        else if ((unsigned)wc - 0x41U <= (0x46 - 0x41))
     344            ufType |= (unsigned)wc - 0x41 + 0xa;
     345        else
     346        {
     347            unsigned uVal = UniQueryNumericValue(wc);
     348            if (!(uVal & ~0xffU))
     349                ufType |= uVal;
     350        }
     351    }
     352    ufType |= (pUniType->bidi & 0xf << 24);
     353
     354    /** @todo screen width. */
     355    return ufType;
     356}
     357
    318358__END_DECLS
    319359
Note: See TracChangeset for help on using the changeset viewer.