Menu

#193 fig2dev: incompatible with GCC 15 C23 standard

xfig
pending
nobody
None
2025-03-01
2025-02-21
No

Debian bug report #1096628 reports that current fig2dev does not compile with GCC 15, which uses to C23 standard.
According to the bug report http://gcc.gnu.org/gcc-15/porting_to.html should give some hints for porting to GCC 15 / C23.
The build log at http://qa-logs.debian.net/2025/02/16/amd64exp/fig2dev_3.2.9a-2_unstable_gccexp.log.gz shows the following errors:

mkfile.c:55:17: error: too many arguments to function putfig; expected 0, have 9
   55 |                 putfig(mk, box, altfonts, NULL, NULL, a->m, NULL, i, "tex");
      |                 ^~~~~~ ~~
mkfile.c:21:6: note: declared here
   21 | void putfig();
      |      ^~~~~~
mkfile.c:84:17: error: too many arguments to function putfig; expected 0, have 9
   84 |                 putfig(mk, to, altfonts, a->f, a->s, a->m, a->o, i, lname[(int)to]);
      |                 ^~~~~~ ~~
mkfile.c:21:6: note: declared here
   21 | void putfig();
      |      ^~~~~~
mkfile.c:93:17: error: too many arguments to function putfig; expected 0, have 9
   93 |                 putfig(mk, to, altfonts, a->f, a->s, a->m, a->o, i, "tex");
      |                 ^~~~~~ ~~
mkfile.c:21:6: note: declared here
   21 | void putfig();
      |      ^~~~~~
mkfile.c:98:17: error: too many arguments to function putfig; expected 0, have 9
   98 |                 putfig(mk, latex, altfonts, a->f, a->s, a->m, a->o, i, "tex");
      |                 ^~~~~~ ~~
mkfile.c:21:6: note: declared here
   21 | void putfig();
      |      ^~~~~~
mkfile.c:111:17: error: too many arguments to function puttarget; expected 0, have 4
  111 |                 puttarget(mk, i, "tex", "pdf");
      |                 ^~~~~~~~~ ~~
mkfile.c:20:6: note: declared here
   20 | void puttarget();
      |      ^~~~~~~~~
mkfile.c:113:17: error: too many arguments to function putoptions; expected 0, have 8
  113 |                 putoptions(mk, altfonts, a->f, a->s, a->m, a->o, i, "tex");
      |                 ^~~~~~~~~~ ~~
mkfile.c:22:6: note: declared here
   22 | void putoptions();
      |      ^~~~~~~~~~
mkfile.c:118:17: error: too many arguments to function putfig; expected 0, have 9
  118 |                 putfig(mk, pictex, altfonts, a->f, a->s, a->m, a->o, i, "tex");
      |                 ^~~~~~ ~~
mkfile.c:21:6: note: declared here
   21 | void putfig();
      |      ^~~~~~
mkfile.c:123:17: error: too many arguments to function puttarget; expected 0, have 4
  123 |                 puttarget(mk, i, "tex", "ps");
      |                 ^~~~~~~~~ ~~
mkfile.c:20:6: note: declared here
   20 | void puttarget();
      |      ^~~~~~~~~
mkfile.c:129:17: error: too many arguments to function puttarget; expected 0, have 4
  129 |                 puttarget(mk, i, "tex", "eps");
      |                 ^~~~~~~~~ ~~
mkfile.c:20:6: note: declared here
   20 | void puttarget();
      |      ^~~~~~~~~
mkfile.c:135:17: error: too many arguments to function puttarget; expected 0, have 4
  135 |                 puttarget(mk, i, "tex", "ps");
      |                 ^~~~~~~~~ ~~
mkfile.c:20:6: note: declared here
   20 | void puttarget();
      |      ^~~~~~~~~
mkfile.c:150:17: error: too many arguments to function puttarget; expected 0, have 4
  150 |                 puttarget(mk, i, "tex", "eps");
      |                 ^~~~~~~~~ ~~
mkfile.c:20:6: note: declared here
   20 | void puttarget();
      |      ^~~~~~~~~
mkfile.c:152:17: error: too many arguments to function putoptions; expected 0, have 8
  152 |                 putoptions(mk, altfonts, a->f, a->s, a->m, a->o, i, "tex");
      |                 ^~~~~~~~~~ ~~
mkfile.c:22:6: note: declared here
   22 | void putoptions();
      |      ^~~~~~~~~~
mkfile.c:158:17: error: too many arguments to function puttarget; expected 0, have 4
  158 |                 puttarget(mk, i, "tex", "pic");
      |                 ^~~~~~~~~ ~~
mkfile.c:20:6: note: declared here
   20 | void puttarget();
      |      ^~~~~~~~~
