]> git.saurik.com Git - bison.git/blobdiff - src/files.c
news: fixes.
[bison.git] / src / files.c
index ceb0489a61e41cd4c5341c2243e6b98aa52530cc..91c0c10ed29887a3e3d2ae31d6e5e225eaa5fdb4 100644 (file)
@@ -134,6 +134,15 @@ xfclose (FILE *ptr)
 }
 \f
 
+FILE *
+xfdopen (int fd, char const *mode)
+{
+  FILE *res = fdopen (fd, mode);
+  if (! res)
+    error (EXIT_FAILURE, get_errno (), "fdopen");
+  return res;
+}
+
 /*------------------------------------------------------------------.
 | Compute ALL_BUT_EXT, ALL_BUT_TAB_EXT and output files extensions. |
 `------------------------------------------------------------------*/
@@ -207,7 +216,7 @@ file_name_split (const char *file_name,
   *base = last_component (file_name);
 
   /* Look for the extension, i.e., look for the last dot. */
-  *ext = mbsrchr (*base, '.');
+  *ext = strrchr (*base, '.');
   *tab = NULL;
 
   /* If there is an extension, check if there is a `.tab' part right
@@ -215,10 +224,9 @@ file_name_split (const char *file_name,
   if (*ext)
     {
       size_t baselen = *ext - *base;
-      size_t dottablen = 4;
+      size_t dottablen = sizeof (TAB_EXT) - 1;
       if (dottablen < baselen
-          && (strncmp (*ext - dottablen, ".tab", dottablen) == 0
-              || strncmp (*ext - dottablen, "_tab", dottablen) == 0))
+          && STRPREFIX_LIT (TAB_EXT, *ext - dottablen))
         *tab = *ext - dottablen;
     }
 }