]> granicus.if.org Git - graphviz/commitdiff
sfio: remove macro implementations of character functions
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Thu, 19 Jan 2023 16:17:29 +0000 (08:17 -0800)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 21 Jan 2023 23:25:21 +0000 (15:25 -0800)
These were implemented as an optimization to allow inlining. This is no longer
necessary on contemporary compilers with link-time optimization. Removing them
will unblock fixing some strict aliasing problems with the `Sfio_t` type.

Gitlab: #2338

cmd/gvpr/Makefile.am
lib/expr/Makefile.am
lib/sfio/Sfio_f/_sffileno.c
lib/sfio/Sfio_f/_sfgetc.c
lib/sfio/Sfio_f/_sfputc.c
lib/sfio/Sfio_f/_sfslen.c
lib/sfio/sfio.h

index 7f5055633bf6b8ddf47a6681c12ada7c116578ec..f366edaaa4b9d1b87cc5431169bcc01699bae7bc 100644 (file)
@@ -37,6 +37,7 @@ gvpr_static_LDADD = \
        $(top_builddir)/lib/gvpr/libgvpr_C.la \
        $(top_builddir)/lib/expr/libexpr_C.la \
        $(top_builddir)/lib/sfio/libsfio_C.la \
+       $(top_builddir)/lib/sfio/Sfio_f/libsfiof_C.la \
        $(top_builddir)/lib/vmalloc/libvmalloc_C.la \
        $(top_builddir)/lib/ingraphs/libingraphs_C.la \
        $(top_builddir)/lib/ast/libast_C.la \
index 073d7a9259671e0dc635bb473ea1696cb4406b7e..1eec24f3beea212ded649f9d74b519b698e996ec 100644 (file)
@@ -22,6 +22,7 @@ libexpr_C_la_LIBADD = \
        $(top_builddir)/lib/ast/libast_C.la \
        $(top_builddir)/lib/vmalloc/libvmalloc_C.la \
        $(top_builddir)/lib/sfio/libsfio_C.la \
+       $(top_builddir)/lib/sfio/Sfio_f/libsfiof_C.la \
        $(top_builddir)/lib/cdt/libcdt.la
 
 $(libexpr_C_la_OBJECTS) $(libexpr_la_OBJECTS): \
index 7e9276a6eccba0274122441efbdd27afcd5de0b8..ca0c25281cb5fb09f6ff03ffb728e539dba0cd97 100644 (file)
@@ -10,9 +10,4 @@
 
 #include       <sfio/sfhdr.h>
 
-#undef sffileno
-
-int sffileno(Sfio_t * f)
-{
-    return __sf_fileno(f);
-}
+int sffileno(Sfio_t *f) { return f ? f->file : -1; }
index 5ecb8b563147121a46b93a60c0d9f5edb55a8338..0b158cccb01f4e44c9b22ec1285bc1e7bf4cf1fb 100644 (file)
@@ -10,9 +10,7 @@
 
 #include       <sfio/sfhdr.h>
 
-#undef sfgetc
-
 int sfgetc(Sfio_t * f)
 {
-    return __sf_getc(f);
+  return f->next >= f->endr ? _sffilbuf(f, 0) : (int)(*f->next++);
 }
index 5bf53b749984801090339eba046830febfe0ebb5..c1d9c212cd7e53eb7ed9c5bac04c9650d44d0236 100644 (file)
@@ -10,9 +10,8 @@
 
 #include       <sfio/sfhdr.h>
 
-#undef sfputc
-
 int sfputc(Sfio_t * f, int c)
 {
-    return __sf_putc(f, c);
+  return f->next >= f->endw ? _sfflsbuf(f, (int)((unsigned char)(c)))
+                            : (int)(*f->next++ = (unsigned char)(c));
 }
index 8f93cfa5e57b4e8fcd00a77baee163bef1ea2d31..09a0b5d5bb7c63bde70f9e3d1d8a97f73fc8f9cd 100644 (file)
@@ -10,9 +10,4 @@
 
 #include       <sfio/sfhdr.h>
 
-#undef sfslen
-
-ssize_t sfslen(void)
-{
-    return __sf_slen();
-}
+ssize_t sfslen(void) { return _Sfi; }
index 9e9063665ac66d954c8187ac0f6954008ba0e95d..7a43318425dc774463ffb67e99f98531e45469ca 100644 (file)
@@ -221,23 +221,6 @@ extern "C" {
 
 #undef extern
 
-#if defined(__cplusplus)
-#define _SF_(f)                (f)
-#else
-#define _SF_(f)                ((Sfio_t*)(f))
-#endif
-#define __sf_putc(f,c) (_SF_(f)->next >= _SF_(f)->endw ? \
-                        _sfflsbuf(_SF_(f),(int)((unsigned char)(c))) : \
-                        (int)(*_SF_(f)->next++ = (unsigned char)(c)) )
-#define __sf_getc(f)   (_SF_(f)->next >= _SF_(f)->endr ? _sffilbuf(_SF_(f),0) : \
-                        (int)(*_SF_(f)->next++) )
-#define __sf_fileno(f) ((f) ? _SF_(f)->file : -1)
-#define __sf_slen()    (_Sfi)
-
-#define sfputc(f,c)                            ( __sf_putc((f),(c))            )
-#define sfgetc(f)                              ( __sf_getc(f)                  )
-#define sffileno(f)                            ( __sf_fileno(f)                )
-#define sfslen()                               ( __sf_slen()                   )
 #ifdef __cplusplus
 }
 #endif