All pastes #919452 Raw Edit

Unnamed

public text v1 · immutable
#919452 ·published 2008-02-26 20:38 UTC
rendered paste body
Index: n_tihtc.c
===================================================================
RCS file: /cvs/linux/kernel26/drivers/char/n_tihtc.c,v
retrieving revision 1.1
diff -u -r1.1 n_tihtc.c
--- n_tihtc.c	29 Mar 2007 14:13:37 -0000	1.1
+++ n_tihtc.c	26 Feb 2008 20:37:28 -0000
@@ -204,6 +204,7 @@
 	struct tihtc_buf *rx_out = NULL;
 	char *dst;
 	int i, j = 0;
+	static bool bEOF;
 
 	DBG("tihtc_filter called\n");
 
@@ -218,6 +219,7 @@
 			}
 			n_tihtc->open_frame = *src++;
 			DBG("starting frame (channel 0x%x) at %d\n", n_tihtc->open_frame, j++);
+			bEOF = false;
 			if (src >= end)
 				goto src_end;
 		} else
@@ -254,9 +256,28 @@
 					rx_out->count = 0; i = 0;
 					dst = rx_out->buf;
 				}
-				*dst = *src;
-				dst++; i++;
-				src++;
+                		// End Of Line detected ?
+				printk(KERN_DEBUG "Incomming (0x%x)\n",*src);
+                		if ((*src==0xd) && (!bEOF)){
+                        		bEOF=true;
+					printk(KERN_DEBUG "EOF with 0xd detected\n");
+				}
+                		if (bEOF){
+					if (*src==0xd) {
+						printk(KERN_DEBUG "Skip incoming characters\n");
+                        			src++;
+					} else {
+						printk(KERN_DEBUG "end of skip characters\n");
+                        			bEOF=false;
+					}
+                		}
+				if (!bEOF) {
+					//if (*src==0xa)
+					//	*src=0xd;
+					*dst = *src;
+					dst++; i++;
+					src++;
+				}
 			}
 			rx_out->count = i;
 			n_tihtc->open_frame = 0;
@@ -400,6 +421,8 @@
 	}
 
 	count = min(rx->count, (int)nr);
+	
+	
 	/* Copy the data to the caller's buffer */
 	if (copy_to_user(buf, rx->buf, rx->count))
 		ret = -EFAULT;