From: Michael Buesch Date: Sat, 17 Nov 2007 23:29:21 +0000 (+0100) Subject: asm: Fix the preprocessing script. X-Git-Tag: b43-fwcutter-013~83 X-Git-Url: https://jxself.org/git/?p=b43-tools.git;a=commitdiff_plain;h=900539d3af0679acea61145f0e64254518d7fce7 asm: Fix the preprocessing script. Allow stdin as input and properly pass the filename up to the assembler, so it appears in the error messages. (The filename is passed through CPPs special line markers) Signed-off-by: Michael Buesch --- diff --git a/assembler/args.c b/assembler/args.c index 52aa7c1..ffb90f4 100644 --- a/assembler/args.c +++ b/assembler/args.c @@ -110,7 +110,8 @@ int parse_args(int argc, char **argv) for (i = 3; i < argc; i++) { if ((res = cmp_arg(argv, &i, "--help", "-h", 0)) == ARG_MATCH) { - goto out_usage; + usage(argc, argv); + return 1; } else if ((res = cmp_arg(argv, &i, "--debug", "-d", 0)) == ARG_MATCH) { _debug++; } else { diff --git a/assembler/b43-asm b/assembler/b43-asm index ec6fa6e..f910a6b 100755 --- a/assembler/b43-asm +++ b/assembler/b43-asm @@ -1,27 +1,51 @@ -#!/bin/sh +#!/bin/bash +# +# b43-asm preprocessing frontend +# +# Copyright (c) 2007 Michael Buesch +# Licensed under the GNU/GPL version 2. +# -installed=0 -if [ -z "$B43_ASM" ]; then - if [ $installed -eq 0 ] && [ -x "./b43-asm.bin" ]; then - B43_ASM="./b43-asm.bin" - else - B43_ASM="b43-asm.bin" - fi +# The b43-asm backend binary +B43_ASM="b43-asm.bin" +# The C preprocessor binary +CPP="cpp" + + +# This variable is changed by the installer scripts. +installed=0 +if [ $installed -eq 0 ] && [ -x "./$B43_ASM" ]; then + B43_ASM="./$B43_ASM" fi -if [ -z "$CPP" ]; then - CPP="cpp" +# Probe the CPP binary +$CPP --help >/dev/null 2>&1 +if [ $? -ne 0 ]; then + echo "ERROR: Failed to execute the C preprocessor \"$CPP\"" + exit 1 +fi +# Probe the b43-asm binary +$B43_ASM a b --help >/dev/null 2>&1 +if [ $? -ne 0 ]; then + echo "ERROR: Failed to execute the b43-asm binary \"$B43_ASM\"" + exit 2 fi if [ $# -lt 2 ]; then $B43_ASM --help - exit 1 + exit 3 fi - infile="$1" shift outfile="$1" shift -cat "$infile" | $CPP -traditional-cpp | $B43_ASM "-" "$outfile" $@ +if [ "$infile" != "-" ]; then + if ! [ -r "$infile" ]; then + echo "ERROR: Can not read input file \"$infile\"" + exit 4 + fi +fi + +$CPP -traditional-cpp "$infile" | $B43_ASM "-" "$outfile" $@ diff --git a/assembler/main.c b/assembler/main.c index 34a057d..e90bac8 100644 --- a/assembler/main.c +++ b/assembler/main.c @@ -1106,8 +1106,12 @@ int main(int argc, char **argv) int err, res = 1; err = parse_args(argc, argv); - if (err) + if (err < 0) + goto out; + if (err > 0) { + res = 0; goto out; + } err = open_input_file(); if (err) goto out; diff --git a/assembler/scanner.l b/assembler/scanner.l index ab4821c..346cbe6 100644 --- a/assembler/scanner.l +++ b/assembler/scanner.l @@ -193,9 +193,6 @@ static void interpret_cppinfo(const char *str) min(sizeof(cur_lineinfo.file) - 1, (int)(found - str))); - if (strcmp(cur_lineinfo.file, "") == 0) - strcpy(cur_lineinfo.file, "Input File"); - return; error: fprintf(stderr, "Invalid CPP line directive: %s\n", orig);