Package: linuxdoc-tools
Version:  0.9.82-1
Tags: upstream patch

These C features are no longer part of C99, and future compilers
will no longer support them by default, causing the build to fail.

The changes assume that the usual system headers (<stdlib.h>,
<unistd.h>) are present, but that should not be a problem on current
systems.

Related to:

  <https://fedoraproject.org/wiki/Changes/PortingToModernC>
  <https://fedoraproject.org/wiki/Toolchain/PortingToModernC>

diff --git a/sgmls-1.1/configure b/sgmls-1.1/configure
index 5d3e197..e674d24 100755
--- a/sgmls-1.1/configure
+++ b/sgmls-1.1/configure
@@ -110,13 +110,15 @@ cat >doit.c <<\EOF
 
 #include <ctype.h>
 #include <signal.h>
+#include <stdlib.h>
+#include <unistd.h>
 
 static int whoops()
 {
   _exit(1);
 }
 
-main()
+int main(void)
 {
   int c;
 #ifdef isascii
@@ -213,13 +215,15 @@ else
 fi
 
 cat >doit.c <<\EOF
+#include <stdio.h>
+int
 main(argc, argv)
 int argc;
 char **argv;
 {
   if (argc == 0)
     remove("foo");
-  exit(0);
+  return 0;
 }
 EOF
 
@@ -231,13 +235,15 @@ else
 fi
 
 cat >doit.c <<\EOF
+#include <unistd.h>
+int
 main(argc, argv)
 int argc;
 char **argv;
 {
   if (argc == 0)
     getopt(argc, argv, "v");
-  exit(0);
+  return 0;
 }
 EOF
 
@@ -248,14 +254,16 @@ else
        off="$off HAVE_GETOPT"
 fi
 
-cat >doit.c <<\EOF
+cat>doit.c <<\EOF
+#include <unistd.h>
+int
 main(argc, argv)
 int argc;
 char **argv;
 {
   if (argc == 0)
     access("foo", 4);
-  exit(0);
+  return 0;
 }
 EOF
 
@@ -267,13 +275,15 @@ else
 fi
 
 cat >doit.c <<\EOF
+#include <unistd.h>
+int
 main(argc, argv)
 int argc;
 char **argv;
 {
   if (argc == 0)
     vfork();
-  exit(0);
+  return 0;
 }
 EOF
 
@@ -285,6 +295,8 @@ else
 fi
 
 cat >doit.c <<\EOF
+#include <sys/wait.h>
+int
 main(argc, argv)
 int argc;
 char **argv;
@@ -294,7 +306,7 @@ char **argv;
     int status;
     waitpid(-1, &status, 0);
   }
-  exit(0);
+  return 0;
 }
 EOF
 
@@ -307,13 +319,14 @@ fi
 
 cat >doit.c <<\EOF
 #include <string.h>
+int
 main(argc, argv)
 int argc;
 char **argv;
 {
   if (argc == 0)
     strerror(0);
-  exit(0);
+  return 0;
 }
 EOF
 
@@ -326,13 +339,14 @@ fi
 
 cat >doit.c <<\EOF
 #include <strings.h>
+int
 main(argc, argv)
 int argc;
 char **argv;
 {
   if (argc == 0)
        bcopy((char *)0, (char *)0, 0);
-  exit(0);
+  return 0;
 }
 EOF
 
@@ -341,13 +355,14 @@ then
        # Only use BSD_STRINGS if ANSI string functions don't work.
        cat >doit.c <<\EOF
 #include <string.h>
+int
 main(argc, argv)
 int argc;
 char **argv;
 {
   if (argc == 0)
        memcpy((char *)0, (char *)0, 0);
-  exit(0);
+  return 0;
 }
 EOF
 
@@ -363,13 +378,14 @@ fi
 
 cat >doit.c <<\EOF
 #include <signal.h>
+int
 main(argc, argv)
 int argc;
 char **argv;
 {
   if (argc == 0)
     raise(SIGINT);
-  exit(0);
+  return 0;
 }
 EOF
 
@@ -382,6 +398,7 @@ fi
 
 cat >doit.c <<\EOF
 #include <stdio.h>
+int
 main(argc, argv)
 int argc;
 char **argv;
@@ -391,7 +408,7 @@ char **argv;
     fsetpos(stdin, &pos);
     fgetpos(stdin, &pos);
   }
-  exit(0);
+  return 0;
 }
 EOF
 
@@ -407,6 +424,7 @@ cat >doit.c <<\EOF
 #include <sys/types.h>
 #include <sys/wait.h>
 
+int
 main(argc, argv)
 int argc;
 char **argv;
@@ -423,7 +441,7 @@ char **argv;
     WTERMSIG(status);
     WSTOPSIG(status);
   }
-  exit(0);
+  return 0;
 }
 EOF
 
@@ -437,13 +455,16 @@ fi
 cat >doit.c <<\EOF
 #include <stdio.h>
 #include <signal.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
 
 static int whoops()
 {
   _exit(1);
 }
 
-main()
+int main(void)
 {
   char buf[30];
 #ifdef SIGSEGV
@@ -470,6 +491,7 @@ fi
 cat >doit.c <<\EOF
 #include <nl_types.h>
 
+int
 main(argc, argv)
 int argc;
 char **argv;
@@ -479,7 +501,7 @@ char **argv;
     catgets(d, 1, 1, "default");
     catclose(d);
   }
-  exit(0);
+  return 0;
 }
 EOF
 
@@ -492,9 +514,11 @@ fi
 
 cat >doit.c <<\EOF
 #include <limits.h>
+#include <stdlib.h>
 
 char c = UCHAR_MAX;
 
+int
 main(argc, argv)
 int argc;
 char **argv;
@@ -512,16 +536,16 @@ then
        char_signed=
 else
        cat >doit.c <<\EOF
-main()
+int main(void)
 {
   int i;
 
   for (i = 0; i < 512; i++) {
     char c = (char)i;
     if (c < 0)
-       exit(1);
+       return 1;
   }
-  exit(0);
+  return 0;
 }
 EOF
 
-- 
2.39.2

Reply via email to