static ssize_t briq_panel_write(struct file *file, const char __user *buf, size_t len, loff_t *ppos) { size_t indx = len; int i, esc = 0; #if 0 /* Can't seek (pwrite) on this device */ if (ppos != &file->f_pos) return -ESPIPE; #endif if (!vfd_is_open) return -EBUSY; for (;;) { char c; if (!indx) break; if (get_user(c, buf)) return -EFAULT; if (esc) { set_led(c); esc = 0; } else if (c == 27) { esc = 1; } else if (c == 12) { /* do a form feed */ for (i=0; i<40; i++) vfd[i] = ' '; vfd_cursor = 0; } else if (c == 10) { if (vfd_cursor < 20) vfd_cursor = 20; else if (vfd_cursor < 40) vfd_cursor = 40; else if (vfd_cursor < 60) vfd_cursor = 60; if (vfd_cursor > 59) scroll_vfd(); } else { /* just a character */ if (vfd_cursor > 39) scroll_vfd(); vfd[vfd_cursor++] = c; } indx--; buf++; } update_vfd(); return len; }
static ssize_t briq_panel_write(struct file *file, const char __user *buf, size_t len, loff_t *ppos) { size_t indx = len; int i, esc = 0; if (!vfd_is_open) return -EBUSY; for (;;) { char c; if (!indx) break; if (get_user(c, buf)) return -EFAULT; if (esc) { set_led(c); esc = 0; } else if (c == 27) { esc = 1; } else if (c == 12) { for (i=0; i<40; i++) vfd[i] = ' '; vfd_cursor = 0; } else if (c == 10) { if (vfd_cursor < 20) vfd_cursor = 20; else if (vfd_cursor < 40) vfd_cursor = 40; else if (vfd_cursor < 60) vfd_cursor = 60; if (vfd_cursor > 59) scroll_vfd(); } else { if (vfd_cursor > 39) scroll_vfd(); vfd[vfd_cursor++] = c; } indx--; buf++; } update_vfd(); return len; }