blob: a5da9d0beb20f239c8779017ac73124655896ee3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
/*
** Copyright 2006, Double Precision Inc.
**
** See COPYING for distribution information.
*/
#include "config.h"
#include "ldapaddressbook.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
int ldapabook_del(const char *filename, const char *tempname,
const char *delname)
{
/* 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);
}
|