Back to index

courier  0.68.2
Functions
abookdel.c File Reference
#include "config.h"
#include "ldapaddressbook.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>

Go to the source code of this file.

Functions

int ldapabook_del (const char *filename, const char *tempname, const char *delname)

Function Documentation

int ldapabook_del ( const char *  filename,
const char *  tempname,
const char *  delname 
)

Definition at line 15 of file abookdel.c.

{
/* This is cheating, but we won't really have many abooks, come on... */
struct ldapabook *a=ldapabook_read(filename), *b;

FILE   *fp;

       if (!a)       return (0);

       if ((fp=fopen(tempname, "w")) == 0)
       {
              ldapabook_free(a);
              return (-1);
       }

       for (b=a; b; b=b->next)
       {
              if (strcmp(b->name, delname) == 0) continue;

              ldapabook_writerec(b, fp);
       }
       ldapabook_free(a);

       if (fflush(fp) || fclose(fp))
       {
              fclose(fp);
              unlink(tempname);
              return (-1);
       }

       if (rename(tempname, filename))
       {
              unlink(tempname);
              return (-1);
       }

       return (0);
}

Here is the call graph for this function:

Here is the caller graph for this function: