Back to index

courier  0.68.2
Functions | Variables
pcpdtimer.c File Reference
#include "config.h"
#include "pcpdtimer.h"
#include <string.h>
#include <time.h>

Go to the source code of this file.

Functions

void pcpdtimer_install (struct pcpdtimer *p, time_t nseconds)
void pcpdtimer_triggered (struct pcpdtimer *p)

Variables

struct pcpdtimerfirst_timer = NULL
struct pcpdtimerlast_timer = NULL

Function Documentation

void pcpdtimer_install ( struct pcpdtimer p,
time_t  nseconds 
)

Definition at line 16 of file pcpdtimer.c.

{
       struct pcpdtimer *q;

       if (p->alarm)
       {
              if (p->prev)
                     p->prev->next=p->next;
              else
                     first_timer=p->next;

              if (p->next)
                     p->next->prev=p->prev;
              else
                     last_timer=p->prev;
       }

       time(&p->alarm);
       p->alarm += nseconds;

       for (q=first_timer; q; q=q->next)
       {
              if (q->alarm > p->alarm)
                     break;
       }

       if (!q)
       {
              if ((p->prev=last_timer) != 0)
                     p->prev->next=p;
              else
                     first_timer=p;
              p->next=0;
              last_timer=p;
       }
       else
       {
              if ((p->prev=q->prev) != 0)
                     p->prev->next=p;
              else
                     first_timer=p;

              p->next=q;
              q->prev=p;
       }
}

Here is the caller graph for this function:

void pcpdtimer_triggered ( struct pcpdtimer p)

Definition at line 63 of file pcpdtimer.c.

{
       if (!p->alarm)
              return;

       if (p->prev)
              p->prev->next=p->next;
       else
              first_timer=p->next;

       if (p->next)
              p->next->prev=p->prev;
       else
              last_timer=p->prev;

       p->alarm=0;
}

Here is the caller graph for this function:


Variable Documentation

Definition at line 14 of file pcpdtimer.c.

Definition at line 14 of file pcpdtimer.c.