/* resrc.c -- read and write Windows rc files.
- Copyright (C) 1997-2016 Free Software Foundation, Inc.
+ Copyright (C) 1997-2023 Free Software Foundation, Inc.
Written by Ian Lance Taylor, Cygnus Support.
Rewritten by Kai Tietz, Onevision.
/* The default preprocessor. */
-#define DEFAULT_PREPROCESSOR "gcc -E -xc -DRC_INVOKED"
+#define DEFAULT_PREPROCESSOR_CMD "gcc"
+#define DEFAULT_PREPROCESSOR_ARGS "-E -xc -DRC_INVOKED"
/* We read the directory entries in a cursor or icon file into
instances of this structure. */
int pid, wait_status, retcode;
int i;
const char **argv;
- char *errmsg_fmt, *errmsg_arg;
- char *temp_base = choose_temp_base ();
+ char *errmsg_fmt = NULL, *errmsg_arg = NULL;
+ char *temp_base = make_temp_file (NULL);
int in_quote;
char sep;
int redir_handle = -1;
i++;
i++;
- argv = alloca (sizeof (char *) * (i + 3));
+ argv = xmalloc (sizeof (char *) * (i + 3));
i = 0;
s = cmd;
pid = pexecute (argv[0], (char * const *) argv, program_name, temp_base,
&errmsg_fmt, &errmsg_arg, PEXECUTE_ONE | PEXECUTE_SEARCH);
+ free (argv);
/* Restore stdout to its previous setting. */
dup2 (stdout_save, STDOUT_FILENO);
{
char *fileprefix;
- fileprefix = choose_temp_base ();
+ fileprefix = make_temp_file (NULL);
cpp_temp_file = (char *) xmalloc (strlen (fileprefix) + 5);
sprintf (cpp_temp_file, "%s.irc", fileprefix);
free (fileprefix);
look_for_default (char *cmd, const char *prefix, int end_prefix,
const char *preprocargs, const char *filename)
{
- char *space;
int found;
struct stat s;
const char *fnquotes = (filename_need_quotes (filename) ? "\"" : "");
strcpy (cmd, prefix);
- sprintf (cmd + end_prefix, "%s", DEFAULT_PREPROCESSOR);
- space = strchr (cmd + end_prefix, ' ');
- if (space)
- *space = 0;
+ sprintf (cmd + end_prefix, "%s", DEFAULT_PREPROCESSOR_CMD);
if (
#if defined (__DJGPP__) || defined (__CYGWIN__) || defined (_WIN32)
}
}
- strcpy (cmd, prefix);
+ if (filename_need_quotes (cmd))
+ {
+ char *cmd_copy = xmalloc (strlen (cmd));
+ strcpy (cmd_copy, cmd);
+ sprintf (cmd, "\"%s\"", cmd_copy);
+ free (cmd_copy);
+ }
- sprintf (cmd + end_prefix, "%s %s %s%s%s",
- DEFAULT_PREPROCESSOR, preprocargs, fnquotes, filename, fnquotes);
+ sprintf (cmd + strlen (cmd), " %s %s %s%s%s",
+ DEFAULT_PREPROCESSOR_ARGS, preprocargs, fnquotes, filename, fnquotes);
if (verbose)
fprintf (stderr, _("Using `%s'\n"), cmd);
{
char *dash, *slash, *cp;
- preprocessor = DEFAULT_PREPROCESSOR;
-
cmd = xmalloc (strlen (program_name)
- + strlen (preprocessor)
+ + strlen (DEFAULT_PREPROCESSOR_CMD)
+ + strlen (DEFAULT_PREPROCESSOR_ARGS)
+ strlen (preprocargs)
+ strlen (filename)
+ strlen (fnquotes) * 2
static void
get_data (FILE *e, bfd_byte *p, rc_uint_type c, const char *msg)
{
- rc_uint_type got; // $$$d
+ rc_uint_type got; /* $$$d */
got = (rc_uint_type) fread (p, 1, c, e);
if (got == c)
fprintf (e, ", MENUBARBREAK");
if ((mi->type & MENUITEM_MENUBREAK) != 0)
fprintf (e, ", MENUBREAK");
+ if ((mi->type & MENUITEM_OWNERDRAW) != 0)
+ fprintf (e, ", OWNERDRAW");
+ if ((mi->type & MENUITEM_BITMAP) != 0)
+ fprintf (e, ", BITMAP");
}
else
{