chiark / gitweb /
terminal: make utf8 decoder return length
[elogind.git] / src / libsystemd-terminal / term-screen.c
index a19c684d2ad6c040dd610dd18d5d915ebc2d1943..2f3f6f91cb119ac50e20d17a30e00e6cce36f284 100644 (file)
@@ -455,7 +455,7 @@ static uint32_t screen_map(term_screen *screen, uint32_t val) {
 
 /*
  * Command Handlers
- * This is the inofficial documentation of all the TERM_CMD_* definitions. Each
+ * This is the unofficial documentation of all the TERM_CMD_* definitions. Each
  * handled command has a separate function with an extensive comment on the
  * semantics of the command.
  * Note that many semantics are unknown and need to be verified. This is mostly
@@ -1040,7 +1040,7 @@ static int screen_DECELR(term_screen *screen, const term_seq *seq) {
         /*
          * DECELR - enable-locator-reporting
          * This changes the locator-reporting mode. @args[0] specifies the mode
-         * to set, 0 disables locator-reporting, 1 enables it continously, 2
+         * to set, 0 disables locator-reporting, 1 enables it continuously, 2
          * enables it for a single report. @args[1] specifies the
          * precision-mode. 0 and 2 set the reporting to cell-precision, 1 sets
          * pixel-precision.
@@ -3743,8 +3743,20 @@ static int screen_feed_cmd(term_screen *screen, const term_seq *seq) {
         return 0;
 }
 
+unsigned int term_screen_get_width(term_screen *screen) {
+        assert_return(screen, -EINVAL);
+
+        return screen->page->width;
+}
+
+unsigned int term_screen_get_height(term_screen *screen) {
+        assert_return(screen, -EINVAL);
+
+        return screen->page->height;
+}
+
 int term_screen_feed_text(term_screen *screen, const uint8_t *in, size_t size) {
-        const uint32_t *ucs4_str;
+        uint32_t *ucs4_str;
         size_t i, j, ucs4_len;
         const term_seq *seq;
         int r;
@@ -3756,7 +3768,7 @@ int term_screen_feed_text(term_screen *screen, const uint8_t *in, size_t size) {
          * 8bit mode if the stream is not valid UTF-8. This should be more than
          * enough to support old 7bit/8bit modes. */
         for (i = 0; i < size; ++i) {
-                ucs4_str = term_utf8_decode(&screen->utf8, &ucs4_len, in[i]);
+                ucs4_len = term_utf8_decode(&screen->utf8, &ucs4_str, in[i]);
                 for (j = 0; j < ucs4_len; ++j) {
                         r = term_parser_feed(screen->parser, &seq, ucs4_str[j]);
                         if (r < 0) {