mkfile.c:167:9: error: too many arguments to function putclean; expected 0, have 3
  167 |         putclean(mk, i, lname[a->tolang] );
      |         ^~~~~~~~ ~~
mkfile.c:23:6: note: declared here
   23 | void putclean();
      |      ^~~~~~~~
mkfile.c:172:21: error: too many arguments to function puttarget; expected 0, have 4
  172 |                     puttarget(mk, i, "ps", iname[(int)a->type]);
      |                     ^~~~~~~~~ ~~
mkfile.c:20:6: note: declared here
   20 | void puttarget();
      |      ^~~~~~~~~
mkfile.c:176:21: error: too many arguments to function putfig; expected 0, have 9
  176 |                     putfig(mk, (to == pstex ? pstex : ps),
      |                     ^~~~~~ ~~
mkfile.c:21:6: note: declared here
   21 | void putfig();
      |      ^~~~~~
mkfile.c:178:33: error: too many arguments to function mksuff; expected 0, have 2
  178 |                     a->interm = mksuff(i, ".ps");
      |                                 ^~~~~~ ~
In file included from mkfile.c:18:
transfig.h:67:24: note: declared here
   67 | extern char *sysls(), *mksuff();
      |                        ^~~~~~
mkfile.c:181:17: error: too many arguments to function putclean; expected 0, have 3
  181 |                 putclean(mk, i, "ps" );
      |                 ^~~~~~~~ ~~
mkfile.c:23:6: note: declared here
   23 | void putclean();
      |      ^~~~~~~~
mkfile.c:187:21: error: too many arguments to function puttarget; expected 0, have 4
  187 |                     puttarget(mk, i, "pdf", iname[(int)a->type]);
      |                     ^~~~~~~~~ ~~
mkfile.c:20:6: note: declared here
   20 | void puttarget();
      |      ^~~~~~~~~
mkfile.c:191:21: error: too many arguments to function putfig; expected 0, have 9
  191 |                     putfig(mk, (to == pdftex ? pdftex : pdf),
      |                     ^~~~~~ ~~
mkfile.c:21:6: note: declared here
   21 | void putfig();
      |      ^~~~~~
mkfile.c:193:33: error: too many arguments to function mksuff; expected 0, have 2
  193 |                     a->interm = mksuff(i, ".pdf");
      |                                 ^~~~~~ ~
transfig.h:67:24: note: declared here
   67 | extern char *sysls(), *mksuff();
      |                        ^~~~~~
mkfile.c:196:17: error: too many arguments to function putclean; expected 0, have 3
  196 |                 putclean(mk, i, "pdf" );
      |                 ^~~~~~~~ ~~
mkfile.c:23:6: note: declared here
   23 | void putclean();
      |      ^~~~~~~~
mkfile.c:202:21: error: too many arguments to function puttarget; expected 0, have 4
  202 |                     puttarget(mk, i, "eps", iname[(int)a->type]);
      |                     ^~~~~~~~~ ~~
mkfile.c:20:6: note: declared here
   20 | void puttarget();
      |      ^~~~~~~~~
mkfile.c:206:21: error: too many arguments to function putfig; expected 0, have 9
  206 |                     putfig(mk, (to == pstex ? pstex : eps),
      |                     ^~~~~~ ~~
mkfile.c:21:6: note: declared here
   21 | void putfig();
      |      ^~~~~~
mkfile.c:208:33: error: too many arguments to function mksuff; expected 0, have 2
  208 |                     a->interm = mksuff(i, ".eps");
      |                                 ^~~~~~ ~
transfig.h:67:24: note: declared here
   67 | extern char *sysls(), *mksuff();
      |                        ^~~~~~
mkfile.c:211:17: error: too many arguments to function putclean; expected 0, have 3
  211 |                 putclean(mk, i, "eps" );
      |                 ^~~~~~~~ ~~
mkfile.c:23:6: note: declared here
   23 | void putclean();
      |      ^~~~~~~~
mkfile.c:217:21: error: too many arguments to function puttarget; expected 0, have 4
  217 |                     puttarget(mk, i, "pic", iname[(int)a->type]);
      |                     ^~~~~~~~~ ~~
mkfile.c:20:6: note: declared here
   20 | void puttarget();
      |      ^~~~~~~~~
mkfile.c:221:21: error: too many arguments to function putfig; expected 0, have 9
  221 |                     putfig(mk, tpic, altfonts, a->f, a->s, a->m, a->o, i, "pic");
      |                     ^~~~~~ ~~
mkfile.c:21:6: note: declared here
   21 | void putfig();
      |      ^~~~~~
mkfile.c:225:17: error: too many arguments to function putclean; expected 0, have 3
  225 |                 putclean(mk, i, "pic" );
      |                 ^~~~~~~~ ~~
mkfile.c:23:6: note: declared here
   23 | void putclean();
      |      ^~~~~~~~
mkfile.c:231:21: error: too many arguments to function puttarget; expected 0, have 4
  231 |                     puttarget(mk, i, "fig", iname[(int)a->type]);
      |                     ^~~~~~~~~ ~~
mkfile.c:20:6: note: declared here
   20 | void puttarget();
      |      ^~~~~~~~~
mkfile.c:233:33: error: too many arguments to function mksuff; expected 0, have 2
  233 |                     a->interm = mksuff(i, ".fig");
      |                                 ^~~~~~ ~
transfig.h:67:24: note: declared here
   67 | extern char *sysls(), *mksuff();
      |                        ^~~~~~
mkfile.c:236:86: error: too many arguments to function mksuff; expected 0, have 2
  236 |                     fprintf(stderr, "transfig: warning: don't now how to make %s\n", mksuff(i, ".fig") );
      |                                                                                      ^~~~~~ ~
transfig.h:67:24: note: declared here
   67 | extern char *sysls(), *mksuff();
      |                        ^~~~~~
mkfile.c:238:17: error: too many arguments to function putclean; expected 0, have 3
  238 |                 putclean(mk, i, "fig" );
      |                 ^~~~~~~~ ~~
mkfile.c:23:6: note: declared here
   23 | void putclean();
      |      ^~~~~~~~
mkfile.c: At top level:
mkfile.c:244:1: error: conflicting types for puttarget; have void(FILE *, char *, char *, char *)
  244 | puttarget(FILE *mk, char *i, char *suf1, char *suf2)
      | ^~~~~~~~~
mkfile.c:20:6: note: previous declaration of puttarget with type void(void)
   20 | void puttarget();
      |      ^~~~~~~~~
mkfile.c:250:1: error: conflicting types for putfig; have void(FILE *, enum language,  int,  char *, char *, char *, char *, char *, char *)
  250 | putfig(FILE *mk, enum language to, int altfonts,
      | ^~~~~~
mkfile.c:21:6: note: previous declaration of putfig with type void(void)
   21 | void putfig();
      |      ^~~~~~
mkfile.c: In function putfig’:
mkfile.c:261:3: error: too many arguments to function putoptions; expected 0, have 8
  261 |   putoptions(mk, altfonts, f, s, m, o, i, suf);
      |   ^~~~~~~~~~ ~~
mkfile.c:22:6: note: declared here
   22 | void putoptions();
      |      ^~~~~~~~~~
mkfile.c: At top level:
mkfile.c:265:1: error: conflicting types for putoptions; have void(FILE *, int,  char *, char *, char *, char *, char *, char *)
  265 | putoptions(FILE *mk, int altfonts, char *f, char *s, char *m, char *o,
      | ^~~~~~~~~~
mkfile.c:22:6: note: previous declaration of putoptions with type void(void)
   22 | void putoptions();
      |      ^~~~~~~~~~
mkfile.c:278:1: error: conflicting types for putclean; have void(FILE *, char *, char *)
  278 | putclean(FILE *mk, char *i, char *suf)
      | ^~~~~~~~
mkfile.c:23:6: note: previous declaration of putclean with type void(void)
   23 | void putclean();
      |      ^~~~~~~~
make[4]: *** [Makefile:399: mkfile.o] Error 1
make[4]: *** Waiting for unfinished jobs....
sys.c:85:1: error: conflicting types for mksuff; have char *(char *, char *)
   85 | mksuff(char *name, char *suff)
      | ^~~~~~
In file included from sys.c:29:
transfig.h:67:24: note: previous declaration of mksuff with type char *(void)
   67 | extern char *sysls(), *mksuff();
      |                        ^~~~~~
make[4]: *** [Makefile:399: sys.o] Error 1
transfig.c: In function main’:
transfig.c:140:26: error: too many arguments to function str2lang; expected 0, have 1
  140 |                 tolang = str2lang(optarg);
      |                          ^~~~~~~~ ~~~~~~
In file included from transfig.c:29:
transfig.h:63:22: note: declared here
   63 | extern enum language str2lang();
      |                      ^~~~~~~~
transfig.c:171:13: error: too many arguments to function parse_arg; expected 0, have 6
  171 |         a = parse_arg(tolang, arg_f, arg_s, arg_m, arg_o, argv[optind]);
      |             ^~~~~~~~~ ~~~~~~
transfig.c:36:11: note: declared here
   36 | argument *parse_arg(), *arglist = NULL, *lastarg = NULL;
      |           ^~~~~~~~~
transfig.c:188:21: error: too many arguments to function parse_arg; expected 0, have 6
  188 |                 a = parse_arg(tolang, arg_f, arg_s, arg_m, arg_o, argbuf);
      |                     ^~~~~~~~~ ~~~~~~
transfig.c:36:11: note: declared here
   36 | argument *parse_arg(), *arglist = NULL, *lastarg = NULL;
      |           ^~~~~~~~~
transfig.c: At top level:
transfig.c:221:15: error: conflicting types for str2lang; have enum language(char *)
  221 | enum language str2lang(char *s)
      |               ^~~~~~~~
transfig.h:63:22: note: previous declaration of str2lang with type enum language(void)
   63 | extern enum language str2lang();
      |                      ^~~~~~~~
transfig.c:241:1: error: conflicting types for parse_arg; have argument *(enum language,  char *, char *, char *, char *, char *)
  241 | parse_arg(enum language tolang, char *arg_f, char *arg_s,
      | ^~~~~~~~~
transfig.c:36:11: note: previous declaration of parse_arg with type argument *(void)
   36 | argument *parse_arg(), *arglist = NULL, *lastarg = NULL;
      |           ^~~~~~~~~
transfig.c: In function parse_arg’:
transfig.c:259:7: error: too many arguments to function strip; expected 0, have 2
  259 |   if (strip(arg, ".pic"))
      |       ^~~~~ ~~~
transfig.c:37:7: note: declared here
   37 | char *strip();
      |       ^~~~~
transfig.c:261:19: error: too many arguments to function mksuff; expected 0, have 2
  261 |         a->name = mksuff(arg, "");
      |                   ^~~~~~ ~~~
transfig.h:67:24: note: declared here
   67 | extern char *sysls(), *mksuff();
      |                        ^~~~~~
transfig.c:268:7: error: too many arguments to function strip; expected 0, have 2
  268 |   if (strip(arg, ".ps"))
      |       ^~~~~ ~~~
transfig.c:37:7: note: declared here
   37 | char *strip();
      |       ^~~~~
transfig.c:270:19: error: too many arguments to function mksuff; expected 0, have 2
  270 |         a->name = mksuff(arg, "");
      |                   ^~~~~~ ~~~
transfig.h:67:24: note: declared here
   67 | extern char *sysls(), *mksuff();
      |                        ^~~~~~
transfig.c:276:7: error: too many arguments to function strip; expected 0, have 2
  276 |   if (strip(arg, ".pdf"))
      |       ^~~~~ ~~~
transfig.c:37:7: note: declared here
   37 | char *strip();
      |       ^~~~~
transfig.c:278:19: error: too many arguments to function mksuff; expected 0, have 2
  278 |         a->name = mksuff(arg, "");
      |                   ^~~~~~ ~~~
transfig.h:67:24: note: declared here
   67 | extern char *sysls(), *mksuff();
      |                        ^~~~~~
transfig.c:284:7: error: too many arguments to function strip; expected 0, have 2
  284 |   if (strip(arg, ".eps"))
      |       ^~~~~ ~~~
transfig.c:37:7: note: declared here
   37 | char *strip();
      |       ^~~~~
transfig.c:286:19: error: too many arguments to function mksuff; expected 0, have 2
  286 |         a->name = mksuff(arg, "");
      |                   ^~~~~~ ~~~
transfig.h:67:24: note: declared here
   67 | extern char *sysls(), *mksuff();
      |                        ^~~~~~
transfig.c:292:7: error: too many arguments to function strip; expected 0, have 2
  292 |   if (strip(arg, ".apg"))
      |       ^~~~~ ~~~
transfig.c:37:7: note: declared here
   37 | char *strip();
      |       ^~~~~
transfig.c:294:19: error: too many arguments to function mksuff; expected 0, have 2
  294 |         a->name = mksuff(arg, "");
      |                   ^~~~~~ ~~~
transfig.h:67:24: note: declared here
   67 | extern char *sysls(), *mksuff();
      |                        ^~~~~~
transfig.c:301:3: error: too many arguments to function strip; expected 0, have 2
  301 |   strip(arg, ".fig");
      |   ^~~~~ ~~~
transfig.c:37:7: note: declared here
   37 | char *strip();
      |       ^~~~~
transfig.c:302:13: error: too many arguments to function mksuff; expected 0, have 2
  302 |   a->name = mksuff(arg, "");
      |             ^~~~~~ ~~~
transfig.h:67:24: note: declared here
   67 | extern char *sysls(), *mksuff();
      |                        ^~~~~~

Fixing this isn't time critical for Debian, since the upcoming Debian 13 (trixi) will use GCC 14. But fixing these issues should be on the roadmap, that's why I report it here.

Discussion

  • Roland Rosenfeld

    • status: open --> pending
    • xfig / fig2dev: fig2dev --> xfig
     

Log in to post a comment.

MongoDB Logo MongoDB