X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/f518dbaf46eb28bd39695474de6118683d905e5f..ea9a35c605c075c79da41bfeaaaa07b076bafc01:/src/files.c diff --git a/src/files.c b/src/files.c index ceb0489a..88234bfc 100644 --- a/src/files.c +++ b/src/files.c @@ -134,6 +134,18 @@ xfclose (FILE *ptr) } +FILE * +xfdopen (int fd, char const *mode) +{ + FILE *res = fdopen (fd, mode); + if (! res) + error (EXIT_FAILURE, get_errno (), + // On a separate line to please the "unmarked_diagnostics" + // syntax-check. + "fdopen"); + return res; +} + /*------------------------------------------------------------------. | Compute ALL_BUT_EXT, ALL_BUT_TAB_EXT and output files extensions. | `------------------------------------------------------------------*/ @@ -207,7 +219,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 +227,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; } }