Changeset 171f9a1 in mainline for uspace/srv/console/console.c


Ignore:
Timestamp:
2009-04-03T20:39:33Z (15 years ago)
Author:
Jiri Svoboda <jirik.svoboda@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade
Children:
cb01e1e
Parents:
7a2c479
Message:

Character encoding/decoding un uspace. Partially fix klog application.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/console/console.c

    r7a2c479 r171f9a1  
    4949#include <sys/mman.h>
    5050#include <stdio.h>
     51#include <string.h>
    5152#include <sysinfo.h>
    5253#include <event.h>
     
    466467{
    467468        ipc_callid_t callid;
    468         size_t len;
    469         size_t i;
    470 
    471         if (!ipc_data_write_receive(&callid, &len)) {
     469        size_t size;
     470        wchar_t ch;
     471        size_t off;
     472
     473        if (!ipc_data_write_receive(&callid, &size)) {
    472474                ipc_answer_0(callid, EINVAL);
    473475                ipc_answer_0(rid, EINVAL);
    474476        }
    475477
    476         if (len > CWRITE_BUF_SIZE)
    477                 len = CWRITE_BUF_SIZE;
    478 
    479         (void) ipc_data_write_finalize(callid, cwrite_buf, len);
    480 
    481         for (i = 0; i < len; i++) {
    482                 write_char(consnum, cwrite_buf[i]);
     478        if (size > CWRITE_BUF_SIZE)
     479                size = CWRITE_BUF_SIZE;
     480
     481        (void) ipc_data_write_finalize(callid, cwrite_buf, size);
     482
     483        off = 0;
     484        while (off < size) {
     485                ch = str_decode(cwrite_buf, &off, size);
     486                write_char(consnum, ch);
    483487        }
    484488
    485489        gcons_notify_char(consnum);
    486         ipc_answer_1(rid, EOK, len);
     490        ipc_answer_1(rid, EOK, size);
    487491}
    488492
Note: See TracChangeset for help on using the changeset viewer.