gww@beatnix.UUCP (Gary Winiger) (03/13/88)
Subject: lib{F,I,U}77/mkvers hangs if no sccs id is found +Fix Index: lib{F,I,U}77/mkvers.c 4.3BSD +Fix Description: Mkvers will hang in an infinite loop if a file being scanned does not contain an sccs ``what'' string but does contain the character '@'. Repeat-By: Create a file with the character '@' in it, but with no ``what'' string. Run mkvers on that file. Fix: There are really two problems to be fixed. First, if a '@' is found by the index(3) call, but the remainder of a ``what'' string is not found, mkvers will continually loop on that '@' character. Advance the pointer ``s''. Second, the end of file condition on stdin is never cleared when a file is read to EOF. Clear the EOF. The attached code solves this problem at Elxsi. Gary.. {ucbvax!sun,lll-lcc!lll-tis,amdahl!altos86,bridge2}!elxsi!gww --------- cut --------- snip --------- :.,$w diff ------------- *** mkvers.c Tue Oct 20 10:33:25 1987 --- newmkvers.c Tue Oct 20 10:35:44 1987 *************** *** 67,72 **** --- 67,74 ---- while(s = index(s, '@')) if (strncmp(s, SCCS_ID, 4) == 0) break; + else + ++s; if (s) { e = index(s, '"'); *************** *** 77,83 **** --- 79,88 ---- } } if (feof(stdin)) + { fprintf(stderr, "%s: no sccs id string\n", *argv); + clearerr(stdin); + } } fprintf(V, "};\n"); fclose(V);