Back to index

courier  0.68.2
Functions
pcpparseymd.c File Reference
#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <signal.h>
#include <fcntl.h>
#include <unistd.h>
#include <time.h>
#include <sys/stat.h>
#include "pcp.h"

Go to the source code of this file.

Functions

static time_t sod (struct tm *tmptr, unsigned y, unsigned m, unsigned d)
int pcp_parse_ymd (unsigned y, unsigned m, unsigned d, time_t *s, time_t *e)

Function Documentation

int pcp_parse_ymd ( unsigned  y,
unsigned  m,
unsigned  d,
time_t *  s,
time_t *  e 
)

Definition at line 61 of file pcpparseymd.c.

{
       time_t tt;
       struct tm *tmptr;

       time(&tt);

       tmptr=localtime(&tt);

       if (!tmptr)
              return (-1);

       if ((tt=sod(tmptr, y, m, d)) == 0)
              return (-1);

       *s=tt;

       tt += 36 * 60 * 60;

       tmptr=localtime(&tt);

       if (!tmptr)
              return (-1);

       if ((tt=sod(tmptr, tmptr->tm_year + 1900, tmptr->tm_mon+1,
                  tmptr->tm_mday)) == 0)
              return (-1);

       *e=tt;
       return (0);
}

Here is the call graph for this function:

Here is the caller graph for this function:

static time_t sod ( struct tm *  tmptr,
unsigned  y,
unsigned  m,
unsigned  d 
) [static]

Definition at line 23 of file pcpparseymd.c.

{
       struct tm mytm;
       time_t tt;

       /* Ok, first try */

       mytm= *tmptr;
       mytm.tm_year=y-1900;
       mytm.tm_mon=m-1;
       mytm.tm_mday=d;
       mytm.tm_hour=0;
       mytm.tm_min=0;
       mytm.tm_sec=0;

       tt=mktime(&mytm);

       if (tt == (time_t)-1 ||
           (tmptr=localtime(&tt)) == NULL)
              return (0);

       /* Do it one more time, due to timezone changes. */

       mytm= *tmptr;
       mytm.tm_year=y-1900;
       mytm.tm_mon=m-1;
       mytm.tm_mday=d;
       mytm.tm_hour=0;
       mytm.tm_min=0;
       mytm.tm_sec=0;

       tt=mktime(&mytm);

       if (tt == (time_t)-1)
              return (0);
       return (tt);
}

Here is the caller graph for this function: