Exemple #1
0
static void send_char(wchar_t c)
{
	char cbuf[STR_BOUNDS(1)];
	size_t offs;
	int rc;

	offs = 0;
	chr_encode(c, cbuf, &offs, STR_BOUNDS(1));

	rc = conn_send(cbuf, offs);
	if (rc != EOK) {
		printf("[Failed sending data]\n");
	}
}
Exemple #2
0
int fputc(wchar_t c, FILE *stream)
{
	char buf[STR_BOUNDS(1)];
	size_t sz = 0;
	
	if (chr_encode(c, buf, &sz, STR_BOUNDS(1)) == EOK) {
		size_t wr = fwrite(buf, 1, sz, stream);
		
		if (wr < sz)
			return EOF;
		
		return (int) c;
	}
	
	return EOF;
}
Exemple #3
0
/** Insert a character at caret position. */
static void insert_char(wchar_t c)
{
	spt_t pt;
	char cbuf[STR_BOUNDS(1) + 1];
	size_t offs;

	tag_get_pt(&pane.caret_pos, &pt);

	offs = 0;
	chr_encode(c, cbuf, &offs, STR_BOUNDS(1) + 1);
	cbuf[offs] = '\0';

	(void) sheet_insert(&doc.sh, &pt, dir_before, cbuf);

	pane.rflags |= REDRAW_ROW;
	if (c == '\n')
		pane.rflags |= REDRAW_TEXT;
}
Exemple #4
0
static int klog_vprintf_wstr_write(const wchar_t *str, size_t size, void *data)
{
	size_t offset = 0;
	size_t chars = 0;
	
	while (offset < size) {
		char buf[STR_BOUNDS(1)];
		size_t sz = 0;
		
		if (chr_encode(str[chars], buf, &sz, STR_BOUNDS(1)) == EOK)
			klog_write(buf, sz);
		
		chars++;
		offset += sizeof(wchar_t);
	}
	
	return chars;
}
Exemple #5
0
static int log_printf_wstr_write(const wchar_t *wstr, size_t size, void *data)
{
	char buffer[16];
	size_t offset = 0;
	size_t chars = 0;
	
	for (offset = 0; offset < size; offset += sizeof(wchar_t), chars++) {
		kio_push_char(wstr[chars]);
		
		size_t buffer_offset = 0;
		int rc = chr_encode(wstr[chars], buffer, &buffer_offset, 16);
		if (rc != EOK) {
			return rc;
		}
		
		log_append((const uint8_t *)buffer, buffer_offset);
	}
	
	return chars;
}
Exemple #6
0
void insertscore(int score, int level)
{
	int i;
	int j;
	size_t off;
	cons_event_t ev;
	kbd_event_t *kev;
	
	clear_screen();
	moveto(10, 10);
	puts("Insert your name: ");
	str_cpy(scores[NUMSPOTS - 1].hs_name, STR_BOUNDS(MAXLOGNAME) + 1,
	    "Player");
	i = 6;
	off = 6;
	
	moveto(10 , 28);
	printf("%s%.*s", scores[NUMSPOTS - 1].hs_name, MAXLOGNAME-i,
	    "........................................");
	
	while (1) {
		console_flush(console);
		if (!console_get_event(console, &ev))
			exit(1);
		
		if (ev.type != CEV_KEY || ev.ev.key.type == KEY_RELEASE)
			continue;
		
		kev = &ev.ev.key;
		
		if (kev->key == KC_ENTER || kev->key == KC_NENTER)
			break;
		
		if (kev->key == KC_BACKSPACE) {
			if (i > 0) {
				wchar_t uc;
				
				--i;
				while (off > 0) {
					--off;
					size_t otmp = off;
					uc = str_decode(scores[NUMSPOTS - 1].hs_name,
					    &otmp, STR_BOUNDS(MAXLOGNAME) + 1);
					if (uc != U_SPECIAL)
						break;
				}
				
				scores[NUMSPOTS - 1].hs_name[off] = '\0';
			}
		} else if (kev->c != '\0') {
			if (i < (MAXLOGNAME - 1)) {
				if (chr_encode(kev->c, scores[NUMSPOTS - 1].hs_name,
				    &off, STR_BOUNDS(MAXLOGNAME) + 1) == EOK) {
					++i;
				}
				scores[NUMSPOTS - 1].hs_name[off] = '\0';
			}
		}
		
		moveto(10, 28);
		printf("%s%.*s", scores[NUMSPOTS - 1].hs_name, MAXLOGNAME - i,
		    "........................................");
	}
	
	scores[NUMSPOTS - 1].hs_score = score;
	scores[NUMSPOTS - 1].hs_level = level;
	
	i = NUMSPOTS - 1;
	while ((i > 0) && (scores[i - 1].hs_score < score))
		i--;
	
	for (j = NUMSPOTS - 2; j > i; j--)
		copyhiscore(j, j-1);
	
	copyhiscore(i, NUMSPOTS - 1);
}