summaryrefslogtreecommitdiffstats
path: root/ldapaddressbook/abookdel.c
diff options
context:
space:
mode:
authorSam Varshavchik2013-08-19 16:39:41 -0400
committerSam Varshavchik2013-08-25 14:43:51 -0400
commit9c45d9ad13fdf439d44d7443ae75da15ea0223ed (patch)
tree7a81a04cb51efb078ee350859a64be2ebc6b8813 /ldapaddressbook/abookdel.c
parenta9520698b770168d1f33d6301463bb70a19655ec (diff)
downloadcourier-libs-9c45d9ad13fdf439d44d7443ae75da15ea0223ed.tar.bz2
Initial checkin
Imported from subversion report, converted to git. Updated all paths in scripts and makefiles, reflecting the new directory hierarchy.
Diffstat (limited to 'ldapaddressbook/abookdel.c')
-rw-r--r--ldapaddressbook/abookdel.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/ldapaddressbook/abookdel.c b/ldapaddressbook/abookdel.c
new file mode 100644
index 0000000..a5da9d0
--- /dev/null
+++ b/ldapaddressbook/abookdel.c
@@ -0,0 +1,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);
+}