]> rtime.felk.cvut.cz Git - sysless.git/blobdiff - libs4c/cmdproc/cmd_io_line.c
Fix missing ':' in Emacs setup
[sysless.git] / libs4c / cmdproc / cmd_io_line.c
index 6e85cdc2b9afcdd40cff094f1260120dc7584bd1..42ac41852897efcfab51e28624cc6014e2044008 100644 (file)
@@ -29,7 +29,7 @@
  * @param elb Edit line buffer.
  * @param ch character to add.
  * 
- * @return 1 in case of end of line, 0 otherwise.
+ * @return 1 in case of end of line, -1 if called at inaproprate time, 0 otherwise.
  */
 int cmd_ed_line_buf(ed_line_buf_t *elb, int ch)
 {
@@ -98,6 +98,8 @@ int cmd_io_line_in(cmd_io_t *cmd_io)
   while((ch=cmd_io_getc(io_stack))>=0){
 //    DPRINT("Added %c (%d)\n", ch, ch);
     int eol = cmd_ed_line_buf(ed_line_in,ch);
+    if (eol == -1)
+      return -1;
     if(eol){
       if(ed_line_in->flg&FL_ELB_ECHO){
         while(cmd_io_putc(io_stack,'\r')<0);
@@ -113,15 +115,17 @@ int cmd_io_line_in(cmd_io_t *cmd_io)
   return 0;
 }
 
-/* char *cmd_io_line_rdline(cmd_io_t *cmd_io, int mode) */
-/* { */
-/*   int ret; */
-/*   while((ret=cmd_rs232_line_in(cmd_io))==0) */
-/*     if(!mode) break; */
-/*   if(ret<=0) return NULL; */
-/*   return cmd_io->priv.ed_line.in->buf; */
-/* } */
+/* The possibly blocking read of one line, should be used only
+   when other options fails */
+char *cmd_io_line_rdline(cmd_io_t *cmd_io, int mode)
+{
+  int ret;
+  while((ret=cmd_io_line_in(cmd_io))==0)
+    if(!mode) break;
+  if(ret<=0) return NULL;
+  return cmd_io->priv.ed_line.in->buf;
+}
 
 /* Local Variables: */
 /* c-basic-offset: 2 */
-/* End */
+/* End: */