robin@itcatl.UUCP (Robin Cutshaw) (10/22/86)
Problem 1: char buf[BUFSIZ]; int fdi, fdo, count; nice(-40); /* -20 is max but... */ if ((fdi = open(COMDEV, O_RDWR)) >= 0) { /* set baud to 9600, flags to ANYP | CBREAK, maybe TANDEM */ if ((fdo = open(OUTFILE, O_RDWR)) >= 0) while ((count = read(fdi, buf, BUFSIZ)) > 0) if (write(fdo, buf, count) != count) process_write_error(); } At 9600 baud on the COMDEV this process looses characters periodically. If however, I use tip to connect to the COMDEV all characters will be transmitted correctly. Why am I losing characters and tip isn't? When I lose characters, it is typically 256 at a time. Problem 2: open input and output regular files while (1) { if ((curpos = lseek(fdi, 0, L_INCR)) < 0) /* where are we */ process_lseek_error(); if ((eofpos = lseek(fdi, 0, L_XTND)) < 0) /* where's the end */ process_lseek_error(); if ((charstoread = (eofpos - curpos)) > 0) { if ((lseek(fdi, curpos, L_SET)) < 0) /* set back */ process_lseek_error(); if ((count = read(fdi, buf, charstoread)) <= 0) process_read_error(count); process_chars(buf,count); } } The input file is constantly growing. It always happens that somewhere between 1 and 2 K into the file the variable charstoread is between 20 and 50 and when the read occurs it returns 0. When can their be characters between your current position and the end of file, and read return end of file? robin cutshaw {akgua,gatech}!itcatl!robin