flex.patch 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. It is not portable to use "std{in,out}" as "lvalues" (for instance,
  2. building under Sun Solaris breaks here). The portable solution is to use
  3. freopen(3). Unfortunately, to achieve the same effect than fdopen(3) on
  4. "std{in,out}", one has to use "/dev/std{in,out}" (which in turn is not
  5. really portable, but at least more portable than using "std{in,out}"
  6. as "lvalues"). The only "we know it better" alternative would be to
  7. just replace the code with a fflush(3) on the streams and know that the
  8. stream has not recognized the changed underlying filedescriptor. But
  9. this again is not really portable, although also working for mostly all
  10. Unix platforms.
  11. --- filter.c.orig 2003-03-25 17:39:08.000000000 +0100
  12. +++ filter.c 2003-07-24 10:05:02.000000000 +0200
  13. @@ -158,10 +158,10 @@
  14. int r;
  15. /* setup streams again */
  16. - if ((stdin = fdopen (0, "r")) == NULL)
  17. - flexfatal (_("fdopen(0) failed"));
  18. - if ((stdout = fdopen (1, "w")) == NULL)
  19. - flexfatal (_("fdopen(1) failed"));
  20. + if ((freopen ("/dev/stdin", "r", stdin)) == NULL)
  21. + flexfatal (_("freopen(stdin) failed"));
  22. + if ((freopen ("/dev/stdout", "w", stdout)) == NULL)
  23. + flexfatal (_("freopen(stdout) failed"));
  24. if ((r = chain->filter_func (chain)) == -1)
  25. flexfatal (_("filter_func failed"));
  26. @@ -181,8 +181,8 @@
  27. if (dup2 (pipes[1], 1) == -1)
  28. flexfatal (_("dup2(pipes[1],1)"));
  29. close (pipes[1]);
  30. - if ((stdout = fdopen (1, "w")) == NULL)
  31. - flexfatal (_("fdopen(1) failed"));
  32. + if ((freopen ("/dev/stdout", "w", stdout)) == NULL)
  33. + flexfatal (_("freopen(stdout) failed"));
  34. return true;
  35. }
  36. Our package does not rely on GCC (and cannot for dependency
  37. reasons), so we have to make sure that no C99 style comments
  38. are used inside the code.
  39. --- main.c.orig Tue Apr 1 03:51:38 2003
  40. +++ main.c Tue Jul 29 22:27:40 2003
  41. @@ -1142,7 +1142,6 @@
  42. break;
  43. case OPT_NO_UNISTD_H:
  44. - //buf_strdefine (&userdef_buf, "YY_NO_UNISTD_H", "1");
  45. buf_m4_define( &m4defs_buf, "M4_YY_NO_UNISTD_H",0);
  46. break;
  47. @@ -1257,7 +1256,6 @@
  48. break;
  49. case OPT_STACK:
  50. - //buf_strdefine (&userdef_buf, "YY_STACK_USED", "1");
  51. buf_m4_define( &m4defs_buf, "M4_YY_STACK_USED",0);
  52. break;
  53. @@ -1314,87 +1312,66 @@
  54. break;
  55. case OPT_NO_YY_PUSH_STATE:
  56. - //buf_strdefine (&userdef_buf, "YY_NO_PUSH_STATE", "1");
  57. buf_m4_define( &m4defs_buf, "M4_YY_NO_PUSH_STATE",0);
  58. break;
  59. case OPT_NO_YY_POP_STATE:
  60. - //buf_strdefine (&userdef_buf, "YY_NO_POP_STATE", "1");
  61. buf_m4_define( &m4defs_buf, "M4_YY_NO_POP_STATE",0);
  62. break;
  63. case OPT_NO_YY_TOP_STATE:
  64. - //buf_strdefine (&userdef_buf, "YY_NO_TOP_STATE", "1");
  65. buf_m4_define( &m4defs_buf, "M4_YY_NO_TOP_STATE",0);
  66. break;
  67. case OPT_NO_UNPUT:
  68. - //buf_strdefine (&userdef_buf, "YY_NO_UNPUT", "1");
  69. buf_m4_define( &m4defs_buf, "M4_YY_NO_UNPUT",0);
  70. break;
  71. case OPT_NO_YY_SCAN_BUFFER:
  72. - //buf_strdefine (&userdef_buf, "YY_NO_SCAN_BUFFER", "1");
  73. buf_m4_define( &m4defs_buf, "M4_YY_NO_SCAN_BUFFER",0);
  74. break;
  75. case OPT_NO_YY_SCAN_BYTES:
  76. - //buf_strdefine (&userdef_buf, "YY_NO_SCAN_BYTES", "1");
  77. buf_m4_define( &m4defs_buf, "M4_YY_NO_SCAN_BYTES",0);
  78. break;
  79. case OPT_NO_YY_SCAN_STRING:
  80. - //buf_strdefine (&userdef_buf, "YY_NO_SCAN_STRING", "1");
  81. buf_m4_define( &m4defs_buf, "M4_YY_NO_SCAN_STRING",0);
  82. break;
  83. case OPT_NO_YYGET_EXTRA:
  84. - //buf_strdefine (&userdef_buf, "YY_NO_GET_EXTRA", "1");
  85. buf_m4_define( &m4defs_buf, "M4_YY_NO_GET_EXTRA",0);
  86. break;
  87. case OPT_NO_YYSET_EXTRA:
  88. - //buf_strdefine (&userdef_buf, "YY_NO_SET_EXTRA", "1");
  89. buf_m4_define( &m4defs_buf, "M4_YY_NO_SET_EXTRA",0);
  90. break;
  91. case OPT_NO_YYGET_LENG:
  92. - //buf_strdefine (&userdef_buf, "YY_NO_GET_LENG", "1");
  93. buf_m4_define( &m4defs_buf, "M4_YY_NO_GET_LENG",0);
  94. break;
  95. case OPT_NO_YYGET_TEXT:
  96. - //buf_strdefine (&userdef_buf, "YY_NO_GET_TEXT", "1");
  97. buf_m4_define( &m4defs_buf, "M4_YY_NO_GET_TEXT",0);
  98. break;
  99. case OPT_NO_YYGET_LINENO:
  100. - //buf_strdefine (&userdef_buf, "YY_NO_GET_LINENO", "1");
  101. buf_m4_define( &m4defs_buf, "M4_YY_NO_GET_LINENO",0);
  102. break;
  103. case OPT_NO_YYSET_LINENO:
  104. - //buf_strdefine (&userdef_buf, "YY_NO_SET_LINENO", "1");
  105. buf_m4_define( &m4defs_buf, "M4_YY_NO_SET_LINENO",0);
  106. break;
  107. case OPT_NO_YYGET_IN:
  108. - //buf_strdefine (&userdef_buf, "YY_NO_GET_IN", "1");
  109. buf_m4_define( &m4defs_buf, "M4_YY_NO_GET_IN",0);
  110. break;
  111. case OPT_NO_YYSET_IN:
  112. - //buf_strdefine (&userdef_buf, "YY_NO_SET_IN", "1");
  113. buf_m4_define( &m4defs_buf, "M4_YY_NO_SET_IN",0);
  114. break;
  115. case OPT_NO_YYGET_OUT:
  116. - //buf_strdefine (&userdef_buf, "YY_NO_GET_OUT", "1");
  117. buf_m4_define( &m4defs_buf, "M4_YY_NO_GET_OUT",0);
  118. break;
  119. case OPT_NO_YYSET_OUT:
  120. - //buf_strdefine (&userdef_buf, "YY_NO_SET_OUT", "1");
  121. buf_m4_define( &m4defs_buf, "M4_YY_NO_SET_OUT",0);
  122. break;
  123. case OPT_NO_YYGET_LVAL:
  124. - //buf_strdefine (&userdef_buf, "YY_NO_GET_LVAL", "1");
  125. buf_m4_define( &m4defs_buf, "M4_YY_NO_GET_LVAL",0);
  126. break;
  127. case OPT_NO_YYSET_LVAL:
  128. - //buf_strdefine (&userdef_buf, "YY_NO_SET_LVAL", "1");
  129. buf_m4_define( &m4defs_buf, "M4_YY_NO_SET_LVAL",0);
  130. break;
  131. case OPT_NO_YYGET_LLOC:
  132. - //buf_strdefine (&userdef_buf, "YY_NO_GET_LLOC", "1");
  133. buf_m4_define( &m4defs_buf, "M4_YY_NO_GET_LLOC",0);
  134. break;
  135. case OPT_NO_YYSET_LLOC:
  136. - //buf_strdefine (&userdef_buf, "YY_NO_SET_LLOC", "1");
  137. buf_m4_define( &m4defs_buf, "M4_YY_NO_SET_LLOC",0);
  138. break;
  139. @@ -1547,7 +1524,6 @@
  140. if (reject){
  141. out_m4_define( "M4_YY_USES_REJECT", NULL);
  142. - //outn ("\n#define YY_USES_REJECT");
  143. }
  144. if (!do_yywrap) {
  145. --- tables.c.orig Wed Nov 27 15:43:24 2002
  146. +++ tables.c Tue Jul 29 22:28:18 2003
  147. @@ -86,7 +86,7 @@
  148. th->th_magic = YYTBL_MAGIC;
  149. th->th_hsize = 14 + strlen (version_str) + 1 + strlen (name) + 1;
  150. th->th_hsize += yypad64 (th->th_hsize);
  151. - th->th_ssize = 0; // Not known at this point.
  152. + th->th_ssize = 0;
  153. th->th_flags = 0;
  154. th->th_version = copy_string (version_str);
  155. th->th_name = copy_string (name);