X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gas%2Finput-file.c;h=8b9830f07386b0861008fee2ab50af9de9e59e77;hb=08dc996fedde9143cda25720961684087b133640;hp=709c972c9af029d027595bf0b6f944e5a04ec6d0;hpb=47e8018d71f9ebc3c2e40af48ace59ac23d7d6db;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/input-file.c b/gas/input-file.c index 709c972c9a..8b9830f073 100644 --- a/gas/input-file.c +++ b/gas/input-file.c @@ -1,7 +1,5 @@ /* input_file.c - Deal with Input Files - - Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1999, 2000, 2001, - 2002, 2003, 2005, 2006, 2007, 2009 - Free Software Foundation, Inc. + Copyright (C) 1987-2016 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -29,8 +27,6 @@ #include "input-file.h" #include "safe-ctype.h" -static int input_file_get (char *, int); - /* This variable is non-zero if the file currently being read should be preprocessed by app. It is zero if the file can be read straight in. */ int preprocess = 0; @@ -46,13 +42,13 @@ int preprocess = 0; /* We use static data: the data area is not sharable. */ static FILE *f_in; -static char *file_name; +static const char *file_name; /* Struct for saving the state of this module for file includes. */ struct saved_file { FILE * f_in; - char * file_name; + const char * file_name; int preprocess; char * app_save; }; @@ -71,7 +67,7 @@ input_file_end (void) } /* Return BUFFER_SIZE. */ -unsigned int +size_t input_file_buffer_size (void) { return (BUFFER_SIZE); @@ -83,9 +79,9 @@ input_file_buffer_size (void) char * input_file_push (void) { - register struct saved_file *saved; + struct saved_file *saved; - saved = (struct saved_file *) xmalloc (sizeof *saved); + saved = XNEW (struct saved_file); saved->f_in = f_in; saved->file_name = file_name; @@ -102,7 +98,7 @@ input_file_push (void) void input_file_pop (char *arg) { - register struct saved_file *saved = (struct saved_file *) arg; + struct saved_file *saved = (struct saved_file *) arg; input_file_end (); /* Close out old file. */ @@ -115,8 +111,10 @@ input_file_pop (char *arg) free (arg); } +/* Open the specified file, "" means stdin. Filename must not be null. */ + void -input_file_open (char *filename, /* "" means use stdin. Must not be 0. */ +input_file_open (const char *filename, int pre) { int c; @@ -213,20 +211,17 @@ input_file_close (void) /* This function is passed to do_scrub_chars. */ -static int -input_file_get (char *buf, int buflen) +static size_t +input_file_get (char *buf, size_t buflen) { - int size; + size_t size; if (feof (f_in)) return 0; - + size = fread (buf, sizeof (char), buflen, f_in); - if (size < 0) - { - as_bad (_("can't read from %s: %s"), file_name, xstrerror (errno)); - size = 0; - } + if (ferror (f_in)) + as_bad (_("can't read from %s: %s"), file_name, xstrerror (errno)); return size; } @@ -236,7 +231,7 @@ char * input_file_give_next_buffer (char *where /* Where to place 1st character of new buffer. */) { char *return_value; /* -> Last char of what we read, + 1. */ - int size; + size_t size; if (f_in == (FILE *) 0) return 0; @@ -247,18 +242,8 @@ input_file_give_next_buffer (char *where /* Where to place 1st character of new if (preprocess) size = do_scrub_chars (input_file_get, where, BUFFER_SIZE); else - { - if (feof (f_in)) - size = 0; - else - size = fread (where, sizeof (char), BUFFER_SIZE, f_in); - } + size = input_file_get (where, BUFFER_SIZE); - if (size < 0) - { - as_bad (_("can't read from %s: %s"), file_name, xstrerror (errno)); - size = 0; - } if (size) return_value = where + size; else