Package: nx-libs
Version: 3.5.0.22
The imake in 3.5.0.22 does not compile in current Fedora rawhide due to the
use of -Werror=format-security:
make[4]: Entering directory
`/builddir/build/BUILD/nx-libs-3.5.0.22/nx-X11/config/imake'
gcc -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2
-fexceptions -fstack-protector-strong --param=ssp-buffer-size=4
-grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1
-march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard -I../../include
-I../../exports/include/X11 -I../.. -I../../exports/include -Dlinux
-D__arm__ -D__arm32__ -U__arm -Uarm -D_POSIX_C_SOURCE=199309L
-D_POSIX_SOURCE -D_XOPEN_SOURCE -D_BSD_SOURCE
-D_SVID_SOURCE
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
-D_GNU_SOURCE -DFUNCPROTO=15 -DNARROWPROTO
-DCPP_PROGRAM="\"cpp\""
-DHAS_MERGE_CONSTANTS=`if gcc -fmerge-constants -xc /dev/null -S -o /dev/null
2> /dev/null 1> /dev/null; then echo 1; else echo 0; fi` -DMONOLITH
-c -o
imake.o imake.c
imake.c: In function 'get_libc_version':
imake.c:1018:5: error: format not a string literal and no format arguments
[-Werror=format-security]
fprintf (inFile, command);
^
imake.c: In function 'get_ld_version':
imake.c:1135:5: warning: ignoring return value of 'fscanf', declared with
attribute warn_unused_result [-Wunused-result]
(void) fscanf (ldprog, "%d.%d", &ldmajor, &ldminor);
^
imake.c: In function 'ReadLine':
imake.c:1998:12: warning: ignoring return value of 'ftruncate', declared with
attribute warn_unused_result [-Wunused-result]
ftruncate(fileno(tmpfd), (off_t) 0);
^
cc1: some warnings being treated as errors
make[4]: *** [imake.o] Error 1
Ideally, I would like to avoid building a local imake altogether and just use
the system imake, but I have been unable to figure out how to do that yet.
In the meantime, I'm patching imake.c as attached to bring it up to the
version that is in Fedora Rawhide.
--
Orion Poplawski
Technical Manager 303-415-9701 x222
NWRA, Boulder/CoRA Office FAX: 303-415-9702
3380 Mitchell Lane [email protected]
Boulder, CO 80301 http://www.nwra.com
diff -up nx-libs-3.5.0.22/nx-X11/config/imake/imake.c.imake nx-libs-3.5.0.22/nx-X11/config/imake/imake.c
--- nx-libs-3.5.0.22/nx-X11/config/imake/imake.c.imake 2014-01-04 13:39:35.000000000 -0700
+++ nx-libs-3.5.0.22/nx-X11/config/imake/imake.c 2014-01-24 13:55:53.940697330 -0700
@@ -7,8 +7,6 @@
* be passed to the template file. *
* *
***************************************************************************/
-/* $XFree86: xc/config/imake/imake.c,v 3.63tsi Exp $ */
-
/*
*
Copyright (c) 1985, 1986, 1987, 1998 The Open Group
@@ -153,23 +151,14 @@ in this Software without prior written a
#endif
#include <stdlib.h>
#include <stdio.h>
-#ifdef MONOLITH
-# include "Xosdefs.h"
-#else
-# include <X11/Xosdefs.h>
-#endif
+#include <stdarg.h>
+#include <X11/Xfuncproto.h>
+#include <X11/Xosdefs.h>
#include <string.h>
#include <ctype.h>
#ifdef WIN32
# include "Xw32defs.h"
#endif
-#if 0
-#ifndef X_NOT_POSIX
-# ifndef _POSIX_SOURCE
-# define _POSIX_SOURCE
-# endif
-#endif
-#endif
#include <sys/types.h>
#include <fcntl.h>
#ifdef X_NOT_POSIX
@@ -231,22 +220,16 @@ typedef union wait waitType;
# define WIFEXITED(w) waitCode(w)
# endif
#endif /* X_NOT_POSIX */
-# include <stdlib.h>
-#if defined(macII) && !defined(__STDC__) /* stdlib.h fails to define these */
-char *malloc(), *realloc();
-#endif /* macII */
+#include <stdlib.h>
#include <errno.h>
#ifdef __minix_vmd
-#define USE_FREOPEN 1
+# define USE_FREOPEN 1
#endif
-#if !((defined(sun) && !defined(SVR4)) || defined(macII))
-#define USE_STRERROR 1
-#endif
#ifndef WIN32
-#include <sys/utsname.h>
+# include <sys/utsname.h>
#else
-#include <windows.h>
+# include <windows.h>
#endif
#ifndef SYS_NMLN
# ifdef _SYS_NMLN
@@ -256,39 +239,22 @@ char *malloc(), *realloc();
# endif
#endif
#if defined(linux) || defined(__GNU__) || defined(__GLIBC__)
-#include <limits.h>
-#include <stdio.h>
+# include <limits.h>
+# include <stdio.h>
#endif
#ifdef __QNX__
-#include <unix.h>
-#endif
-
-/*
- * This define of strerror is copied from (and should be identical to)
- * Xos.h, which we don't want to include here for bootstrapping reasons.
- */
-#ifndef USE_STRERROR
-# ifndef strerror
-extern char *sys_errlist[];
-extern int sys_nerr;
-# define strerror(n) \
- (((n) >= 0 && (n) < sys_nerr) ? sys_errlist[n] : "unknown error")
-# endif
+# include <unix.h>
#endif
#if defined(__NetBSD__) /* see code clock in init() below */
-#include <sys/utsname.h>
-#endif
-
-#if !(defined(Lynx) || defined(__Lynx__) || (defined(SVR4) && !defined(sun))) && !defined (__CYGWIN__)
-#define HAS_MKSTEMP
+# include <sys/utsname.h>
#endif
typedef unsigned char boolean;
#define TRUE 1
#define FALSE 0
-# include "imakemdep.h"
+#include "imakemdep.h"
#ifdef CROSSCOMPILE
# include "imakemdep_cpp.h"
#endif
@@ -305,7 +271,7 @@ int xvariables[10];
#endif
#ifndef PATH_MAX
-#define PATH_MAX 1024
+# define PATH_MAX 1024
#endif
/*
@@ -331,11 +297,13 @@ void KludgeOutputLine(char **), KludgeRe
# endif
#endif
-char *cpp = NULL;
+const char *cpp = NULL;
-char *tmpMakefile = "/tmp/Imf.XXXXXX";
-char *tmpImakefile = "/tmp/IIf.XXXXXX";
-char *make_argv[ ARGUMENTS ] = {
+const char *tmpMakefile;
+const char *tmpMakefileTemplate = "/tmp/Imf.XXXXXX";
+const char *tmpImakefile;
+const char *tmpImakefileTemplate = "/tmp/IIf.XXXXXX";
+const char *make_argv[ ARGUMENTS ] = {
#ifdef WIN32
"nmake"
#else
@@ -345,53 +313,53 @@ char *make_argv[ ARGUMENTS ] = {
int make_argindex;
int cpp_argindex;
-char *Imakefile = NULL;
-char *Makefile = "Makefile";
-char *Template = "Imake.tmpl";
-char *ImakefileC = "Imakefile.c";
+const char *Imakefile = NULL;
+const char *Makefile = "Makefile";
+const char *Template = "Imake.tmpl";
+const char *ImakefileC = "Imakefile.c";
boolean haveImakefileC = FALSE;
-char *cleanedImakefile = NULL;
-char *program;
-char *FindImakefile(char *Imakefile);
-char *ReadLine(FILE *tmpfd, char *tmpfname);
-char *CleanCppInput(char *imakefile);
-char *Strdup(char *cp);
+const char *cleanedImakefile = NULL;
+const char *program;
+const char *FindImakefile(const char *Imakefile);
+char *ReadLine(FILE *tmpfd, const char *tmpfname);
+const char *CleanCppInput(const char *imakefile);
+char *Strdup(const char *cp);
char *Emalloc(int size);
-void LogFatalI(char *s, int i), LogFatal(char *x0, char *x1),
- LogMsg(char *x0, char *x1);
+void LogFatal(const char *x0, ...) _X_ATTRIBUTE_PRINTF(1, 2);
+void LogMsg(const char *x0, ...) _X_ATTRIBUTE_PRINTF(1, 2);
void showit(FILE *fd);
void wrapup(void);
void init(void);
-void AddMakeArg(char *arg);
-void AddCppArg(char *arg);
+void AddMakeArg(const char *arg);
+void AddCppArg(const char *arg);
#ifdef CROSSCOMPILE
char *CrossCompileCPP(void);
#endif
void SetOpts(int argc, char **argv);
-void CheckImakefileC(char *masterc);
-void cppit(char *imakefile, char *template, char *masterc,
- FILE *outfd, char *outfname);
+void CheckImakefileC(const char *masterc);
+void cppit(const char *imakefile, const char *template, const char *masterc,
+ FILE *outfd, const char *outfname);
void makeit(void);
-void CleanCppOutput(FILE *tmpfd, char *tmpfname);
+void CleanCppOutput(FILE *tmpfd, const char *tmpfname);
boolean isempty(char *line);
-void writetmpfile(FILE *fd, char *buf, int cnt, char *fname);
+void writetmpfile(FILE *fd, const char *buf, int cnt, const char *fname);
#ifdef SIGNALRETURNSINT
int catch(int sig);
#else
void catch(int sig);
#endif
-void showargs(char **argv);
-boolean optional_include(FILE *inFile, char *defsym, char *fname);
-void doit(FILE *outfd, char *cmd, char **argv);
+void showargs(const char **argv);
+boolean optional_include(FILE *inFile, const char *defsym, const char *fname);
+void doit(FILE *outfd, const char *cmd, const char **argv);
boolean define_os_defaults(FILE *inFile);
#ifdef CROSSCOMPILE
static void get_cross_compile_dir(FILE *inFile);
#endif
#ifdef CROSSCOMPILEDIR
-char *CrossCompileDir = CROSSCOMPILEDIR;
+const char *CrossCompileDir = CROSSCOMPILEDIR;
#else
-char *CrossCompileDir = "";
+const char *CrossCompileDir = "";
#endif
boolean CrossCompiling = FALSE;
@@ -428,24 +396,25 @@ main(int argc, char *argv[])
if ((tmpfd = fopen(tmpMakefile, "w+")) == NULL)
LogFatal("Cannot create temporary file %s.", tmpMakefile);
} else {
-#ifdef HAS_MKSTEMP
+#ifdef HAVE_MKSTEMP
int fd;
#endif
- tmpMakefile = Strdup(tmpMakefile);
-#ifndef HAS_MKSTEMP
- if (mktemp(tmpMakefile) == NULL ||
- (tmpfd = fopen(tmpMakefile, "w+")) == NULL) {
- LogFatal("Cannot create temporary file %s.", tmpMakefile);
+ char *tmpMakefileName = Strdup(tmpMakefileTemplate);
+#ifndef HAVE_MKSTEMP
+ if (mktemp(tmpMakefileName) == NULL ||
+ (tmpfd = fopen(tmpMakefileName, "w+")) == NULL) {
+ LogFatal("Cannot create temporary file %s.", tmpMakefileName);
}
#else
- fd = mkstemp(tmpMakefile);
+ fd = mkstemp(tmpMakefileName);
if (fd == -1 || (tmpfd = fdopen(fd, "w+")) == NULL) {
if (fd != -1) {
- unlink(tmpMakefile); close(fd);
+ unlink(tmpMakefileName); close(fd);
}
- LogFatal("Cannot create temporary file %s.", tmpMakefile);
+ LogFatal("Cannot create temporary file %s.", tmpMakefileName);
}
#endif
+ tmpMakefile = tmpMakefileName;
}
AddMakeArg("-f");
AddMakeArg( tmpMakefile );
@@ -498,7 +467,7 @@ void
catch(int sig)
{
errno = 0;
- LogFatalI("Signal %d.", sig);
+ LogFatal("Signal %d.", sig);
}
/*
@@ -572,21 +541,21 @@ init(void)
}
void
-AddMakeArg(char *arg)
+AddMakeArg(const char *arg)
{
errno = 0;
if (make_argindex >= ARGUMENTS-1)
- LogFatal("Out of internal storage.", "");
+ LogFatal("Out of internal storage.");
make_argv[ make_argindex++ ] = arg;
make_argv[ make_argindex ] = NULL;
}
void
-AddCppArg(char *arg)
+AddCppArg(const char *arg)
{
errno = 0;
if (cpp_argindex >= ARGUMENTS-1)
- LogFatal("Out of internal storage.", "");
+ LogFatal("Out of internal storage.");
cpp_argv[ cpp_argindex++ ] = arg;
cpp_argv[ cpp_argindex ] = NULL;
}
@@ -618,7 +587,7 @@ SetOpts(int argc, char **argv)
else {
argc--, argv++;
if (! argc)
- LogFatal("No description arg after -f flag", "");
+ LogFatal("No description arg after -f flag");
Imakefile = argv[0];
}
} else if (argv[0][1] == 's') {
@@ -628,7 +597,7 @@ SetOpts(int argc, char **argv)
else {
argc--, argv++;
if (!argc)
- LogFatal("No description arg after -s flag", "");
+ LogFatal("No description arg after -s flag");
Makefile = ((argv[0][0] == '-') && !argv[0][1]) ?
NULL : argv[0];
}
@@ -642,7 +611,7 @@ SetOpts(int argc, char **argv)
else {
argc--, argv++;
if (! argc)
- LogFatal("No description arg after -T flag", "");
+ LogFatal("No description arg after -T flag");
Template = argv[0];
}
} else if (argv[0][1] == 'C') {
@@ -651,7 +620,7 @@ SetOpts(int argc, char **argv)
else {
argc--, argv++;
if (! argc)
- LogFatal("No imakeCfile arg after -C flag", "");
+ LogFatal("No imakeCfile arg after -C flag");
ImakefileC = argv[0];
}
} else if (argv[0][1] == 'v') {
@@ -667,10 +636,10 @@ SetOpts(int argc, char **argv)
if (!cpp)
{
AddCppArg("-E");
-#ifdef __GNUC__
+# ifdef __GNUC__
if (verbose)
AddCppArg("-v");
-#endif
+# endif
cpp = DEFAULT_CC;
}
# else
@@ -686,8 +655,8 @@ SetOpts(int argc, char **argv)
AddCppArg(ImakefileC);
}
-char *
-FindImakefile(char *Imakefile)
+const char *
+FindImakefile(const char *Imakefile)
{
if (Imakefile) {
if (access(Imakefile, R_OK) < 0)
@@ -695,7 +664,7 @@ FindImakefile(char *Imakefile)
} else {
if (access("Imakefile", R_OK) < 0) {
if (access("imakefile", R_OK) < 0)
- LogFatal("No description file.", "");
+ LogFatal("No description file.");
else
Imakefile = "imakefile";
} else
@@ -704,44 +673,50 @@ FindImakefile(char *Imakefile)
return(Imakefile);
}
-void
-LogFatalI(char *s, int i)
+static void _X_ATTRIBUTE_PRINTF(1, 0)
+vLogMsg(const char *fmt, va_list args)
{
- /*NOSTRICT*/
- LogFatal(s, (char *)(long)i);
+ int error_number = errno;
+
+ if (error_number) {
+ fprintf(stderr, "%s: ", program);
+ fprintf(stderr, "%s\n", strerror(error_number));
+ }
+ fprintf(stderr, "%s: ", program);
+ vfprintf(stderr, fmt, args);
+ fprintf(stderr, "\n");
}
void
-LogFatal(char *x0, char *x1)
+LogFatal(const char *fmt, ...)
{
static boolean entered = FALSE;
+ va_list args;
if (entered)
return;
entered = TRUE;
- LogMsg(x0, x1);
+ va_start(args, fmt);
+ vLogMsg(fmt, args);
+ va_end(args);
fprintf(stderr, " Stop.\n");
wrapup();
exit(1);
}
void
-LogMsg(char *x0, char *x1)
+LogMsg(const char *fmt, ...)
{
- int error_number = errno;
+ va_list args;
- if (error_number) {
- fprintf(stderr, "%s: ", program);
- fprintf(stderr, "%s\n", strerror(error_number));
- }
- fprintf(stderr, "%s: ", program);
- fprintf(stderr, x0, x1);
- fprintf(stderr, "\n");
+ va_start(args, fmt);
+ vLogMsg(fmt, args);
+ va_end(args);
}
void
-showargs(char **argv)
+showargs(const char **argv)
{
for (; *argv; argv++)
fprintf(stderr, "%s ", *argv);
@@ -751,7 +726,7 @@ showargs(char **argv)
#define ImakefileCHeader "/* imake - temporary file */"
void
-CheckImakefileC(char *masterc)
+CheckImakefileC(const char *masterc)
{
char mkcbuf[1024];
FILE *inFile;
@@ -767,7 +742,8 @@ CheckImakefileC(char *masterc)
fclose(inFile);
LogFatal("Refuse to overwrite: %s", masterc);
}
- fclose(inFile);
+ else
+ fclose(inFile);
}
}
@@ -778,7 +754,7 @@ CheckImakefileC(char *masterc)
#define OverrideWarning "Warning: local file \"%s\" overrides global macros."
boolean
-optional_include(FILE *inFile, char *defsym, char *fname)
+optional_include(FILE *inFile, const char *defsym, const char *fname)
{
errno = 0;
if (access(fname, R_OK) == 0) {
@@ -790,7 +766,7 @@ optional_include(FILE *inFile, char *def
}
void
-doit(FILE *outfd, char *cmd, char **argv)
+doit(FILE *outfd, const char *cmd, const char **argv)
{
int pid;
waitType status;
@@ -805,18 +781,18 @@ doit(FILE *outfd, char *cmd, char **argv
if (status < 0)
LogFatal("Cannot spawn %s.", cmd);
if (status > 0)
- LogFatalI("Exit code %d.", status);
+ LogFatal("Exit code %d.", status);
#else
pid = fork();
if (pid < 0)
- LogFatal("Cannot fork.", "");
+ LogFatal("Cannot fork.");
if (pid) { /* parent... simply wait */
while (wait(&status) > 0) {
errno = 0;
if (WIFSIGNALED(status))
- LogFatalI("Signal %d.", waitSig(status));
+ LogFatal("Signal %d.", waitSig(status));
if (WIFEXITED(status) && waitCode(status))
- LogFatalI("Exit code %d.", waitCode(status));
+ LogFatal("Exit code %d.", waitCode(status));
}
}
else { /* child... dup and exec cmd */
@@ -832,7 +808,7 @@ doit(FILE *outfd, char *cmd, char **argv
#if !defined WIN32
static void
-parse_utsname(struct utsname *name, char *fmt, char *result, char *msg)
+parse_utsname(struct utsname *name, const char *fmt, char *result, const char *msg)
{
char buf[SYS_NMLN * 5 + 1];
char *ptr = buf;
@@ -892,7 +868,7 @@ parse_utsname(struct utsname *name, char
/* Just in case... */
if (strlen(buf) >= sizeof(buf))
- LogFatal("Buffer overflow parsing uname.", "");
+ LogFatal("Buffer overflow parsing uname.");
/* Parse the buffer. The sscanf() return value is rarely correct. */
*result = '\0';
@@ -978,13 +954,23 @@ const char *libc_c=
static void
get_libc_version(FILE *inFile)
{
- char aout[] = "/tmp/imakeXXXXXX";
+ char aout[4096], *tmpdir;
FILE *fp;
const char *format = "%s -o %s -x c -";
char *cc;
int len;
char *command;
+ /* If $TMPDIR is defined and has an acceptable length,
+ * use that as tmp dir, else use /tmp. That fixes
+ * problems with /tmp mounted "noexec".
+ */
+ if((tmpdir = getenv("TMPDIR")) != NULL && strlen(tmpdir) < (4096-13))
+ strcpy(aout, tmpdir);
+ else
+ strcpy(aout, "/tmp");
+ strcat(aout, "/imakeXXXXXX");
+
/* Pre-create temp file safely */
{
/* Linux + ELF has mkstemp() */
@@ -1000,7 +986,8 @@ get_libc_version(FILE *inFile)
cc = "gcc";
len = strlen (aout) + strlen (format) + strlen (cc);
if (len < 128) len = 128;
- command = alloca (len);
+ if((command = alloca (len)) == NULL)
+ abort();
if (snprintf (command , len, format, cc, aout) == len)
abort ();
@@ -1015,12 +1002,16 @@ get_libc_version(FILE *inFile)
abort ();
while (fgets (command, len, fp))
- fprintf (inFile, command);
+ fputs (command, inFile);
len = pclose (fp);
remove (aout);
- if (len)
- abort ();
+ if (len) {
+ /* handwave furiously */
+ printf("#define DefaultLinuxCLibMajorVersion 6\n");
+ printf("#define DefaultLinuxCLibMinorVersion 12\n");
+ printf("#define DefaultLinuxCLibTeenyVersion 0\n");
+ }
}
#endif
@@ -1031,14 +1022,14 @@ get_stackprotector(FILE *inFile)
FILE *fp;
char *cc;
char command[1024], buf[1024];
-
+
cc = getenv("CC");
if (cc == NULL) {
cc = "cc";
}
snprintf(command, sizeof(command), "%s -v 2>&1", cc);
fp = popen(command, "r");
- if (fp == NULL)
+ if (fp == NULL)
abort();
while (fgets(buf, sizeof(buf), fp)) {
if (strstr(buf, "propolice") != NULL) {
@@ -1046,11 +1037,10 @@ get_stackprotector(FILE *inFile)
break;
}
}
- if (pclose(fp))
- abort();
+ pclose(fp);
}
#endif
-
+
#if defined CROSSCOMPILE || defined linux || defined(__GLIBC__)
static void
@@ -1058,9 +1048,9 @@ get_distrib(FILE *inFile)
{
struct stat sb;
- static char* suse = "/etc/SuSE-release";
- static char* redhat = "/etc/redhat-release";
- static char* debian = "/etc/debian_version";
+ static const char* suse = "/etc/SuSE-release";
+ static const char* redhat = "/etc/redhat-release";
+ static const char* debian = "/etc/debian_version";
fprintf (inFile, "%s\n", "#define LinuxUnknown 0");
fprintf (inFile, "%s\n", "#define LinuxSuSE 1");
@@ -1076,14 +1066,14 @@ get_distrib(FILE *inFile)
fprintf (inFile, "%s\n", "#define LinuxWare 11");
fprintf (inFile, "%s\n", "#define LinuxYggdrasil 12");
-#ifdef CROSSCOMPILE
+# ifdef CROSSCOMPILE
if (CrossCompiling) {
fprintf (inFile, "%s\n",
"#define DefaultLinuxDistribution LinuxUnknown");
fprintf (inFile, "%s\n", "#define DefaultLinuxDistName Unknown");
return;
}
-#endif
+# endif
if (lstat (suse, &sb) == 0) {
fprintf (inFile, "%s\n", "#define DefaultLinuxDistribution LinuxSuSE");
fprintf (inFile, "%s\n", "#define DefaultLinuxDistName SuSE");
@@ -1116,7 +1106,7 @@ get_ld_version(FILE *inFile)
int ldmajor, ldminor;
const char *ld = "ld -v";
-#ifdef CROSSCOMPILE
+# ifdef CROSSCOMPILE
if (CrossCompiling) {
char cmd[PATH_MAX];
strcpy (cmd, CrossCompileDir);
@@ -1124,7 +1114,7 @@ get_ld_version(FILE *inFile)
strcat (cmd,ld);
ldprog = popen (cmd, "r");
} else
-#endif
+# endif
ldprog = popen (ld, "r");
if (ldprog) {
@@ -1192,7 +1182,7 @@ get_binary_format(FILE *inFile)
* Returns: 0 if successful, -1 if not.
*/
static int
-ask_sun_compiler_for_versions(const char *cmd, const char *path,
+ask_sun_compiler_for_versions(const char *cmd, const char *path,
int *cmajor, int *cminor)
{
char buf[BUFSIZ];
@@ -1201,7 +1191,7 @@ ask_sun_compiler_for_versions(const char
FILE* ccproc;
const char vflag[] = " -V 2>&1";
int retval = -1;
-
+
int len = strlen(cmd) + sizeof(vflag);
if (path != NULL) {
@@ -1229,7 +1219,7 @@ ask_sun_compiler_for_versions(const char
}
}
if (retval != 0) {
- fprintf(stderr,
+ fprintf(stderr,
"warning: could not parse version number in output of:\n"
" %s\n", cmdtorun);
}
@@ -1247,23 +1237,22 @@ get_sun_compiler_versions (FILE *inFile)
{
const char* sunpro_path = "/opt/SUNWspro/bin";
int cmajor, cminor, found = 0;
- struct stat sb;
/* If cross-compiling, only check CrossCompilerDir for compilers.
- * If not cross-compiling, first check cc in users $PATH,
+ * If not cross-compiling, first check cc in users $PATH,
* then try /opt/SUNWspro if not found in the users $PATH
*/
-#if defined CROSSCOMPILE
+# if defined CROSSCOMPILE
if (CrossCompiling) {
if (ask_sun_compiler_for_versions("cc", CrossCompileDir,
&cmajor, &cminor) == 0) {
found = 1;
}
- }
+ }
else
-#endif
- {
+# endif
+ {
if (ask_sun_compiler_for_versions("cc", NULL, &cmajor, &cminor) == 0) {
found = 1;
} else if (ask_sun_compiler_for_versions("cc", sunpro_path,
@@ -1282,22 +1271,22 @@ get_sun_compiler_versions (FILE *inFile)
/* Now do it again for C++ compiler (CC) */
found = 0;
-#if defined CROSSCOMPILE
+# if defined CROSSCOMPILE
if (CrossCompiling) {
if (ask_sun_compiler_for_versions("CC", CrossCompileDir,
&cmajor, &cminor) == 0) {
found = 1;
}
- }
+ }
else
-#endif
- {
+# endif
+ {
if (ask_sun_compiler_for_versions("CC", NULL, &cmajor, &cminor) == 0) {
found = 1;
} else if (ask_sun_compiler_for_versions("CC", sunpro_path,
&cmajor, &cminor) == 0) {
found = 1;
- fprintf(inFile,
+ fprintf(inFile,
"#define DefaultSunProCplusplusCompilerDir %s", sunpro_path);
}
}
@@ -1318,7 +1307,7 @@ static void
get_gcc_version(FILE *inFile, char *name)
{
fprintf (inFile, "#define HasGcc 1\n");
-#ifdef CROSSCOMPILE
+# ifdef CROSSCOMPILE
if (CrossCompiling)
{
if (gnu_c > 1) {
@@ -1329,20 +1318,20 @@ get_gcc_version(FILE *inFile, char *name
fprintf (inFile, "#define GccMajorVersion %d\n", gnu_c);
fprintf (inFile, "#define GccMinorVersion %d\n", gnu_c_minor);
} else
-#endif
+# endif
{
-#if __GNUC__ > 1
+# if __GNUC__ > 1
fprintf (inFile, "#define HasGcc2 1\n");
-# if __GNUC__ > 2
+# if __GNUC__ > 2
fprintf (inFile, "#define HasGcc3 1\n");
+# endif
# endif
-#endif
fprintf (inFile, "#define GccMajorVersion %d\n", __GNUC__);
fprintf (inFile, "#define GccMinorVersion %d\n", __GNUC_MINOR__);
}
-#if defined(HAS_MERGE_CONSTANTS)
+# if defined(HAS_MERGE_CONSTANTS)
fprintf (inFile, "#define HasGccMergeConstants %d\n", HAS_MERGE_CONSTANTS);
-#endif
+# endif
}
#endif
@@ -1350,8 +1339,8 @@ static boolean
get_gcc(char *cmd)
{
struct stat sb;
- static char* gcc_path[] = {
-# if defined(linux) || \
+ static const char* gcc_path[] = {
+#if defined(linux) || \
defined(__NetBSD__) || \
defined(__OpenBSD__) || \
defined(__FreeBSD__) || \
@@ -1362,14 +1351,14 @@ get_gcc(char *cmd)
defined(__GNU__) || \
defined(__GLIBC__)
"/usr/bin/cc", /* for Linux PostIncDir */
-# endif
+#endif
"/usr/local/bin/gcc",
"/opt/gnu/bin/gcc",
"/usr/pkg/bin/gcc"
};
#ifdef CROSSCOMPILE
- static char* cross_cc_name[] = {
+ static const char* cross_cc_name[] = {
"cc",
"gcc"
};
@@ -1399,7 +1388,7 @@ get_gcc(char *cmd)
return FALSE;
}
-#if defined CROSSCOMPILE || !defined __UNIXOS2__
+#ifdef CROSSCOMPILE
static void
get_gcc_incdir(FILE *inFile, char* name)
{
@@ -1428,14 +1417,14 @@ get_gcc_incdir(FILE *inFile, char* name)
boolean
define_os_defaults(FILE *inFile)
{
-#if defined CROSSCOMPILE || ( !defined(WIN32) && !defined(__UNIXOS2__) )
-#ifdef CROSSCOMPILE
-#ifdef __GNUC__
+#if defined CROSSCOMPILE || !defined(WIN32)
+# ifdef CROSSCOMPILE
+# ifdef __GNUC__
if (1)
-#else
+# else
if ((sys != win32) && (sys != emx))
-#endif
-#endif
+# endif
+# endif
{
# if (defined(DEFAULT_OS_NAME) || defined(DEFAULT_OS_MAJOR_REV) || \
defined(DEFAULT_OS_MINOR_REV) || defined(DEFAULT_OS_TEENY_REV))
@@ -1444,16 +1433,16 @@ define_os_defaults(FILE *inFile)
char buf[SYS_NMLN * 5 + 1];
/* Obtain the system information. */
-#ifdef CROSSCOMPILE
+# ifdef CROSSCOMPILE
if (!CrossCompiling)
-#endif
+# endif
{
if (uname(&uts_name) < 0)
- LogFatal("Cannot invoke uname", "");
+ LogFatal("Cannot invoke uname");
else
name = &uts_name;
}
-#if defined CROSSCOMPILE && (defined linux || defined(__GLIBC__))
+# if defined CROSSCOMPILE && (defined linux || defined(__GLIBC__))
else {
strncpy(uts_name.sysname,cross_uts_sysname,SYS_NMLN);
strncpy(uts_name.release,cross_uts_release,SYS_NMLN);
@@ -1461,14 +1450,14 @@ define_os_defaults(FILE *inFile)
strncpy(uts_name.machine,cross_uts_machine,SYS_NMLN);
name = &uts_name;
}
-#endif
-# ifdef __FreeBSD__
+# endif
+# ifdef __FreeBSD__
/* Override for compiling in chroot of other OS version, such as
* in the bento build cluster.
*/
{
char *e;
- if ((e = getenv("OSREL")) != NULL &&
+ if ((e = getenv("OSREL")) != NULL &&
strlen(name->sysname) + strlen(e) + 1 < SYS_NMLN) {
strcpy(name->release, e);
strcpy(name->version, name->sysname);
@@ -1476,7 +1465,7 @@ define_os_defaults(FILE *inFile)
strcat(name->version, e);
}
}
-# endif
+# endif
# if defined DEFAULT_OS_NAME
# if defined CROSSCOMPILE
@@ -1648,10 +1637,8 @@ define_os_defaults(FILE *inFile)
char name[PATH_MAX];
if (get_gcc(name)) {
get_gcc_version (inFile,name);
-# if defined CROSSCOMPILE || !defined __UNIXOS2__
-# if defined CROSSCOMPILE
+# if defined CROSSCOMPILE
if (sys != emx)
-# endif
get_gcc_incdir(inFile,name);
# endif
}
@@ -1664,7 +1651,7 @@ define_os_defaults(FILE *inFile)
get_binary_format(inFile);
# endif
}
-#endif /* !WIN32 && !__UNIXOS2__*/
+#endif /* !WIN32 */
#if defined WIN32
# ifdef CROSSCOMPILE
else if (sys == win32 && !CrossCompiling)
@@ -1688,8 +1675,6 @@ define_os_defaults(FILE *inFile)
#endif /* WIN32 */
#ifdef CROSSCOMPILE
else if (sys == emx)
-#endif
-#if defined CROSSCOMPILE || defined __UNIXOS2__
{
fprintf(inFile, "#define DefaultOSMajorVersion 4\n");
fprintf(inFile, "#define DefaultOSMinorVersion 0\n");
@@ -1703,8 +1688,8 @@ define_os_defaults(FILE *inFile)
}
void
-cppit(char *imakefile, char *template, char *masterc,
- FILE *outfd, char *outfname)
+cppit(const char *imakefile, const char *template, const char *masterc,
+ FILE *outfd, const char *outfname)
{
FILE *inFile;
@@ -1721,8 +1706,11 @@ cppit(char *imakefile, char *template, c
fprintf(inFile, IncludeFmt, ImakeTmplSym) < 0 ||
optional_include(inFile, "IMAKE_ADMIN_MACROS", "adminmacros") ||
optional_include(inFile, "IMAKE_LOCAL_MACROS", "localmacros") ||
- fflush(inFile) ||
- fclose(inFile))
+ fflush(inFile)) {
+ fclose(inFile);
+ LogFatal("Cannot write to %s.", masterc);
+ }
+ else if (fclose(inFile))
LogFatal("Cannot write to %s.", masterc);
/*
* Fork and exec cpp
@@ -1737,8 +1725,8 @@ makeit(void)
doit(NULL, make_argv[0], make_argv);
}
-char *
-CleanCppInput(char *imakefile)
+const char *
+CleanCppInput(const char *imakefile)
{
FILE *outFile = NULL;
FILE *inFile;
@@ -1792,28 +1780,29 @@ CleanCppInput(char *imakefile)
strcmp(ptoken, "pragma") &&
strcmp(ptoken, "undef")) {
if (outFile == NULL) {
-#ifdef HAS_MKSTEMP
+#ifdef HAVE_MKSTEMP
int fd;
#endif
- tmpImakefile = Strdup(tmpImakefile);
-#ifndef HAS_MKSTEMP
- if (mktemp(tmpImakefile) == NULL ||
- (outFile = fopen(tmpImakefile, "w+")) == NULL) {
+ char *tmpImakefileName = Strdup(tmpImakefileTemplate);
+#ifndef HAVE_MKSTEMP
+ if (mktemp(tmpImakefileName) == NULL ||
+ (outFile = fopen(tmpImakefileName, "w+")) == NULL) {
LogFatal("Cannot open %s for write.",
- tmpImakefile);
+ tmpImakefileName);
}
#else
- fd=mkstemp(tmpImakefile);
+ fd=mkstemp(tmpImakefileName);
if (fd != -1)
outFile = fdopen(fd, "w");
if (outFile == NULL) {
if (fd != -1) {
- unlink(tmpImakefile); close(fd);
+ unlink(tmpImakefileName); close(fd);
}
LogFatal("Cannot open %s for write.",
- tmpImakefile);
+ tmpImakefileName);
}
#endif
+ tmpImakefile = tmpImakefileName;
}
writetmpfile(outFile, punwritten, pbuf-punwritten,
tmpImakefile);
@@ -1838,7 +1827,7 @@ CleanCppInput(char *imakefile)
}
void
-CleanCppOutput(FILE *tmpfd, char *tmpfname)
+CleanCppOutput(FILE *tmpfd, const char *tmpfname)
{
char *input;
int blankline = 0;
@@ -1960,7 +1949,7 @@ isempty(char *line)
/*ARGSUSED*/
char *
-ReadLine(FILE *tmpfd, char *tmpfname)
+ReadLine(FILE *tmpfd, const char *tmpfname)
{
static boolean initialized = FALSE;
static char *buf, *pline, *end;
@@ -1988,10 +1977,10 @@ ReadLine(FILE *tmpfd, char *tmpfname)
fseek(tmpfd, 0, 0);
#if defined(SYSV) || defined(WIN32) || defined(USE_FREOPEN)
tmpfd = freopen(tmpfname, "w+", tmpfd);
-#ifdef WIN32
+# ifdef WIN32
if (! tmpfd) /* if failed try again */
tmpfd = freopen(tmpfname, "w+", fp);
-#endif
+# endif
if (! tmpfd)
LogFatal("cannot reopen %s\n", tmpfname);
#else /* !SYSV */
@@ -1999,8 +1988,6 @@ ReadLine(FILE *tmpfd, char *tmpfname)
#endif /* !SYSV */
initialized = TRUE;
fprintf (tmpfd, "# Makefile generated by imake - do not edit!\n");
- fprintf (tmpfd, "# %s\n",
- "$Xorg: imake.c,v 1.6 2001/02/09 02:03:15 xorgcvs Exp $");
}
for (p1 = pline; p1 < end; p1++) {
@@ -2036,7 +2023,7 @@ ReadLine(FILE *tmpfd, char *tmpfname)
}
void
-writetmpfile(FILE *fd, char *buf, int cnt, char *fname)
+writetmpfile(FILE *fd, const char *buf, int cnt, const char *fname)
{
if (fwrite(buf, sizeof(char), cnt, fd) == -1)
LogFatal("Cannot write to %s.", fname);
@@ -2048,7 +2035,7 @@ Emalloc(int size)
char *p;
if ((p = malloc(size)) == NULL)
- LogFatalI("Cannot allocate %d bytes", size);
+ LogFatal("Cannot allocate %d bytes", size);
return(p);
}
@@ -2066,10 +2053,10 @@ KludgeOutputLine(char **pline)
break;
case ' ': /*May need a tab*/
default:
-#ifdef CROSSCOMPILE
+# ifdef CROSSCOMPILE
if (inline_syntax)
-#endif
-#if defined CROSSCOMPILE || defined INLINE_SYNTAX
+# endif
+# if defined CROSSCOMPILE || defined INLINE_SYNTAX
{
if (*p == '<' && p[1] == '<') { /* inline file close */
InInline--;
@@ -2077,7 +2064,7 @@ KludgeOutputLine(char **pline)
break;
}
}
-#endif
+# endif
/*
* The following cases should not be treated as beginning of
* rules:
@@ -2116,26 +2103,26 @@ KludgeOutputLine(char **pline)
quotechar = ']';
break;
case '=':
-#ifdef CROSSCOMPILE
+# ifdef CROSSCOMPILE
if (remove_cpp_leadspace)
-#endif
-#if defined CROSSCOMPILE || defined REMOVE_CPP_LEADSPACE
+# endif
+# if defined CROSSCOMPILE || defined REMOVE_CPP_LEADSPACE
{
if (!InRule && **pline == ' ') {
while (**pline == ' ')
(*pline)++;
}
}
-#endif
+# endif
goto breakfor;
-#if defined CROSSCOMPILE || defined INLINE_SYNTAX
+# if defined CROSSCOMPILE || defined INLINE_SYNTAX
case '<':
if (inline_syntax) {
if (p[1] == '<') /* inline file start */
InInline++;
}
break;
-#endif
+# endif
case ':':
if (p[1] == '=')
goto breakfor;
@@ -2159,7 +2146,7 @@ KludgeResetRule(void)
}
#endif
char *
-Strdup(char *cp)
+Strdup(const char *cp)
{
char *new = Emalloc(strlen(cp) + 1);
_______________________________________________
X2Go-Dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/x2go-dev