on a line. */
#include "as.h"
+#include "filenames.h"
#include "obstack.h"
#include "safe-ctype.h"
#include "input-file.h"
};
+struct list_message
+{
+ char *message;
+ struct list_message *next;
+};
+
/* This structure remembers which line from which file goes into which
frag. */
struct list_info_struct
/* High level language source line. */
unsigned int hll_line;
- /* Pointer to any error message associated with this line. */
- char *message;
+ /* Pointers to linked list of messages associated with this line. */
+ struct list_message *messages, *last_message;
enum edict_enum edict;
char *edict_arg;
{
unsigned int l = strlen (name) + strlen (message) + 1;
char *n = (char *) xmalloc (l);
+ struct list_message *lm = xmalloc (sizeof *lm);
strcpy (n, name);
strcat (n, message);
- listing_tail->message = n;
+ lm->message = n;
+ lm->next = NULL;
+
+ if (listing_tail->last_message)
+ listing_tail->last_message->next = lm;
+ else
+ listing_tail->messages = lm;
+ listing_tail->last_message = lm;
}
}
while (p != (file_info_type *) NULL)
{
- if (strcmp (p->filename, file_name) == 0)
+ if (filename_cmp (p->filename, file_name) == 0)
return p;
p = p->next;
}
if (ps == NULL)
{
if (line == last_line
- && !(last_file && file && strcmp (file, last_file)))
+ && !(last_file && file && filename_cmp (file, last_file)))
return;
new_i = (list_info_type *) xmalloc (sizeof (list_info_type));
|| is_end_of_line [(unsigned char) *copy] != 1);
copy++)
{
- if (*copy == '\\')
- seen_slash = ! seen_slash;
- else if (*copy == '"' && seen_slash)
- seen_quote = ! seen_quote;
+ if (seen_slash)
+ seen_slash = 0;
+ else if (*copy == '\\')
+ seen_slash = 1;
+ else if (*copy == '"')
+ seen_quote = !seen_quote;
}
len = copy - input_line_pointer + 1;
new_i->line = line;
new_i->file = file_info (file);
new_i->next = (list_info_type *) NULL;
- new_i->message = (char *) NULL;
+ new_i->messages = NULL;
+ new_i->last_message = NULL;
new_i->edict = EDICT_NONE;
new_i->hll_file = (file_info_type *) NULL;
new_i->hll_line = 0;
unsigned int octet_in_word = 0;
char *src = data_buffer;
int cur;
+ struct list_message *msg;
/* Print the stuff on the first line. */
listing_page (list);
emit_line (list, "\t%s\n", string ? string : "");
- if (list->message)
- emit_line (list, "**** %s\n", list->message);
+ for (msg = list->messages; msg; msg = msg->next)
+ emit_line (list, "**** %s\n", msg->message);
for (lines = 0;
lines < (unsigned int) listing_lhs_cont_lines
static int
debugging_pseudo (list_info_type *list, const char *line)
{
+#ifdef OBJ_ELF
static int in_debug;
int was_debug;
+#endif
if (list->debugging)
{
+#ifdef OBJ_ELF
in_debug = 1;
+#endif
return 1;
}
-
+#ifdef OBJ_ELF
was_debug = in_debug;
in_debug = 0;
+#endif
while (ISSPACE (*line))
line++;
{
list_info_type *list = head;
file_info_type *current_hll_file = (file_info_type *) NULL;
- char *message;
char *buffer;
char *p;
int show_listing = 1;
{
/* Scan down the list and print all the stuff which can be done
with this line (or lines). */
- message = 0;
-
if (list->hll_file)
current_hll_file = list->hll_file;