[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: 'withfile' function implementation
From: |
Lawrence Ibarria |
Subject: |
RE: 'withfile' function implementation |
Date: |
Mon, 23 Jan 2012 09:52:02 -0800 |
I do like this suggestion, feels quite clean!
-- Lawrence
> -----Original Message-----
> From: Paul Smith [mailto:address@hidden
> Sent: Monday, January 16, 2012 5:15 AM
> To: Lawrence Ibarria
> Cc: address@hidden; Tim Murphy (address@hidden)
> Subject: Re: 'withfile' function implementation
>
> On Thu, 2011-12-15 at 15:13 -0800, Lawrence Ibarria wrote:
> > This is a rather simple path that implements a very simplified version
> > of what Tim suggested in his message of Sept 25th
> > (https://lists.gnu.org/archive/html/bug-make/2011-09/msg00044.html ).
> >
> > Paul, what do you think? I’d rather not try to do everything, just
> > focus on one thing. I am not sure how much safety checks play a role
> > inside make.
>
> I was looking at this (and https://savannah.gnu.org/bugs/index.php?35147)
>
> I'm still not in love with it. I have the following concerns:
>
> 1. I still think the "a", "w" mode thing is clunky.
> 2. Unclear what to do about newlines. The code doesn't add any but
> getting a newline into a make variable is tricky.
> 3. The suggested patch is really only about 20% of the work: we
> also need documentation, regression tests, etc. Although I
> guess doing this before the interface is locked down makes extra
> work (but not for me! :-)).
>
> Here's an alternative suggestion, modeled more on the shell's file
> redirection rather than the C runtime's stdio:
>
> One new function, named "file" (?). The function takes one or two
> arguments.
>
> The first argument is a filename, preceded by a token that specifies how
> the file is to be treated, with optional whitespace between them. The
> tokens are:
>
> '>' : open the file with mode "w" (truncate) and write the second
> argument to the file, plus a newline. If no second argument is given,
> nothing is written (the file will be empty). The expansion of the
> function is the empty string.
>
> '>>' : Open the file with mode "a" (append) and write the second
> argument to the file, plus a newline. If no second argument is given,
> nothing is written (if the file didn't exist it will be created but
> empty; if the file did exist it will be unchanged). The expansion of
> the function is the empty string.
>
> '<' : Open the file with mode "r" and expand to the full contents of the
> file. No conversion is done (the resulting text may have embedded
> newlines). Use $(strip ...) to remove them if desired.
>
>
> So, some examples might be:
>
> $(file >t.out,this is the first line)
> $(file >>t.out,this is the second line)
> $(file >> t.out,this is the third line)
> FILE := $(file < t.out)
>
> Do people think this would be useable?
>
> I thought about defining three functions ">", ">>", and "<", rather than
> "file", but this would require a space between the "function name" and
> the file name; if you forgot the space (as you can do in the shell) then
> make would be looking to expand a variable/function named ">t.out"
> rather than the function ">" with the first argument of "t.out". I just
> wonder if it would create more issues than it's worth to be cute like
> that. Still, it's an option.
>
> --
> -------------------------------------------------------------------------------
> Paul D. Smith <address@hidden> Find some GNU make tips at:
> http://www.gnu.org http://make.mad-scientist.net
> "Please remain calm...I may be mad, but I am a professional." --Mad Scientist
- Re: 'withfile' function implementation, Paul Smith, 2012/01/16
- Re: 'withfile' function implementation, Tim Murphy, 2012/01/16
- Re: 'withfile' function implementation, David Boyce, 2012/01/16
- RE: 'withfile' function implementation,
Lawrence Ibarria <=
- RE: 'withfile' function implementation, Paul Smith, 2012/01/29
- Re: 'withfile' function implementation, David Boyce, 2012/01/30
- Re: 'withfile' function implementation, Paul Smith, 2012/01/30
- Re: 'withfile' function implementation, David Boyce, 2012/01/30
- Re: 'withfile' function implementation, Paul Smith, 2012/01/31
- Re: 'withfile' function implementation, David Boyce, 2012/01/31