opensubscriber
   Find in this group all groups
 
Unknown more information…

b : bug-make@gnu.org 24 January 2012 • 1:52AM -0500

RE: 'withfile' function implementation
by Lawrence Ibarria

REPLY TO AUTHOR
 
REPLY TO GROUP




I do like this suggestion, feels quite clean!

  -- Lawrence


> -----Original Message-----
> From: Paul Smith [mailto:psmith@gnu....]
> Sent: Monday, January 16, 2012 5:15 AM
> To: Lawrence Ibarria
> Cc: bug-make@gnu....; Tim Murphy (tnmurphy@gmai...)
> 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 <psmith@gnu....>          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


_______________________________________________
Bug-make mailing list
Bug-make@gnu....
https://lists.gnu.org/mailman/listinfo/bug-make

Bookmark with:

Delicious   Digg   reddit   Facebook   StumbleUpon

Related Messages

opensubscriber is not affiliated with the authors of this message nor responsible for its content.