-/* $Id: errwarn.c,v 1.1 2001/05/20 08:28:57 peter Exp $
+/* $Id: errwarn.c,v 1.2 2001/05/21 18:31:43 peter Exp $
* Error and warning reporting and related functions.
*
* Copyright (C) 2001 Peter Johnson
exit(EXIT_FAILURE);
}
+/* replace %1, %2, etc in src with %c, %s, etc. in argtypes. */
+/* currently limits maximum number of args to 9 (%1-%9). */
static char *process_argtypes(char *src, char *argtypes)
{
char *dest;
+ char *argtype[9];
+ int at_num;
+ char *destp, *srcp, *argtypep;
if(argtypes) {
dest = malloc(strlen(src) + strlen(argtypes));
if(!dest)
Fatal(FATAL_NOMEM);
- /* TODO: Implement */
+ /* split argtypes by % */
+ at_num = 0;
+ while((argtypes = strchr(argtypes, '%')) && at_num < 9)
+ argtype[at_num++] = ++argtypes;
+ /* search through src for %, copying as we go */
+ destp = dest;
+ srcp = src;
+ while(*srcp != '\0') {
+ *(destp++) = *srcp;
+ if(*(srcp++) == '%') {
+ if(isdigit(*srcp)) {
+ /* %1, %2, etc */
+ argtypep = argtype[*srcp-'1'];
+ while((*argtypep != '%') && (*argtypep != '\0'))
+ *(destp++) = *(argtypep++);
+ } else
+ *(destp++) = *srcp;
+ srcp++;
+ }
+ }
} else {
dest = strdup(src);
if(!dest)
-/* $Id: bison.y.in,v 1.3 2001/05/20 08:35:18 peter Exp $
+/* $Id: bison.y.in,v 1.4 2001/05/21 18:31:42 peter Exp $
* Main bison parser
*
* Copyright (C) 2001 Peter Johnson
printf("Directive: Name='%s' Value='%s'\n", $2, $3);
}
| '[' DIRECTIVE_NAME DIRECTIVE_VAL error {
- /*Error(ERR_MISSING, "%c", ']');*/
- fprintf(stderr, "missing ']'\n");
+ Error(ERR_MISSING, "%c", ']');
}
| '[' DIRECTIVE_NAME error {
Error(ERR_MISSING_ARG, (char *)NULL, $2);
-/* $Id: nasm-bison.y,v 1.3 2001/05/20 08:35:18 peter Exp $
+/* $Id: nasm-bison.y,v 1.4 2001/05/21 18:31:42 peter Exp $
* Main bison parser
*
* Copyright (C) 2001 Peter Johnson
printf("Directive: Name='%s' Value='%s'\n", $2, $3);
}
| '[' DIRECTIVE_NAME DIRECTIVE_VAL error {
- /*Error(ERR_MISSING, "%c", ']');*/
- fprintf(stderr, "missing ']'\n");
+ Error(ERR_MISSING, "%c", ']');
}
| '[' DIRECTIVE_NAME error {
Error(ERR_MISSING_ARG, (char *)NULL, $2);
-/* $Id: bison.y,v 1.3 2001/05/20 08:35:18 peter Exp $
+/* $Id: bison.y,v 1.4 2001/05/21 18:31:42 peter Exp $
* Main bison parser
*
* Copyright (C) 2001 Peter Johnson
printf("Directive: Name='%s' Value='%s'\n", $2, $3);
}
| '[' DIRECTIVE_NAME DIRECTIVE_VAL error {
- /*Error(ERR_MISSING, "%c", ']');*/
- fprintf(stderr, "missing ']'\n");
+ Error(ERR_MISSING, "%c", ']');
}
| '[' DIRECTIVE_NAME error {
Error(ERR_MISSING_ARG, (char *)NULL, $2);
-/* $Id: bison.y.in,v 1.3 2001/05/20 08:35:18 peter Exp $
+/* $Id: bison.y.in,v 1.4 2001/05/21 18:31:42 peter Exp $
* Main bison parser
*
* Copyright (C) 2001 Peter Johnson
printf("Directive: Name='%s' Value='%s'\n", $2, $3);
}
| '[' DIRECTIVE_NAME DIRECTIVE_VAL error {
- /*Error(ERR_MISSING, "%c", ']');*/
- fprintf(stderr, "missing ']'\n");
+ Error(ERR_MISSING, "%c", ']');
}
| '[' DIRECTIVE_NAME error {
Error(ERR_MISSING_ARG, (char *)NULL, $2);
-/* $Id: errwarn.c,v 1.1 2001/05/20 08:28:57 peter Exp $
+/* $Id: errwarn.c,v 1.2 2001/05/21 18:31:43 peter Exp $
* Error and warning reporting and related functions.
*
* Copyright (C) 2001 Peter Johnson
exit(EXIT_FAILURE);
}
+/* replace %1, %2, etc in src with %c, %s, etc. in argtypes. */
+/* currently limits maximum number of args to 9 (%1-%9). */
static char *process_argtypes(char *src, char *argtypes)
{
char *dest;
+ char *argtype[9];
+ int at_num;
+ char *destp, *srcp, *argtypep;
if(argtypes) {
dest = malloc(strlen(src) + strlen(argtypes));
if(!dest)
Fatal(FATAL_NOMEM);
- /* TODO: Implement */
+ /* split argtypes by % */
+ at_num = 0;
+ while((argtypes = strchr(argtypes, '%')) && at_num < 9)
+ argtype[at_num++] = ++argtypes;
+ /* search through src for %, copying as we go */
+ destp = dest;
+ srcp = src;
+ while(*srcp != '\0') {
+ *(destp++) = *srcp;
+ if(*(srcp++) == '%') {
+ if(isdigit(*srcp)) {
+ /* %1, %2, etc */
+ argtypep = argtype[*srcp-'1'];
+ while((*argtypep != '%') && (*argtypep != '\0'))
+ *(destp++) = *(argtypep++);
+ } else
+ *(destp++) = *srcp;
+ srcp++;
+ }
+ }
} else {
dest = strdup(src);
if(!dest)
-/* $Id: bison.y.in,v 1.3 2001/05/20 08:35:18 peter Exp $
+/* $Id: bison.y.in,v 1.4 2001/05/21 18:31:42 peter Exp $
* Main bison parser
*
* Copyright (C) 2001 Peter Johnson
printf("Directive: Name='%s' Value='%s'\n", $2, $3);
}
| '[' DIRECTIVE_NAME DIRECTIVE_VAL error {
- /*Error(ERR_MISSING, "%c", ']');*/
- fprintf(stderr, "missing ']'\n");
+ Error(ERR_MISSING, "%c", ']');
}
| '[' DIRECTIVE_NAME error {
Error(ERR_MISSING_ARG, (char *)NULL, $2);
-/* $Id: nasm-bison.y,v 1.3 2001/05/20 08:35:18 peter Exp $
+/* $Id: nasm-bison.y,v 1.4 2001/05/21 18:31:42 peter Exp $
* Main bison parser
*
* Copyright (C) 2001 Peter Johnson
printf("Directive: Name='%s' Value='%s'\n", $2, $3);
}
| '[' DIRECTIVE_NAME DIRECTIVE_VAL error {
- /*Error(ERR_MISSING, "%c", ']');*/
- fprintf(stderr, "missing ']'\n");
+ Error(ERR_MISSING, "%c", ']');
}
| '[' DIRECTIVE_NAME error {
Error(ERR_MISSING_ARG, (char *)NULL, $2);