Ignore:
Timestamp:
Sep 2, 2000, 11:08:23 PM (25 years ago)
Author:
bird
Message:

Merged in the Grace branch. New Win32k!

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/win32k/dev16/vprntf16.c

    r2905 r4164  
    1 /* $Id: vprntf16.c,v 1.2 2000-02-26 17:49:28 bird Exp $
     1/* $Id: vprntf16.c,v 1.3 2000-09-02 21:07:56 bird Exp $
    22 *
    33 * vprintf and printf - 16-bit.
     
    3636#include <os2.h>
    3737
     38#include "devSegDf.h"                   /* Win32k segment definitions. */
     39#include "dev16.h"
    3840#include "vprntf16.h"
    3941#ifdef RING0
     
    4143#include "conio.h"
    4244#endif
    43 #include "dev16.h"
    4445
    4546/*******************************************************************************
    4647*   Global Variables                                                           *
    4748*******************************************************************************/
     49static char chReturn  = '\r';
    4850static char chNewLine = '\n';
    49 static char chReturn  = '\r';
     51static char chReturnWithNewLine[2] = "\r\n";
    5052
    5153/*******************************************************************************
     
    217219 * @param     args        Argument list.
    218220 */
    219 int vprintf16(const char *pszFormat, va_list args)
     221int FAR vprintf16(const char *pszFormat, va_list args)
    220222{
    221223    int cch = 0;
     
    327329                        char *pszStr = va_arg(args, char*);
    328330
    329                         if (pszStr < (char*)0x10000)
     331                        if (pszStr == NULL)
    330332                            pszStr = "<NULL>";
    331333                        cchStr = _strnlen(pszStr, (unsigned)cchPrecision);
     
    391393 * @param     ...        Optional parameters.
    392394 */
    393 int printf16(const char *pszFormat, ...)
     395int FAR printf16(const char *pszFormat, ...)
    394396{
    395397    int     cch;
     
    413415static void choutconsole(int ch)
    414416{
    415     USHORT usWrote;
    416 
    417417    if (ch != '\r')
    418418    {
     419        USHORT  usWrote;                /* Bytes written (ignored). */
    419420        if (ch == '\n')
    420         {
    421             usWrote = 1;
    422             DosWrite(1, (PVOID)&chReturn, 1, &usWrote);
    423         }
    424         usWrote = 1;
    425         DosWrite(1, (PVOID)&ch, 1, &usWrote);
     421            DosWrite(1, (PVOID)&chReturnWithNewLine, 2, &usWrote);
     422        else
     423            DosWrite(1, (PVOID)&ch, 1, &usWrote);
    426424    }
    427425}
     
    438436 *            At runtime the text is only sendt to com-port.
    439437 */
    440 static char *stroutconsole(char *psz, signed cchMax)
    441 {
     438static char *stroutconsole(register char *psz, signed cchMax)
     439{
     440    register CHAR   ch;
     441
    442442    while (cchMax > 0 && *psz != '\0')
    443443    {
    444         USHORT cch = 0;
    445         USHORT us;
    446 
    447         while (cchMax - cch > 0 && psz[cch] != '\0' && psz[cch] != '\r' && psz[cch] != '\n')
     444        register signed cch = 0;
     445        USHORT          us;             /* Bytes written (ignored). */
     446
     447        while (cchMax > cch && (ch = psz[cch]) != '\0' && ch != '\r' && ch != '\n')
    448448            cch++;
    449449
    450450        /* write string part */
    451         us = cch;
    452451        DosWrite(1, (PVOID)psz, cch, &us);
    453452
    454         /* cr and lf check + skip */
    455         if (psz[cch] == '\n' || psz[cch] == '\r')
    456         {
    457             if (psz[cch] == '\n')
    458             {
    459                 DosWrite(1, (PVOID)&chReturn, 1, &us);
    460                 DosWrite(1, (PVOID)&chNewLine, 1, &us);
    461             }
    462 
    463             while (cchMax - cch > 0 && (psz[cch] == '\r' || psz[cch] == '\n'))
    464                 cch++;
     453        /* cr and lf: expand lf to cr+lf and ignore cr. */
     454        while (cchMax > cch)
     455        {
     456            if ((ch = psz[cch]) == '\n')
     457                DosWrite(1, (PVOID)&chReturnWithNewLine, 2, &us);
     458            else
     459                if (ch != '\r')
     460                    break;
     461            cch++;
    465462        }
    466463
     
    481478static void chout(int ch)
    482479{
    483     #ifdef RING0
     480    #if defined(RING0) && !defined(R3TST)
    484481        if (fInitTime)
    485482            choutconsole(ch);
     
    514511static char *strout(char *psz, signed cchMax)
    515512{
    516     #ifdef RING0
     513    #if defined(RING0) && !defined(R3TST)
    517514        int cchYield = 0;
    518515
     
    539536
    540537            /* cr and lf check + skip */
    541             if (psz[cch] == '\n' || psz[cch] == '\r')
     538            if (cch < cchMax && (psz[cch] == '\n' || psz[cch] == '\r'))
    542539            {
    543540                if (psz[cch] == '\n')
Note: See TracChangeset for help on using the changeset viewer.