bind93-rh490837.patch 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. ? patch
  2. ? lib/isc/lex.c.rh490837
  3. Index: lib/isc/lex.c
  4. ===================================================================
  5. RCS file: /var/snap/bind9/lib/isc/lex.c,v
  6. retrieving revision 1.86
  7. diff -p -u -r1.86 lex.c
  8. --- lib/isc/lex.c 17 Sep 2007 09:56:29 -0000 1.86
  9. +++ lib/isc/lex.c 6 Apr 2009 13:24:15 -0000
  10. @@ -425,17 +425,14 @@ isc_lex_gettoken(isc_lex_t *lex, unsigne
  11. if (source->is_file) {
  12. stream = source->input;
  13. -#if defined(HAVE_FLOCKFILE) && defined(HAVE_GETCUNLOCKED)
  14. - c = getc_unlocked(stream);
  15. -#else
  16. - c = getc(stream);
  17. -#endif
  18. - if (c == EOF) {
  19. - if (ferror(stream)) {
  20. - source->result = ISC_R_IOERROR;
  21. - result = source->result;
  22. + result = isc_stdio_fgetc(stream, &c);
  23. +
  24. + if (result != ISC_R_SUCCESS) {
  25. + if (result != ISC_R_EOF) {
  26. + source->result = result;
  27. goto done;
  28. }
  29. +
  30. source->at_eof = ISC_TRUE;
  31. }
  32. } else {
  33. Index: lib/isc/include/isc/stdio.h
  34. ===================================================================
  35. RCS file: /var/snap/bind9/lib/isc/include/isc/stdio.h,v
  36. retrieving revision 1.13
  37. diff -p -u -r1.13 stdio.h
  38. --- lib/isc/include/isc/stdio.h 19 Jun 2007 23:47:18 -0000 1.13
  39. +++ lib/isc/include/isc/stdio.h 6 Apr 2009 13:24:15 -0000
  40. @@ -72,6 +72,9 @@ isc_stdio_sync(FILE *f);
  41. * direct counterpart in the stdio library.
  42. */
  43. +isc_result_t
  44. +isc_stdio_fgetc(FILE *f, int *ret);
  45. +
  46. ISC_LANG_ENDDECLS
  47. #endif /* ISC_STDIO_H */
  48. Index: lib/isc/unix/errno2result.c
  49. ===================================================================
  50. RCS file: /var/snap/bind9/lib/isc/unix/errno2result.c,v
  51. retrieving revision 1.17
  52. diff -p -u -r1.17 errno2result.c
  53. --- lib/isc/unix/errno2result.c 19 Jun 2007 23:47:18 -0000 1.17
  54. +++ lib/isc/unix/errno2result.c 6 Apr 2009 13:24:15 -0000
  55. @@ -43,6 +43,7 @@ isc__errno2result(int posixerrno) {
  56. case EINVAL: /* XXX sometimes this is not for files */
  57. case ENAMETOOLONG:
  58. case EBADF:
  59. + case EISDIR:
  60. return (ISC_R_INVALIDFILE);
  61. case ENOENT:
  62. return (ISC_R_FILENOTFOUND);
  63. Index: lib/isc/unix/stdio.c
  64. ===================================================================
  65. RCS file: /var/snap/bind9/lib/isc/unix/stdio.c,v
  66. retrieving revision 1.8
  67. diff -p -u -r1.8 stdio.c
  68. --- lib/isc/unix/stdio.c 19 Jun 2007 23:47:18 -0000 1.8
  69. +++ lib/isc/unix/stdio.c 6 Apr 2009 13:24:15 -0000
  70. @@ -115,3 +115,22 @@ isc_stdio_sync(FILE *f) {
  71. return (isc__errno2result(errno));
  72. }
  73. +isc_result_t
  74. +isc_stdio_fgetc(FILE *f, int *ret) {
  75. + int r;
  76. + isc_result_t result = ISC_R_SUCCESS;
  77. +
  78. +#if defined(HAVE_FLOCKFILE) && defined(HAVE_GETCUNLOCKED)
  79. + r = fgetc_unlocked(f);
  80. +#else
  81. + r = fgets(f);
  82. +#endif
  83. +
  84. + if (r == EOF)
  85. + result = ferror(f) ? isc__errno2result(errno) : ISC_R_EOF;
  86. +
  87. + *ret = r;
  88. +
  89. + return result;
  90. +}
  91. +