Adam Tkac 72edde
? patch
Adam Tkac 72edde
? lib/isc/lex.c.rh490837
Adam Tkac 72edde
Index: lib/isc/lex.c
Adam Tkac 72edde
===================================================================
Adam Tkac 72edde
RCS file: /var/snap/bind9/lib/isc/lex.c,v
Adam Tkac 72edde
retrieving revision 1.86
Adam Tkac 72edde
diff -p -u -r1.86 lex.c
Adam Tkac 72edde
--- lib/isc/lex.c	17 Sep 2007 09:56:29 -0000	1.86
Adam Tkac 72edde
+++ lib/isc/lex.c	6 Apr 2009 13:24:15 -0000
Adam Tkac 72edde
@@ -425,17 +425,14 @@ isc_lex_gettoken(isc_lex_t *lex, unsigne
Adam Tkac 72edde
 			if (source->is_file) {
Adam Tkac 72edde
 				stream = source->input;
Adam Tkac 72edde
 
Adam Tkac 72edde
-#if defined(HAVE_FLOCKFILE) && defined(HAVE_GETCUNLOCKED)
Adam Tkac 72edde
-				c = getc_unlocked(stream);
Adam Tkac 72edde
-#else
Adam Tkac 72edde
-				c = getc(stream);
Adam Tkac 72edde
-#endif
Adam Tkac 72edde
-				if (c == EOF) {
Adam Tkac 72edde
-					if (ferror(stream)) {
Adam Tkac 72edde
-						source->result = ISC_R_IOERROR;
Adam Tkac 72edde
-						result = source->result;
Adam Tkac 72edde
+				result = isc_stdio_fgetc(stream, &c);
Adam Tkac 72edde
+
Adam Tkac 72edde
+				if (result != ISC_R_SUCCESS) {
Adam Tkac 72edde
+					if (result != ISC_R_EOF) {
Adam Tkac 72edde
+						source->result = result;
Adam Tkac 72edde
 						goto done;
Adam Tkac 72edde
 					}
Adam Tkac 72edde
+
Adam Tkac 72edde
 					source->at_eof = ISC_TRUE;
Adam Tkac 72edde
 				}
Adam Tkac 72edde
 			} else {
Adam Tkac 72edde
Index: lib/isc/include/isc/stdio.h
Adam Tkac 72edde
===================================================================
Adam Tkac 72edde
RCS file: /var/snap/bind9/lib/isc/include/isc/stdio.h,v
Adam Tkac 72edde
retrieving revision 1.13
Adam Tkac 72edde
diff -p -u -r1.13 stdio.h
Adam Tkac 72edde
--- lib/isc/include/isc/stdio.h	19 Jun 2007 23:47:18 -0000	1.13
Adam Tkac 72edde
+++ lib/isc/include/isc/stdio.h	6 Apr 2009 13:24:15 -0000
Adam Tkac 72edde
@@ -72,6 +72,9 @@ isc_stdio_sync(FILE *f);
Adam Tkac 72edde
  * direct counterpart in the stdio library.
Adam Tkac 72edde
  */
Adam Tkac 72edde
 
Adam Tkac 72edde
+isc_result_t
Adam Tkac 72edde
+isc_stdio_fgetc(FILE *f, int *ret);
Adam Tkac 72edde
+
Adam Tkac 72edde
 ISC_LANG_ENDDECLS
Adam Tkac 72edde
 
Adam Tkac 72edde
 #endif /* ISC_STDIO_H */
Adam Tkac 72edde
Index: lib/isc/unix/errno2result.c
Adam Tkac 72edde
===================================================================
Adam Tkac 72edde
RCS file: /var/snap/bind9/lib/isc/unix/errno2result.c,v
Adam Tkac 72edde
retrieving revision 1.17
Adam Tkac 72edde
diff -p -u -r1.17 errno2result.c
Adam Tkac 72edde
--- lib/isc/unix/errno2result.c	19 Jun 2007 23:47:18 -0000	1.17
Adam Tkac 72edde
+++ lib/isc/unix/errno2result.c	6 Apr 2009 13:24:15 -0000
Adam Tkac 72edde
@@ -43,6 +43,7 @@ isc__errno2result(int posixerrno) {
Adam Tkac 72edde
 	case EINVAL:		/* XXX sometimes this is not for files */
Adam Tkac 72edde
 	case ENAMETOOLONG:
Adam Tkac 72edde
 	case EBADF:
Adam Tkac 72edde
+	case EISDIR:
Adam Tkac 72edde
 		return (ISC_R_INVALIDFILE);
Adam Tkac 72edde
 	case ENOENT:
Adam Tkac 72edde
 		return (ISC_R_FILENOTFOUND);
Adam Tkac 72edde
Index: lib/isc/unix/stdio.c
Adam Tkac 72edde
===================================================================
Adam Tkac 72edde
RCS file: /var/snap/bind9/lib/isc/unix/stdio.c,v
Adam Tkac 72edde
retrieving revision 1.8
Adam Tkac 72edde
diff -p -u -r1.8 stdio.c
Adam Tkac 72edde
--- lib/isc/unix/stdio.c	19 Jun 2007 23:47:18 -0000	1.8
Adam Tkac 72edde
+++ lib/isc/unix/stdio.c	6 Apr 2009 13:24:15 -0000
Adam Tkac 72edde
@@ -115,3 +115,22 @@ isc_stdio_sync(FILE *f) {
Adam Tkac 72edde
 		return (isc__errno2result(errno));
Adam Tkac 72edde
 }
Adam Tkac 72edde
 
Adam Tkac 72edde
+isc_result_t
Adam Tkac 72edde
+isc_stdio_fgetc(FILE *f, int *ret) {
Adam Tkac 72edde
+	int r;
Adam Tkac 72edde
+	isc_result_t result = ISC_R_SUCCESS;
Adam Tkac 72edde
+
Adam Tkac 72edde
+#if defined(HAVE_FLOCKFILE) && defined(HAVE_GETCUNLOCKED)
Adam Tkac 72edde
+	r = fgetc_unlocked(f);
Adam Tkac 72edde
+#else
Adam Tkac 72edde
+	r = fgets(f);
Adam Tkac 72edde
+#endif
Adam Tkac 72edde
+
Adam Tkac 72edde
+	if (r == EOF)
Adam Tkac 72edde
+		result = ferror(f) ? isc__errno2result(errno) : ISC_R_EOF;
Adam Tkac 72edde
+
Adam Tkac 72edde
+	*ret = r;
Adam Tkac 72edde
+
Adam Tkac 72edde
+	return result;
Adam Tkac 72edde
+}
Adam Tkac 72edde
+