linux-c-programming.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: HIToC <hitoc_mail@yahoo.it>
To: Steve Graegert <graegerts@gmail.com>
Cc: linux-c-programming@vger.kernel.org
Subject: Re: getdate(3) - format date
Date: Fri, 22 Sep 2006 22:40:16 +0200	[thread overview]
Message-ID: <200609222239.43219.hitoc_mail@yahoo.it> (raw)
In-Reply-To: <6a00c8d50609220028n76b35f37v9603746100804c44@mail.gmail.com>

Yes Steve!
The problem was the absence of both DATEMSK and the template file becouse
the getdate_err was setted to 1.
Now I have tried your script but it does not exports the DATEMSK to the
environment: if next the execution of the script I type
echo $DATEMSK
it prints nothing.
If I execute the C program from the script it runs but the getdate_err said that there
is no line in the template that matches the input [error 7].
I believe that the getdate solution is very unportable.
Thanks anyway!

On Friday 22 September 2006 09:28, Steve Graegert wrote:
> On 9/21/06, HIToC <hitoc_mail@yahoo.it> wrote:
> > Hello list,
> > I am using the getdate(3) function to convert a string date in its tm
> > structure, but I have tried several formats of string-dates and it always
> > returns a NULL pointer.
> >
> > All this dates I suppose invalid for the getdate(3):
> > Fri, 19 Nov 82 16:14:55 EST
> > Wed, 20 Sep 2006 15:03:53 GMT
> > Thu, 21 Sep 2006 08:59:25 +0400
> > 19 Sep 2006 15:52:25 -0700
> > 19 Sep 2006 15:52:25 EST
>
> Sure, they are valid, but getdate(3) requires a template file to be
> present, with each line in the file representing a date format to
> parse.  From getdate(3):
>
>      User-supplied templates are used to parse and interpret  the
>      input  string.  The templates are  text files created by the
>      user and identified via the  environment  variable  DATEMSK.
>      Each  line  in  the  template  represents an acceptable date
>      and/or time specification using   conversion  specifications
>      similar  to  those  used  by  strftime(3) and strptime(3).
>
> Consider the following example which illustrates the usage of getdate(3)
>
> --- BEGIN script ---
>
> #!/bin/sh
> #
> # create template file
> #
> cat >.date <<EOF
> %m
> %A %B %d, %Y, %H:%M:%S
> %A
> %B
> %m/%d/%y %I %p
> %d, %m, %Y %H:%M
> at %A the %dst of %B in %Y
> run job at %I %p, %B %dnd
> &A den %d. %B %Y %H.%M Uhr
> EOF
> DATEMSK=.date
> export DATEMSK
>
> --- END script ---
>
> --- BEGIN C Source ---
>
> #include <stdio.h>
> #include <time.h>
>
> #define BUF	512
>
> void daterr(int err) {
> 	switch(err) {
>         case 1: printf("The DATEMSK environment variable is null or
> undefined.\n");
>             break;
>
>         case 2: printf("The template file cannot be opened for
> reading.\n"); break;
>
>         case 3: printf("Failed to get file status information.\n");
>             break;
>
>         case 4: printf("The template file is not a regular file.\n");
>             break;
>
>         case 5: printf("An error is encountered while reading the
> template file.\n");
>             break;
>
>         case 6: printf("Memory allocation failed (not enough memory
> available.\n");
>             break;
>
>         case 7: printf("There is no line in the template that matches
> the input.\n");
>             break;
>
>         case 8: printf("Invalid input specification\n");
>             break;
>
>         default:	printf("unknown\n");
> 	}
>
> 	exit(1);
> }
>
> int main(void) {
> 	struct tm *tm;
> 	char buf[BUF];
>
> 	tm = getdate("09/22/06");
>
> 	if (getdate_err != 0)
>         	daterr(getdate_err);
>
> 	strftime(buf,BUF,"%a %Y %H:%M:%S\n",tm);
> 	printf("%s",buf);
>
> 	return 1;
> }
>
> --- END C Source ---
>
> 	\Steve

-- 
With regards,


					HIToC
					hitoc_mail@yahoo.it

  reply	other threads:[~2006-09-22 20:40 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-09-21 20:36 getdate(3) - format date HIToC
2006-09-22  7:28 ` Steve Graegert
2006-09-22 20:40   ` HIToC [this message]
2006-09-25  8:53     ` Henry Margies
2006-09-26 17:27       ` HIToC
2006-09-28  7:38         ` Henry Margies

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200609222239.43219.hitoc_mail@yahoo.it \
    --to=hitoc_mail@yahoo.it \
    --cc=graegerts@gmail.com \
    --cc=linux-c-programming@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).